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,81 @@
{
lib,
fetchFromGitLab,
gettext,
gtk3,
python3Packages,
gdk-pixbuf,
libnotify,
gst_all_1,
libsecret,
wrapGAppsHook3,
gsettings-desktop-schemas,
gnome-online-accounts,
glib,
gobject-introspection,
folks,
bash,
}:
python3Packages.buildPythonApplication rec {
pname = "bubblemail";
version = "1.9";
format = "pyproject";
src = fetchFromGitLab {
domain = "framagit.org";
owner = "razer";
repo = "bubblemail";
rev = "v${version}";
sha256 = "sha256-eXEFBLo7CbLRlnI2nr7qWAdLUKe6PLQJ78Ho8MP9ShY=";
};
buildInputs = [
gtk3
gdk-pixbuf
glib
libnotify
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
gst_all_1.gst-plugins-bad
libsecret
gnome-online-accounts
folks
bash
];
nativeBuildInputs = [
gettext
wrapGAppsHook3
python3Packages.pillow
# For setup-hook
gobject-introspection
];
build-system = with python3Packages; [
setuptools
];
propagatedBuildInputs = with python3Packages; [
gsettings-desktop-schemas
pygobject3
dbus-python
pyxdg
];
# See https://nixos.org/nixpkgs/manual/#ssec-gnome-common-issues-double-wrapped
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
meta = with lib; {
description = "Extensible mail notification service";
homepage = "http://bubblemail.free.fr/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ doronbehar ];
};
}

View File

@@ -0,0 +1,62 @@
{
lib,
stdenv,
fetchFromGitHub,
docbook_xsl,
libxslt,
meson,
ninja,
pkg-config,
bash-completion,
libcap,
libselinux,
}:
stdenv.mkDerivation rec {
pname = "bubblewrap";
version = "0.11.0";
src = fetchFromGitHub {
owner = "containers";
repo = "bubblewrap";
rev = "v${version}";
hash = "sha256-8IDMLQPeO576N1lizVudXUmTV6hNOiowjzRpEWBsZ+U=";
};
outputs = [
"out"
"dev"
];
postPatch = ''
substituteInPlace tests/libtest.sh \
--replace "/var/tmp" "$TMPDIR"
'';
nativeBuildInputs = [
docbook_xsl
libxslt
meson
ninja
pkg-config
];
buildInputs = [
bash-completion
libcap
libselinux
];
# incompatible with Nix sandbox
doCheck = false;
meta = with lib; {
changelog = "https://github.com/containers/bubblewrap/releases/tag/${src.rev}";
description = "Unprivileged sandboxing tool";
homepage = "https://github.com/containers/bubblewrap";
license = licenses.lgpl2Plus;
maintainers = with maintainers; [ dotlambda ];
platforms = platforms.linux;
mainProgram = "bwrap";
};
}

View File

@@ -0,0 +1,21 @@
{
"x86_64-linux": {
"buck2": "sha256-gVOho7p25okvAV8OqXppdtwOOEzqH7VWcJBT4l5CT2U=",
"rust-project": "sha256-HKctvCiXyGFzfHfB3Qj6qR2p46i5vaaZgPg2J827ou4="
},
"x86_64-darwin": {
"buck2": "sha256-wHk/tJJbupMsrcmXXNVXurfLY2TOSssMnuTZ7LNjASY=",
"rust-project": "sha256-ePawMIfltPRK3mJJxI1BvGs6b2vIcgWzW2XTJykUsdI="
},
"aarch64-linux": {
"buck2": "sha256-Gn/Q2P0Fs93SbOawhzv8Z9DgbrIUlQ+9E3PyCNsV1pk=",
"rust-project": "sha256-Pm5lEIu0hzI5BuA/LuTKjBP8S63jiz1oSB0g9tSETGU="
},
"aarch64-darwin": {
"buck2": "sha256-XtGs7g64s76AYhpFDbqSuSlblRauxJM0PaAk1MNNgxA=",
"rust-project": "sha256-CkyLLv41iJTKHVB0e355ZO2MV7NzQeiF1gtWEGF5oAY="
},
"version": "2025-08-15",
"preludeGit": "892cb85f5fc3258c7e4f89a836821ec4b8c7ee44",
"preludeFod": "sha256-cyuOMi8x8q9gd6p1obnYYDVPxyONZ+y41AFXvSbUjC0="
}

View File

@@ -0,0 +1,159 @@
{
lib,
stdenv,
buildPackages,
fetchurl,
installShellFiles,
versionCheckHook,
autoPatchelfHook,
zstd,
}:
# NOTE (aseipp): buck2 uses a precompiled binary build for good reason — the
# upstream codebase extensively uses unstable `rustc` nightly features, and as a
# result can't be built upstream in any sane manner. it is only ever tested and
# integrated against a single version of the compiler, which produces all usable
# binaries. you shouldn't try to workaround this or get clever and think you can
# patch it to work; just accept it for now. it is extremely unlikely buck2 will
# build with a stable compiler anytime soon; see related upstream issues:
#
# - NixOS/nixpkgs#226677
# - NixOS/nixpkgs#232471
# - facebook/buck2#265
# - facebook/buck2#322
#
# worth noting: it *is* possible to build buck2 from source using
# buildRustPackage, and it works fine, but only if you are using flakes and can
# import `rust-overlay` from somewhere else to vendor your compiler. See
# nixos/nixpkgs#226677 for more information about that.
# NOTE (aseipp): this expression is mostly automated, and you are STRONGLY
# RECOMMENDED to use to nix-update for updating this expression when new
# releases come out, which runs the sibling `update.sh` script.
#
# from the root of the nixpkgs git repository, run:
#
# nix-shell maintainers/scripts/update.nix \
# --argstr commit true \
# --argstr package buck2
let
# build hashes, which correspond to the hashes of the precompiled binaries
# procued by GitHub Actions. this also includes the hash for a download of a
# compatible buck2-prelude
buildHashes = builtins.fromJSON (builtins.readFile ./hashes.json);
archHashes = buildHashes.${stdenv.hostPlatform.system};
# map our platform name to the rust toolchain suffix
# NOTE (aseipp): must be synchronized with update.nu!
platform-suffix =
{
x86_64-darwin = "x86_64-apple-darwin";
aarch64-darwin = "aarch64-apple-darwin";
x86_64-linux = "x86_64-unknown-linux-gnu";
aarch64-linux = "aarch64-unknown-linux-gnu";
}
.${stdenv.hostPlatform.system};
in
stdenv.mkDerivation (finalAttrs: {
pname = "buck2";
version = "unstable-${buildHashes.version}"; # TODO (aseipp): kill 'unstable' once a non-prerelease is made
srcs = [
# the platform-specific binary — which is also
# zstd-compressed
(fetchurl {
url = "https://github.com/facebook/buck2/releases/download/${lib.removePrefix "unstable-" finalAttrs.version}/buck2-${platform-suffix}.zst";
hash = archHashes.buck2;
})
# rust-project, which is used to provide IDE integration Buck2 Rust projects,
# is part of the official distribution
(fetchurl {
url = "https://github.com/facebook/buck2/releases/download/${lib.removePrefix "unstable-" finalAttrs.version}/rust-project-${platform-suffix}.zst";
hash = archHashes.rust-project;
})
];
unpackCmd = "unzstd $curSrc -o $(stripHash $curSrc)";
sourceRoot = ".";
strictDeps = true;
nativeBuildInputs = [
installShellFiles
zstd
]
++ lib.optionals stdenv.hostPlatform.isLinux [
autoPatchelfHook
];
buildInputs = [
#225963
stdenv.cc.cc.libgcc or null
];
installPhase = ''
runHook preInstall
install -D buck2* "$out/bin/buck2"
install -D rust-project* "$out/bin/rust-project"
runHook postInstall
'';
# Have to put this at a weird stage because if it is put in
# postInstall, preFixup, or postFixup, autoPatchelf wouldn't
# have run yet
preInstallCheck =
let
emulator = stdenv.hostPlatform.emulator buildPackages;
in
lib.optionalString (stdenv.hostPlatform.emulatorAvailable buildPackages) ''
installShellCompletion --cmd buck2 \
--bash <(${emulator} $out/bin/buck2 completion bash ) \
--fish <(${emulator} $out/bin/buck2 completion fish ) \
--zsh <(${emulator} $out/bin/buck2 completion zsh )
'';
doInstallCheck = stdenv.buildPlatform.canExecute stdenv.hostPlatform;
nativeInstallCheckInputs = [ versionCheckHook ];
# TODO: When --version returns a real output, remove this.
# Currently it just spits out a hash
preVersionCheck = "version=buck2";
passthru = {
# compatible version of buck2 prelude; this is exported via passthru.prelude
# for downstream consumers to use when they need to automate any kind of
# tooling
prelude = fetchurl {
url = "https://github.com/facebook/buck2-prelude/archive/${buildHashes.preludeGit}.tar.gz";
hash = buildHashes.preludeFod;
};
updateScript = ./update.nu;
};
meta = {
description = "Fast, hermetic, multi-language build system";
homepage = "https://buck2.build";
changelog = "https://github.com/facebook/buck2/releases/tag/${lib.removePrefix "unstable-" finalAttrs.version}";
license = with lib.licenses; [
asl20 # or
mit
];
mainProgram = "buck2";
sourceProvenance = [ lib.sourceTypes.binaryNativeCode ];
maintainers = with lib.maintainers; [
thoughtpolice
lf-
_9999years
];
platforms = [
"x86_64-linux"
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
};
})

49
pkgs/by-name/bu/buck2/update.nu Executable file
View File

@@ -0,0 +1,49 @@
#!/usr/bin/env nix-shell
#! nix-shell -I ./.
#! nix-shell -i nu
#! nix-shell -p nushell nix
const ARCHES = [
{ name: "x86_64-linux", target: "x86_64-unknown-linux-gnu" },
{ name: "x86_64-darwin", target: "x86_64-apple-darwin" },
{ name: "aarch64-linux", target: "aarch64-unknown-linux-gnu" },
{ name: "aarch64-darwin", target: "aarch64-apple-darwin" },
];
const MANIFEST = "pkgs/by-name/bu/buck2/hashes.json"
def main [] {
let version = http get "https://api.github.com/repos/facebook/buck2/releases"
| sort-by -r created_at
| where prerelease == true and name != "latest"
| first
| get name
let preludeHash = http get $"https://github.com/facebook/buck2/releases/download/($version)/prelude_hash" | decode | str trim
let preludeFod = run-external "nix" "--extra-experimental-features" "nix-command" "store" "prefetch-file" "--json" $"https://github.com/facebook/buck2-prelude/archive/($preludeHash).tar.gz" | from json | get hash
print $"Newest version: ($version)"
print $"Newest prelude hash: ($preludeHash)"
let hashes = $ARCHES | par-each {
|arch|
{
$arch.name: {
"buck2": (run-external "nix" "--extra-experimental-features" "nix-command" "store" "prefetch-file" "--json" $"https://github.com/facebook/buck2/releases/download/($version)/buck2-($arch.target).zst" | from json | get hash),
"rust-project": (run-external "nix" "--extra-experimental-features" "nix-command" "store" "prefetch-file" "--json" $"https://github.com/facebook/buck2/releases/download/($version)/rust-project-($arch.target).zst" | from json | get hash),
}
}
} | reduce { |val, accum| $accum | merge $val }
let new_manifest = $hashes
| insert "version" $version
| insert "preludeGit" $preludeHash
| insert "preludeFod" $preludeFod
$new_manifest
| to json
| append "\n"
| str join
| save -f $MANIFEST
}

View File

@@ -0,0 +1,63 @@
{
fetchurl,
appimageTools,
lib,
makeWrapper,
stdenv,
}:
let
inherit (stdenv.hostPlatform) system;
platform =
{
x86_64-linux = "amd64";
aarch64-linux = "arm64";
}
.${system};
# Get hash in sri format
# nix-prefetch-url <url> | xargs nix --extra-experimental-features nix-command hash convert --hash-algo sha256
hash =
{
x86_64-linux = "sha256-DK5+VT4+OCcJ4Bbv6GGs6R332GMsD1gNEmcz0iaJb1c=";
aarch64-linux = "sha256-Qu2YHGu0EPFaXjlUwJ7On8tOA9rqX/k8UnwADuRxoUk=";
}
.${system};
pname = "buckets";
version = "0.80.0";
src = fetchurl {
url = "https://github.com/buckets/application/releases/download/v${version}/Buckets-linux-latest-${platform}-${version}.AppImage";
inherit hash;
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: (appimageTools.defaultFhsEnvArgs.multiPkgs pkgs) ++ [ pkgs.libsodium ];
extraInstallCommands = ''
source "${makeWrapper}/nix-support/setup-hook"
wrapProgram $out/bin/buckets
install -m 444 -D ${appimageContents}/buckets.desktop -t $out/share/applications
substituteInPlace $out/share/applications/buckets.desktop \
--replace-fail 'Exec=AppRun' 'Exec=buckets'
for size in 16 32 48 64 128 256 512; do
install -m 444 -D ${appimageContents}/usr/share/icons/hicolor/''${size}x''${size}/apps/buckets.png \
$out/share/icons/hicolor/''${size}x''${size}/apps/buckets.png
done
'';
meta = {
description = "Private family budgeting app";
homepage = "https://www.budgetwithbuckets.com/";
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ kmogged ];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
mainProgram = "buckets";
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "buckle";
version = "1.1.0";
cargoHash = "sha256-2QUgyml4ebPLt0oXrdCNYIORvVyBKvsDfC+ZgsVn+cQ=";
src = fetchFromGitHub {
owner = "benbrittain";
repo = "buckle";
rev = "v${version}";
hash = "sha256-eWhcDzw+6I5N0dse5avwhcQ/y6YZ6b3QKyBwWBrA/xo=";
};
checkFlags = [
# Both tests access the network.
"--skip=test_buck2_latest"
"--skip=test_buck2_specific_version"
];
meta = {
description = "Buck2 launcher";
longDescription = ''
Buckle is a launcher for [Buck2](https://buck2.build). It manages
Buck2 on a per-project basis. This enables a project or team to do
seamless upgrades of their build system tooling. It is designed to
be minimally intrusive. Buckle only manages fetching Buck2 and
enforcing the prelude is upgraded in sync.
'';
homepage = "https://github.com/benbrittain/buckle";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ cbarrete ];
mainProgram = "buckle";
};
}

View File

@@ -0,0 +1,22 @@
diff -uwr buddy-2.4.orig/examples/bddcalc/parser.yxx buddy-2.4/examples/bddcalc/parser.yxx
--- buddy-2.4.orig/examples/bddcalc/parser.yxx 2009-07-02 17:12:48.000000000 +0200
+++ buddy-2.4/examples/bddcalc/parser.yxx 2009-07-02 17:18:36.000000000 +0200
@@ -7,6 +7,7 @@
%{
#include <string>
+#include <cstdlib>
#include <stdarg.h>
#include <fstream>
#include <getopt.h>
diff -uwr buddy-2.4.orig/src/bddtest.cxx buddy-2.4/src/bddtest.cxx
--- buddy-2.4.orig/src/bddtest.cxx 2009-07-02 17:12:48.000000000 +0200
+++ buddy-2.4/src/bddtest.cxx 2009-07-02 17:14:05.000000000 +0200
@@ -28,6 +28,7 @@
========================================================================*/
#include <string>
+#include <cstdlib>
#include "bdd.h"
#include "bvec.h"

View File

@@ -0,0 +1,37 @@
{
lib,
stdenv,
fetchurl,
bison,
}:
stdenv.mkDerivation rec {
pname = "buddy";
version = "2.4";
src = fetchurl {
url = "mirror://sourceforge/buddy/${pname}-${version}.tar.gz";
sha256 = "0dl86l9xkl33wnkz684xa9axhcxx2zzi4q5lii0axnb9lsk81pyk";
};
buildInputs = [ bison ];
patches = [ ./gcc-4.3.3-fixes.patch ];
configureFlags = [
"CFLAGS=-O3"
"CXXFLAGS=-O3"
];
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=register";
NIX_LDFLAGS = "-lm";
doCheck = true;
meta = {
homepage = "https://sourceforge.net/projects/buddy/";
description = "Binary decision diagram package";
license = {
url = "https://sourceforge.net/p/buddy/gitcode/ci/master/tree/README";
fullName = "Buddy License";
};
platforms = lib.platforms.unix; # Once had cygwin problems
};
}

View File

@@ -0,0 +1,51 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
pkg-config,
vala,
budgie-desktop,
gtk3,
libpeas,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-analogue-clock-applet";
version = "2.2";
src = fetchFromGitHub {
owner = "samlane-ma";
repo = "analogue-clock-applet";
rev = "v${finalAttrs.version}";
hash = "sha256-8kqDEzcUqg/TvwpazYQt1oQDVC00fOxFLVsKYMDuV9I=";
};
nativeBuildInputs = [
meson
ninja
pkg-config
vala
];
buildInputs = [
budgie-desktop
gtk3
libpeas
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Analogue Clock Applet for the Budgie desktop";
homepage = "https://github.com/samlane-ma/analogue-clock-applet";
changelog = "https://github.com/samlane-ma/analogue-clock-applet/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,42 @@
{
lib,
stdenv,
fetchFromGitHub,
imagemagick,
jhead,
meson,
ninja,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-backgrounds";
version = "3.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-backgrounds";
rev = "v${finalAttrs.version}";
hash = "sha256-2E6+WDLIAwqiiPMJw+tLDCT3CnpboH4X0cB87zw/hBQ=";
};
nativeBuildInputs = [
imagemagick
jhead
meson
ninja
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Default background set for the Budgie Desktop";
homepage = "https://github.com/BuddiesOfBudgie/budgie-backgrounds";
changelog = "https://github.com/BuddiesOfBudgie/budgie-backgrounds/releases/tag/v${finalAttrs.version}";
license = lib.licenses.cc0;
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,205 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
accountsservice,
adwaita-icon-theme,
budgie-desktop,
cheese,
clutter,
clutter-gtk,
colord,
colord-gtk,
cups,
docbook-xsl-nons,
fontconfig,
gcr,
gdk-pixbuf,
gettext,
glib,
glib-networking,
glibc,
gnome,
gst_all_1,
gnome-bluetooth_1_0,
gnome-color-manager,
gnome-desktop,
gnome-remote-desktop,
gnome-settings-daemon,
gnome-user-share,
gsettings-desktop-schemas,
gsound,
gtk3,
ibus,
libcanberra-gtk3,
libepoxy,
libgnomekbd,
libgtop,
libgudev,
libhandy,
libkrb5,
libnma,
libpulseaudio,
libpwquality,
librsvg,
libsecret,
libwacom,
libxml2,
libxslt,
meson,
modemmanager,
mutter,
networkmanager,
networkmanagerapplet,
ninja,
nix-update-script,
pkg-config,
polkit,
samba,
shadow,
shared-mime-info,
testers,
tzdata,
udisks2,
upower,
webp-pixbuf-loader,
wrapGAppsHook3,
enableSshSocket ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-control-center";
version = "1.4.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-control-center";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-W5PF7BPdQdg/7xJ4J+fEnuDdpoG/lyhX56RDnX2DXoY=";
};
patches = [
(replaceVars ./paths.patch {
budgie_desktop = budgie-desktop;
gcm = gnome-color-manager;
inherit
cups
libgnomekbd
shadow
;
inherit networkmanagerapplet tzdata;
})
];
nativeBuildInputs = [
docbook-xsl-nons
gettext
libxslt
meson
ninja
pkg-config
shared-mime-info
wrapGAppsHook3
];
buildInputs = [
accountsservice
clutter
clutter-gtk
colord
colord-gtk
fontconfig
gcr
gdk-pixbuf
glib
glib-networking
gnome-desktop
gst_all_1.gstreamer
adwaita-icon-theme
cheese
gnome-bluetooth_1_0
gnome-remote-desktop
gnome-settings-daemon
gnome-user-share
mutter
gsettings-desktop-schemas
gsound
gtk3
ibus
libcanberra-gtk3
libepoxy
libgtop
libgudev
libhandy
libkrb5
libnma
libpulseaudio
libpwquality
librsvg
libsecret
libwacom
libxml2
modemmanager
networkmanager
polkit
samba
udisks2
upower
];
mesonFlags = [ (lib.mesonBool "ssh" enableSshSocket) ];
preConfigure = ''
# For ITS rules
addToSearchPath "XDG_DATA_DIRS" "${polkit.out}/share"
'';
postInstall = ''
# Pull in WebP support for gnome-backgrounds.
# In postInstall to run before gappsWrapperArgsHook.
export GDK_PIXBUF_MODULE_FILE="${
gnome._gdkPixbufCacheBuilder_DO_NOT_USE {
extraLoaders = [
librsvg
webp-pixbuf-loader
];
}
}"
'';
preFixup = ''
gappsWrapperArgs+=(
# Sound theme
--prefix XDG_DATA_DIRS : "${budgie-desktop}/share"
# Thumbnailers (for setting user profile pictures)
--prefix XDG_DATA_DIRS : "${gdk-pixbuf}/share"
--prefix XDG_DATA_DIRS : "${librsvg}/share"
# WM keyboard shortcuts
--prefix XDG_DATA_DIRS : "${mutter}/share"
)
'';
separateDebugInfo = true;
# Fix GCC 14 build.
# cc-display-panel.c:962:41: error: passing argument 1 of 'gtk_widget_set_sensitive'
# from incompatible pointer type [-Wincompatible-pointer-types]
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types";
passthru = {
tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
updateScript = nix-update-script { };
};
meta = {
description = "Fork of GNOME Control Center for the Budgie 10 Series";
homepage = "https://github.com/BuddiesOfBudgie/budgie-control-center";
changelog = "https://github.com/BuddiesOfBudgie/budgie-control-center/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl2Plus;
teams = [ lib.teams.budgie ];
mainProgram = "budgie-control-center";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,185 @@
diff --git a/panels/color/cc-color-panel.c b/panels/color/cc-color-panel.c
index a2f90b093..7801b4a5e 100644
--- a/panels/color/cc-color-panel.c
+++ b/panels/color/cc-color-panel.c
@@ -587,7 +587,7 @@ gcm_prefs_calibrate_cb (CcColorPanel *prefs)
/* run with modal set */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-calibrate"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-calibrate", NULL));
g_ptr_array_add (argv, g_strdup ("--device"));
g_ptr_array_add (argv, g_strdup (cd_device_get_id (prefs->current_device)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -940,7 +940,7 @@ gcm_prefs_profile_view (CcColorPanel *prefs, CdProfile *profile)
/* open up gcm-viewer as a info pane */
argv = g_ptr_array_new_with_free_func (g_free);
- g_ptr_array_add (argv, g_strdup ("gcm-viewer"));
+ g_ptr_array_add (argv, g_build_filename ("@gcm@", "bin", "gcm-viewer", NULL));
g_ptr_array_add (argv, g_strdup ("--profile"));
g_ptr_array_add (argv, g_strdup (cd_profile_get_id (profile)));
g_ptr_array_add (argv, g_strdup ("--parent-window"));
@@ -1186,15 +1186,12 @@ gcm_prefs_device_clicked (CcColorPanel *prefs, CdDevice *device)
static void
gcm_prefs_profile_clicked (CcColorPanel *prefs, CdProfile *profile, CdDevice *device)
{
- g_autofree gchar *s = NULL;
-
/* get profile */
g_debug ("selected profile = %s",
cd_profile_get_filename (profile));
/* allow getting profile info */
- if (cd_profile_get_filename (profile) != NULL &&
- (s = g_find_program_in_path ("gcm-viewer")) != NULL)
+ if (cd_profile_get_filename (profile) != NULL)
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, TRUE);
else
gtk_widget_set_sensitive (prefs->toolbutton_profile_view, FALSE);
diff --git a/panels/datetime/tz.h b/panels/datetime/tz.h
index b6b7ab9d0..31f268e91 100644
--- a/panels/datetime/tz.h
+++ b/panels/datetime/tz.h
@@ -4,7 +4,7 @@
* Copyright (C) 2000-2001 Ximian, Inc.
*
* Authors: Hans Petter Jansson <hpj@ximian.com>
- *
+ *
* Largely based on Michael Fulbright's work on Anaconda.
*
* This program is free software; you can redistribute it and/or modify
@@ -27,11 +27,7 @@
G_BEGIN_DECLS
-#ifndef __sun
-# define TZ_DATA_FILE "/usr/share/zoneinfo/zone.tab"
-#else
-# define TZ_DATA_FILE "/usr/share/lib/zoneinfo/tab/zone_sun.tab"
-#endif
+#define TZ_DATA_FILE "@tzdata@/share/zoneinfo/zone.tab"
typedef struct _TzDB TzDB;
typedef struct _TzLocation TzLocation;
diff --git a/panels/info-overview/cc-info-overview-panel.c b/panels/info-overview/cc-info-overview-panel.c
index 25cda02d3..db664bc56 100644
--- a/panels/info-overview/cc-info-overview-panel.c
+++ b/panels/info-overview/cc-info-overview-panel.c
@@ -156,7 +156,7 @@ load_budgie_version (char **version)
gsize length;
g_autoptr(VersionData) data = NULL;
- if (!g_file_get_contents (DATADIR "/budgie/budgie-version.xml",
+ if (!g_file_get_contents ("@budgie_desktop@/share/budgie/budgie-version.xml",
&contents,
&length,
&error))
diff --git a/panels/keyboard/cc-input-list-box.c b/panels/keyboard/cc-input-list-box.c
index 191207490..37e0fddc2 100644
--- a/panels/keyboard/cc-input-list-box.c
+++ b/panels/keyboard/cc-input-list-box.c
@@ -62,7 +62,7 @@ struct _CcInputListBox {
};
G_DEFINE_TYPE (CcInputListBox, cc_input_list_box, GTK_TYPE_LIST_BOX)
-
+
typedef struct
{
CcInputListBox *panel;
@@ -223,10 +223,10 @@ row_layout_cb (CcInputListBox *self,
layout_variant = cc_input_source_get_layout_variant (source);
if (layout_variant && layout_variant[0])
- commandline = g_strdup_printf ("gkbd-keyboard-display -l \"%s\t%s\"",
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l \"%s\t%s\"",
layout, layout_variant);
else
- commandline = g_strdup_printf ("gkbd-keyboard-display -l %s",
+ commandline = g_strdup_printf ("@libgnomekbd@/bin/gkbd-keyboard-display -l %s",
layout);
g_spawn_command_line_async (commandline, NULL);
diff --git a/panels/network/connection-editor/net-connection-editor.c b/panels/network/connection-editor/net-connection-editor.c
index 505b8ee25..62e94009f 100644
--- a/panels/network/connection-editor/net-connection-editor.c
+++ b/panels/network/connection-editor/net-connection-editor.c
@@ -267,9 +267,9 @@ net_connection_editor_do_fallback (NetConnectionEditor *self, const gchar *type)
g_autoptr(GError) error = NULL;
if (self->is_new_connection) {
- cmdline = g_strdup_printf ("nm-connection-editor --type='%s' --create", type);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --type='%s' --create", type);
} else {
- cmdline = g_strdup_printf ("nm-connection-editor --edit='%s'",
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit='%s'",
nm_connection_get_uuid (self->connection));
}
diff --git a/panels/network/net-device-bluetooth.c b/panels/network/net-device-bluetooth.c
index 372c0c4f8..464f4b6a0 100644
--- a/panels/network/net-device-bluetooth.c
+++ b/panels/network/net-device-bluetooth.c
@@ -141,7 +141,7 @@ options_button_clicked_cb (NetDeviceBluetooth *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
diff --git a/panels/network/net-device-mobile.c b/panels/network/net-device-mobile.c
index f50fd5d07..c6f6f776e 100644
--- a/panels/network/net-device-mobile.c
+++ b/panels/network/net-device-mobile.c
@@ -522,7 +522,7 @@ options_button_clicked_cb (NetDeviceMobile *self)
connection = net_device_get_find_connection (self->client, self->device);
uuid = nm_connection_get_uuid (connection);
- cmdline = g_strdup_printf ("nm-connection-editor --edit %s", uuid);
+ cmdline = g_strdup_printf ("@networkmanagerapplet@/bin/nm-connection-editor --edit %s", uuid);
g_debug ("Launching '%s'\n", cmdline);
if (!g_spawn_command_line_async (cmdline, &error))
g_warning ("Failed to launch nm-connection-editor: %s", error->message);
diff --git a/panels/printers/pp-host.c b/panels/printers/pp-host.c
index a31a606e3..ed5133d29 100644
--- a/panels/printers/pp-host.c
+++ b/panels/printers/pp-host.c
@@ -256,7 +256,7 @@ _pp_host_get_snmp_devices_thread (GTask *task,
devices = g_ptr_array_new_with_free_func (g_object_unref);
argv = g_new0 (gchar *, 3);
- argv[0] = g_strdup ("/usr/lib/cups/backend/snmp");
+ argv[0] = g_strdup ("@cups@/lib/cups/backend/snmp");
argv[1] = g_strdup (priv->hostname);
/* Use SNMP to get printer's informations */
diff --git a/panels/user-accounts/run-passwd.c b/panels/user-accounts/run-passwd.c
index 86f53d4fc..0b052856f 100644
--- a/panels/user-accounts/run-passwd.c
+++ b/panels/user-accounts/run-passwd.c
@@ -150,7 +150,7 @@ spawn_passwd (PasswdHandler *passwd_handler, GError **error)
gchar **envp;
gint my_stdin, my_stdout, my_stderr;
- argv[0] = "/usr/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
+ argv[0] = "/run/wrappers/bin/passwd"; /* Is it safe to rely on a hard-coded path? */
argv[1] = NULL;
envp = g_get_environ ();
diff --git a/panels/user-accounts/user-utils.c b/panels/user-accounts/user-utils.c
index 0de83479e..628e35247 100644
--- a/panels/user-accounts/user-utils.c
+++ b/panels/user-accounts/user-utils.c
@@ -497,7 +497,7 @@ is_valid_username_async (const gchar *username,
* future, so it would be nice to have some official way for this
* instead of relying on the current "--login" implementation.
*/
- argv[0] = "/usr/sbin/usermod";
+ argv[0] = "@shadow@/bin/usermod";
argv[1] = "--login";
argv[2] = data->username;
argv[3] = "--";

View File

@@ -0,0 +1,58 @@
{
lib,
stdenv,
fetchFromGitHub,
desktop-file-utils,
glib,
gtk3,
intltool,
meson,
ninja,
nix-update-script,
pkg-config,
vala,
wrapGAppsHook3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-desktop-view";
version = "1.3";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-desktop-view";
rev = "v${finalAttrs.version}";
hash = "sha256-k6VfAGWvUarhBFnREasOvWH3M9uuT5SFUpMFmKo1fmE=";
};
nativeBuildInputs = [
desktop-file-utils
intltool
meson
ninja
pkg-config
vala
wrapGAppsHook3
];
buildInputs = [
glib
gtk3
];
mesonFlags = [ (lib.mesonBool "werror" false) ];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Official Budgie desktop icons application/implementation";
homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop-view";
changelog = "https://github.com/BuddiesOfBudgie/budgie-desktop-view/releases/tag/v${finalAttrs.version}";
license = lib.licenses.asl20;
teams = [ lib.teams.budgie ];
mainProgram = "org.buddiesofbudgie.budgie-desktop-view";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
glib,
gobject-introspection,
xorg,
wrapGAppsHook3,
budgie-desktop,
plugins ? [ ],
}:
stdenv.mkDerivation {
pname = "${budgie-desktop.pname}-with-plugins";
inherit (budgie-desktop) version;
src = null;
paths = [ budgie-desktop ] ++ plugins;
passAsFile = [ "paths" ];
nativeBuildInputs = [
glib
gobject-introspection.setupHook
wrapGAppsHook3
];
buildInputs = lib.forEach plugins (plugin: plugin.buildInputs) ++ plugins;
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
preferLocalBuild = true;
allowSubstitutes = false;
installPhase = ''
mkdir -p $out
for i in $(cat $pathsPath); do
${xorg.lndir}/bin/lndir -silent $i $out
done
'';
preFixup = ''
gappsWrapperArgs+=(
--set BUDGIE_PLUGIN_LIBDIR "$out/lib/budgie-desktop/plugins"
--set BUDGIE_PLUGIN_DATADIR "$out/share/budgie-desktop/plugins"
--set RAVEN_PLUGIN_LIBDIR "$out/lib/budgie-desktop/raven-plugins"
--set RAVEN_PLUGIN_DATADIR "$out/share/budgie-desktop/raven-plugins"
)
'';
meta = {
inherit (budgie-desktop.meta)
description
homepage
changelog
license
teams
platforms
;
};
}

View File

@@ -0,0 +1,163 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
accountsservice,
alsa-lib,
budgie-screensaver,
docbook-xsl-nons,
glib,
gnome-desktop,
gnome-settings-daemon,
graphene,
gst_all_1,
gtk-doc,
gtk3,
ibus,
intltool,
libcanberra-gtk3,
libgee,
libGL,
libnotify,
libpeas,
libpulseaudio,
libuuid,
libwnck,
magpie,
libgbm,
meson,
mutter,
ninja,
nix-update-script,
nixosTests,
pkg-config,
polkit,
sassc,
testers,
upower,
vala,
validatePkgConfig,
xfce,
wrapGAppsHook3,
zenity,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-desktop";
version = "10.9.2";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-desktop";
tag = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-lDsQlUAa79gnM8wC5pwyquvFyEiayH4W4gD/uyC5Koo=";
};
outputs = [
"out"
"dev"
"man"
];
patches = [
./plugins.patch
# Adapt to libxfce4windowing v4.19.8
# https://github.com/BuddiesOfBudgie/budgie-desktop/pull/627
(fetchpatch {
url = "https://github.com/BuddiesOfBudgie/budgie-desktop/commit/ba8170b4f3108f9de28331b6a98a9d92bb0ed4de.patch";
hash = "sha256-T//1/NmaV81j0jiIYK7vEp8sgKCgF2i10D+Rk9qAAeE=";
})
# Resolve vala 0.56.18 compact class inheritance removal
# https://github.com/BuddiesOfBudgie/budgie-desktop/issues/679
(fetchpatch {
url = "https://github.com/BuddiesOfBudgie/budgie-desktop/commit/46c83b1265b4230668da472d9ef6926941678418.patch";
hash = "sha256-qnA8iBEctZbE86qIPudI1vMbgFy4xDWrxxej517ORws=";
})
# Add override for overlay-key to prevent crash with mutter-common v48-rc
# https://github.com/BuddiesOfBudgie/budgie-desktop/pull/683
(fetchpatch {
url = "https://github.com/BuddiesOfBudgie/budgie-desktop/commit/c24091bb424abe99ebcdd33eedd37068f735ad2a.patch";
hash = "sha256-4WEkscftOGZmzH7imMTmcTDPH6eHMeEhgto+R5NNlh0=";
})
];
nativeBuildInputs = [
docbook-xsl-nons
gtk-doc
intltool
meson
ninja
pkg-config
vala
validatePkgConfig
wrapGAppsHook3
];
buildInputs = [
accountsservice
alsa-lib
budgie-screensaver
glib
gnome-desktop
gnome-settings-daemon
mutter
zenity
graphene
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gtk3
ibus
libcanberra-gtk3
libgee
libGL
libnotify
libpulseaudio
libuuid
libwnck
magpie
libgbm
polkit
sassc
upower
xfce.libxfce4windowing
];
propagatedBuildInputs = [
# budgie-1.0.pc, budgie-raven-plugin-1.0.pc
libpeas
];
passthru = {
providedSessions = [ "budgie-desktop" ];
tests = {
inherit (nixosTests) budgie;
pkg-config = testers.hasPkgConfigModules { package = finalAttrs.finalPackage; };
};
updateScript = nix-update-script { };
};
meta = {
description = "Feature-rich, modern desktop designed to keep out the way of the user";
homepage = "https://github.com/BuddiesOfBudgie/budgie-desktop";
changelog = "https://github.com/BuddiesOfBudgie/budgie-desktop/releases/tag/v${finalAttrs.version}";
license = with lib.licenses; [
gpl2Plus
lgpl21Plus
cc-by-sa-30
];
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
pkgConfigModules = [
"budgie-1.0"
"budgie-raven-plugin-1.0"
"budgie-theme-1.0"
];
};
})

View File

@@ -0,0 +1,198 @@
diff --git a/meson.build b/meson.build
index 6c6e473e..9b8fb73a 100644
--- a/meson.build
+++ b/meson.build
@@ -88,11 +88,6 @@ datadir = join_paths(prefix, get_option('datadir'))
localedir = join_paths(prefix, get_option('localedir'))
podir = join_paths(meson.source_root(), 'po')
-cdata.set_quoted('DATADIR', datadir)
-cdata.set_quoted('SYSCONFDIR', confdir)
-cdata.set_quoted('LOCALEDIR', localedir)
-cdata.set_quoted('PACKAGE_URL', 'https://buddiesofbudgie.org')
-
# Handle i18n on the .desktop file
# Originally stolem from TingPing:
# https://github.com/vinszent/gnome-twitch/blob/master/data/meson.build
@@ -111,23 +106,10 @@ cdata.set_quoted('MODULEDIR', plugin_libdir)
cdata.set_quoted('MODULE_DATA_DIR', plugin_datadir)
cdata.set_quoted('RAVEN_PLUGIN_LIBDIR', raven_plugin_libdir)
cdata.set_quoted('RAVEN_PLUGIN_DATADIR', raven_plugin_datadir)
-
-if prefix == '/usr' or prefix == '/usr/local'
- cdata.set('HAS_SECONDARY_PLUGIN_DIRS', true)
-
- if prefix == '/usr'
- secondary_libdir_root = join_paths(prefix, 'local', get_option('libdir'), meson.project_name())
- secondary_datadir_root = join_paths(prefix, 'local', get_option('datadir'), meson.project_name())
- else
- secondary_libdir_root = join_paths('/usr', get_option('libdir'), meson.project_name())
- secondary_datadir_root = join_paths('/usr', get_option('datadir'), meson.project_name())
- endif
-
- cdata.set_quoted('MODULEDIR_SECONDARY', join_paths(secondary_libdir_root, 'plugins'))
- cdata.set_quoted('MODULE_DATA_DIR_SECONDARY', join_paths(secondary_datadir_root, 'plugins'))
- cdata.set_quoted('RAVEN_PLUGIN_LIBDIR_SECONDARY', join_paths(secondary_libdir_root, 'raven-plugins'))
- cdata.set_quoted('RAVEN_PLUGIN_DATADIR_SECONDARY', join_paths(secondary_datadir_root, 'raven-plugins'))
-endif
+cdata.set_quoted('DATADIR', datadir)
+cdata.set_quoted('SYSCONFDIR', confdir)
+cdata.set_quoted('LOCALEDIR', localedir)
+cdata.set_quoted('PACKAGE_URL', 'https://buddiesofbudgie.org')
with_bluetooth = get_option('with-bluetooth')
if with_bluetooth == true
diff --git a/src/config/budgie-config.c b/src/config/budgie-config.c
index 3ffe3632..da53e054 100644
--- a/src/config/budgie-config.c
+++ b/src/config/budgie-config.c
@@ -11,7 +11,6 @@
#ifndef CONFIG_H_INCLUDED
#include "config.h"
-#include <stdbool.h>
#include <stddef.h>
/**
@@ -22,20 +21,6 @@ const char* BUDGIE_MODULE_DATA_DIRECTORY = MODULE_DATA_DIR;
const char* BUDGIE_RAVEN_PLUGIN_LIBDIR = RAVEN_PLUGIN_LIBDIR;
const char* BUDGIE_RAVEN_PLUGIN_DATADIR = RAVEN_PLUGIN_DATADIR;
-#ifdef HAS_SECONDARY_PLUGIN_DIRS
-const bool BUDGIE_HAS_SECONDARY_PLUGIN_DIRS = true;
-const char* BUDGIE_MODULE_DIRECTORY_SECONDARY = MODULEDIR_SECONDARY;
-const char* BUDGIE_MODULE_DATA_DIRECTORY_SECONDARY = MODULE_DATA_DIR_SECONDARY;
-const char* BUDGIE_RAVEN_PLUGIN_LIBDIR_SECONDARY = RAVEN_PLUGIN_LIBDIR_SECONDARY;
-const char* BUDGIE_RAVEN_PLUGIN_DATADIR_SECONDARY = RAVEN_PLUGIN_DATADIR_SECONDARY;
-#else
-const bool BUDGIE_HAS_SECONDARY_PLUGIN_DIRS = false;
-const char* BUDGIE_MODULE_DIRECTORY_SECONDARY = NULL;
-const char* BUDGIE_MODULE_DATA_DIRECTORY_SECONDARY = NULL;
-const char* BUDGIE_RAVEN_PLUGIN_LIBDIR_SECONDARY = NULL;
-const char* BUDGIE_RAVEN_PLUGIN_DATADIR_SECONDARY = NULL;
-#endif
-
const char* BUDGIE_DATADIR = DATADIR;
const char* BUDGIE_VERSION = PACKAGE_VERSION;
const char* BUDGIE_WEBSITE = PACKAGE_URL;
diff --git a/src/config/budgie-config.h b/src/config/budgie-config.h
index b7581203..11df4347 100644
--- a/src/config/budgie-config.h
+++ b/src/config/budgie-config.h
@@ -12,7 +12,6 @@
#ifndef _BUDGIE_CONFIG_H_
#define _BUDGIE_CONFIG_H_
-#include <stdbool.h>
#include <stddef.h>
/* i.e. /usr/lib/budgie-desktop */
@@ -27,12 +26,6 @@ extern const char* BUDGIE_RAVEN_PLUGIN_LIBDIR;
/* i.e. /usr/share/budgie-desktop/raven-plugins */
extern const char* BUDGIE_RAVEN_PLUGIN_DATADIR;
-extern const bool BUDGIE_HAS_SECONDARY_PLUGIN_DIRS;
-extern const char* BUDGIE_MODULE_DIRECTORY_SECONDARY;
-extern const char* BUDGIE_MODULE_DATA_DIRECTORY_SECONDARY;
-extern const char* BUDGIE_RAVEN_PLUGIN_LIBDIR_SECONDARY;
-extern const char* BUDGIE_RAVEN_PLUGIN_DATADIR_SECONDARY;
-
/* i.e. /usr/share/ */
extern const char* BUDGIE_DATADIR;
diff --git a/src/config/budgie-config.vapi b/src/config/budgie-config.vapi
index 5eb445d1..7d27e348 100644
--- a/src/config/budgie-config.vapi
+++ b/src/config/budgie-config.vapi
@@ -22,21 +22,6 @@ namespace Budgie {
[CCode (cheader_filename="budgie-config.h")]
public extern const string RAVEN_PLUGIN_DATADIR;
- [CCode (cheader_filename="budgie-config.h")]
- public extern const bool HAS_SECONDARY_PLUGIN_DIRS;
-
- [CCode (cheader_filename="budgie-config.h")]
- public extern const string? MODULE_DIRECTORY_SECONDARY;
-
- [CCode (cheader_filename="budgie-config.h")]
- public extern const string? MODULE_DATA_DIRECTORY_SECONDARY;
-
- [CCode (cheader_filename="budgie-config.h")]
- public extern const string? RAVEN_PLUGIN_LIBDIR_SECONDARY;
-
- [CCode (cheader_filename="budgie-config.h")]
- public extern const string? RAVEN_PLUGIN_DATADIR_SECONDARY;
-
[CCode (cheader_filename="budgie-config.h")]
public extern const string DATADIR;
diff --git a/src/panel/plugin_manager.vala b/src/panel/plugin_manager.vala
index f4f2e4da..3dfee49a 100644
--- a/src/panel/plugin_manager.vala
+++ b/src/panel/plugin_manager.vala
@@ -40,13 +40,26 @@ namespace Budgie {
}
/* System path */
- var dir = Environment.get_user_data_dir();
- engine.add_search_path(Budgie.MODULE_DIRECTORY, Budgie.MODULE_DATA_DIRECTORY);
- if (Budgie.HAS_SECONDARY_PLUGIN_DIRS) {
- engine.add_search_path(Budgie.MODULE_DIRECTORY_SECONDARY, Budgie.MODULE_DATA_DIRECTORY_SECONDARY);
+ var libdir = Environment.get_variable("BUDGIE_PLUGIN_LIBDIR");
+ if (libdir != null) {
+ debug("BUDGIE_PLUGIN_LIBDIR is set to %s", libdir);
+ } else {
+ debug("BUDGIE_PLUGIN_LIBDIR is unset, defaulting to %s", Budgie.MODULE_DIRECTORY);
+ libdir = Budgie.MODULE_DIRECTORY;
+ }
+
+ var datadir = Environment.get_variable("BUDGIE_PLUGIN_DATADIR");
+ if (datadir != null) {
+ debug("BUDGIE_PLUGIN_DATADIR is set to %s", datadir);
+ } else {
+ debug("BUDGIE_PLUGIN_DATADIR is unset, defaulting to %s", Budgie.MODULE_DATA_DIRECTORY);
+ datadir = Budgie.MODULE_DATA_DIRECTORY;
}
+ engine.add_search_path(libdir, datadir);
+
/* User path */
+ var dir = Environment.get_user_data_dir();
var user_mod = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "plugins");
var hdata = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "data");
engine.add_search_path(user_mod, hdata);
diff --git a/src/raven/plugin_manager.vala b/src/raven/plugin_manager.vala
index 01f32553..2826b7e5 100644
--- a/src/raven/plugin_manager.vala
+++ b/src/raven/plugin_manager.vala
@@ -51,13 +51,26 @@ namespace Budgie {
}
/* System path */
- var dir = Environment.get_user_data_dir();
- engine.add_search_path(Budgie.RAVEN_PLUGIN_LIBDIR, Budgie.RAVEN_PLUGIN_DATADIR);
- if (Budgie.HAS_SECONDARY_PLUGIN_DIRS) {
- engine.add_search_path(Budgie.RAVEN_PLUGIN_LIBDIR_SECONDARY, Budgie.RAVEN_PLUGIN_DATADIR_SECONDARY);
+ var libdir = Environment.get_variable("RAVEN_PLUGIN_LIBDIR");
+ if (libdir != null) {
+ debug("RAVEN_PLUGIN_LIBDIR is set to %s", libdir);
+ } else {
+ debug("RAVEN_PLUGIN_LIBDIR is unset, defaulting to %s", Budgie.RAVEN_PLUGIN_LIBDIR);
+ libdir = Budgie.RAVEN_PLUGIN_LIBDIR;
}
+ var datadir = Environment.get_variable("RAVEN_PLUGIN_DATADIR");
+ if (datadir != null) {
+ debug("RAVEN_PLUGIN_DATADIR is set to %s", datadir);
+ } else {
+ debug("RAVEN_PLUGIN_DATADIR is unset, defaulting to %s", Budgie.RAVEN_PLUGIN_DATADIR);
+ datadir = Budgie.RAVEN_PLUGIN_DATADIR;
+ }
+
+ engine.add_search_path(libdir, datadir);
+
/* User path */
+ var dir = Environment.get_user_data_dir();
var user_mod = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "raven-plugins");
var hdata = Path.build_path(Path.DIR_SEPARATOR_S, dir, "budgie-desktop", "raven-data");
engine.add_search_path(user_mod, hdata);

View File

@@ -0,0 +1,80 @@
{
lib,
runCommand,
budgie-desktop,
budgie-desktop-view,
glib,
gsettings-desktop-schemas,
mutter,
nixos-artwork,
nixos-background-light ? nixos-artwork.wallpapers.nineish,
nixos-background-dark ? nixos-artwork.wallpapers.nineish-dark-gray,
extraGSettingsOverrides ? "",
extraGSettingsOverridePackages ? [ ],
}:
let
inherit (lib) concatMapStringsSep;
gsettingsOverrides = ''
[org.gnome.desktop.background:Budgie]
picture-uri="file://${nixos-background-light.gnomeFilePath}"
picture-uri-dark="file://${nixos-background-dark.gnomeFilePath}"
[org.gnome.desktop.screensaver:Budgie]
picture-uri="file://${nixos-background-dark.gnomeFilePath}"
[org.gnome.desktop.interface:Budgie]
gtk-theme="Qogir"
icon-theme="Qogir"
cursor-theme="Qogir"
font-name="Noto Sans 10"
document-font-name="Noto Sans 10"
monospace-font-name="Hack 10"
[org.gnome.desktop.wm.preferences:Budgie]
titlebar-font="Noto Sans Bold 10"
[com.solus-project.budgie-menu:Budgie]
use-default-menu-icon=true
[com.solus-project.budgie-panel:Budgie]
dark-theme=false
builtin-theme=false
[com.solus-project.icon-tasklist:Budgie]
pinned-launchers=["nemo.desktop", "firefox.desktop", "vlc.desktop"]
[org.buddiesofbudgie.budgie-desktop-view:Budgie]
show=true
show-active-mounts=true
${extraGSettingsOverrides}
'';
gsettingsOverridePackages = [
budgie-desktop
budgie-desktop-view
gsettings-desktop-schemas
mutter
]
++ extraGSettingsOverridePackages;
in
runCommand "budgie-gsettings-overrides" { preferLocalBuild = true; } ''
data_dir="$out/share/gsettings-schemas/nixos-gsettings-overrides"
schema_dir="$data_dir/glib-2.0/schemas"
mkdir -p "$schema_dir"
${concatMapStringsSep "\n" (
pkg:
"cp -rf \"${glib.getSchemaPath pkg}\"/*.xml \"${glib.getSchemaPath pkg}\"/*.gschema.override \"$schema_dir\""
) gsettingsOverridePackages}
chmod -R a+w "$data_dir"
cat - > "$schema_dir/zz-nixos-defaults.gschema.override" <<- EOF
${gsettingsOverrides}
EOF
${glib.dev}/bin/glib-compile-schemas --strict "$schema_dir"
''

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchFromGitHub,
glib,
gtk3,
meson,
ninja,
nix-update-script,
python3Packages,
xfce,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-media-player-applet";
version = "1.2.0";
src = fetchFromGitHub {
owner = "zalesyc";
repo = "budgie-media-player-applet";
tag = "v${finalAttrs.version}";
hash = "sha256-FTc/cl4qjVYx45SuZPizOGC09JERIuifCo86+Tqu5hk=";
};
strictDeps = true;
nativeBuildInputs = [
glib # for `glib-compile-schemas`
gtk3 # for `gtk-update-icon-theme`
meson
ninja
python3Packages.wrapPython
];
# To be passed to budgie-desktop-with-plugins.
buildInputs = [
glib
gtk3
xfce.libxfce4windowing
];
pythonPath = with python3Packages; [
requests
];
postPatch = ''
substituteInPlace meson.build --replace-fail "/usr" "$out"
'';
postFixup = ''
buildPythonPath "$out $pythonPath"
patchPythonScript "$out/lib/budgie-desktop/plugins/budgie-media-player-applet/applet.py"
'';
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Media Control Applet for the Budgie Panel";
homepage = "https://github.com/zalesyc/budgie-media-player-applet";
changelog = "https://github.com/zalesyc/budgie-media-player-applet/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Plus;
platforms = lib.platforms.linux;
teams = [ lib.teams.budgie ];
};
})

View File

@@ -0,0 +1,81 @@
{
lib,
stdenv,
fetchFromGitHub,
dbus-glib,
glib,
gnome-desktop,
gtk3,
intltool,
libgnomekbd,
libX11,
linux-pam,
meson,
ninja,
nix-update-script,
pkg-config,
systemd,
testers,
wrapGAppsHook3,
xorg,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-screensaver";
version = "5.1.0";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-screensaver";
rev = "v${finalAttrs.version}";
hash = "sha256-N8x9hdbaMDisTbQPJedNO4UMLnCn+Q2hhm4udJZgQlc=";
};
outputs = [
"out"
"man"
];
nativeBuildInputs = [
intltool
meson
ninja
pkg-config
wrapGAppsHook3
];
buildInputs = [
dbus-glib
glib
gnome-desktop
gtk3
libgnomekbd
libX11
linux-pam
systemd
xorg.libXxf86vm
];
# Fix GCC 14 build.
# https://hydra.nixos.org/build/282164464/nixlog/3
env.NIX_CFLAGS_COMPILE = "-D_POSIX_C_SOURCE -Wno-error=implicit-function-declaration";
passthru = {
tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "budgie-screensaver-command --version";
};
updateScript = nix-update-script { };
};
meta = {
description = "Fork of old GNOME Screensaver for purposes of providing an authentication prompt on wake";
homepage = "https://github.com/BuddiesOfBudgie/budgie-screensaver";
changelog = "https://github.com/BuddiesOfBudgie/budgie-screensaver/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl2Only;
teams = [ lib.teams.budgie ];
mainProgram = "budgie-screensaver";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,35 @@
diff --git a/gnome-session/budgie-session.in b/gnome-session/budgie-session.in
index 8a91e061..3e2ef031 100755
--- a/gnome-session/budgie-session.in
+++ b/gnome-session/budgie-session.in
@@ -7,13 +7,15 @@ if [ "x$XDG_SESSION_TYPE" = "xwayland" ] &&
! (echo "$SHELL" | grep -q "false") &&
! (echo "$SHELL" | grep -q "nologin"); then
if [ "$1" != '-l' ]; then
- exec bash -c "exec -l '$SHELL' -c '$0 -l $*'"
+ # Make sure the shell actually sets up the environment.
+ unset __NIXOS_SET_ENVIRONMENT_DONE
+ exec @bash@ -c "exec -l '$SHELL' -c '$0 -l $*'"
else
shift
fi
fi
-SETTING=$(G_MESSAGES_DEBUG='' gsettings get org.gnome.system.locale region)
+SETTING=$(G_MESSAGES_DEBUG='' @gsettings@ get org.gnome.system.locale region)
REGION=${SETTING#\'}
REGION=${REGION%\'}
diff --git a/gnome-session/main.c b/gnome-session/main.c
index 327c7c7f..301ec7ee 100644
--- a/gnome-session/main.c
+++ b/gnome-session/main.c
@@ -219,7 +219,7 @@ require_dbus_session (int argc,
}
new_argv[i + 2] = NULL;
- if (!execvp ("dbus-launch", new_argv)) {
+ if (!execvp ("@dbusLaunch@", new_argv)) {
g_set_error (error,
G_SPAWN_ERROR,
G_SPAWN_ERROR_FAILED,

View File

@@ -0,0 +1,113 @@
{
lib,
stdenv,
fetchFromGitHub,
replaceVars,
meson,
ninja,
pkg-config,
adwaita-icon-theme,
glib,
gtk3,
gsettings-desktop-schemas,
gnome-desktop,
gnome-settings-daemon,
dbus,
json-glib,
libICE,
xmlto,
docbook_xsl,
docbook_xml_dtd_412,
python3,
libxslt,
gettext,
makeWrapper,
nix-update-script,
systemd,
xorg,
libepoxy,
bash,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-session";
version = "0.9.1";
src = fetchFromGitHub {
owner = "BuddiesOfBudgie";
repo = "budgie-session";
rev = "v${finalAttrs.version}";
hash = "sha256-mz+Yh3NK2Tag+MWVofFFXYYXspxhmYBD6YCiuATpZSI=";
};
outputs = [
"out"
"man"
];
patches = [
(replaceVars ./fix-paths.patch {
gsettings = lib.getExe' glib "gsettings";
dbusLaunch = lib.getExe' dbus "dbus-launch";
bash = lib.getExe bash;
})
];
nativeBuildInputs = [
meson
ninja
pkg-config
gettext
makeWrapper
xmlto
libxslt
docbook_xsl
docbook_xml_dtd_412
python3
dbus # for DTD
];
buildInputs = [
glib
gtk3
libICE
gnome-desktop
json-glib
xorg.xtrans
adwaita-icon-theme
gnome-settings-daemon
gsettings-desktop-schemas
systemd
libepoxy
];
postPatch = ''
chmod +x meson_post_install.py # patchShebangs requires executable file
patchShebangs meson_post_install.py
'';
# `bin/budgie-session` will reset the environment when run in wayland, we
# therefor wrap `libexec/budgie-session-binary` instead which is the actual
# binary needing wrapping
preFixup = ''
wrapProgram "$out/libexec/budgie-session-binary" \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--suffix XDG_DATA_DIRS : "$out/share:$GSETTINGS_SCHEMAS_PATH" \
--suffix XDG_CONFIG_DIRS : "${gnome-settings-daemon}/etc/xdg"
'';
separateDebugInfo = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Session manager for Budgie";
homepage = "https://github.com/BuddiesOfBudgie/budgie-session";
changelog = "https://github.com/BuddiesOfBudgie/budgie-session/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl2Plus;
teams = [ lib.teams.budgie ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,13 @@
diff --git a/meson.build b/meson.build
index f63bdec..2de3778 100644
--- a/meson.build
+++ b/meson.build
@@ -52,7 +52,7 @@ add_project_arguments(
LIB_INSTALL_DIR = join_paths(libdir, 'budgie-desktop', 'plugins', meson.project_name())
install_data('schema/com.prateekmedia.systemmonitor.gschema.xml',
- install_dir: '/usr/share/glib-2.0/schemas'
+ install_dir: join_paths(datadir, 'glib-2.0/schemas')
)
subdir('icons')

View File

@@ -0,0 +1,63 @@
{
lib,
stdenv,
budgie-desktop,
fetchFromGitHub,
glib,
gtk3,
libgee,
libgtop,
libpeas,
meson,
ninja,
nix-update-script,
pkg-config,
vala,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-systemmonitor-applet";
version = "0.2.1";
src = fetchFromGitHub {
owner = "prateekmedia";
repo = "budgie-systemmonitor-applet";
tag = "v${finalAttrs.version}";
hash = "sha256-OWGy2LokpMOW4ZR3K+Bym7i88xQAJqWO43Pu7SjxRSw=";
};
# Remove if/when https://github.com/prateekmedia/budgie-systemmonitor-applet/pull/3 is merged
patches = [ ./install-schemas-to-datadir.patch ];
strictDeps = true;
nativeBuildInputs = [
glib # For `glib-compile-schemas`
meson
ninja
pkg-config
vala
];
buildInputs = [
budgie-desktop
glib
gtk3
libgee
libgtop
libpeas
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Budgie applet to show cpu frequency, ram, swap, network and uptime";
homepage = "https://github.com/prateekmedia/budgie-systemmonitor-applet";
changelog = "https://github.com/prateekmedia/budgie-systemmonitor-applet/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = lib.teams.budgie.members;
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,59 @@
{
lib,
stdenv,
fetchFromGitHub,
accountsservice,
budgie-desktop,
gtk3,
intltool,
libgee,
libpeas,
meson,
ninja,
nix-update-script,
pkg-config,
sassc,
vala,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "budgie-user-indicator-redux";
version = "1.0.2";
src = fetchFromGitHub {
owner = "EbonJaeger";
repo = "budgie-user-indicator-redux";
rev = "v${finalAttrs.version}";
hash = "sha256-X9b4H4PnrYGb/T7Sg9iXQeNDLoO1l0VCdbOCGUAgwC4=";
};
nativeBuildInputs = [
intltool
meson
ninja
pkg-config
vala
];
buildInputs = [
accountsservice
budgie-desktop
gtk3
libgee
libpeas
sassc
];
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Manage your user session from the Budgie panel";
homepage = "https://github.com/EbonJaeger/budgie-user-indicator-redux";
changelog = "https://github.com/EbonJaeger/budgie-user-indicator-redux/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
teams = [ lib.teams.budgie ];
};
})

View File

@@ -0,0 +1,96 @@
{
lib,
buildGoModule,
fetchFromGitHub,
protobuf,
git,
testers,
installShellFiles,
}:
buildGoModule (finalAttrs: {
pname = "buf";
version = "1.57.2";
src = fetchFromGitHub {
owner = "bufbuild";
repo = "buf";
tag = "v${finalAttrs.version}";
hash = "sha256-3OzMUROqrQnO1ofwL5hcbx9NgS3WCXwsonp0jKQ/Qlw=";
};
vendorHash = "sha256-tX+OBzIIuqCgz7ioDD5OnKpkT6mCdN8/owaOu9kP/kU=";
patches = [
# Skip a test that requires networking to be available to work.
./skip_broken_tests.patch
];
nativeBuildInputs = [ installShellFiles ];
ldflags = [
"-s"
"-w"
];
nativeCheckInputs = [
git # Required for TestGitCloner
protobuf # Required for buftesting.GetProtocFilePaths
];
checkFlags = [
"-skip=TestWorkspaceGit"
];
preCheck = ''
# Some tests take longer depending on builder load.
substituteInPlace private/bufpkg/bufcheck/lint_test.go \
--replace-fail 'context.WithTimeout(context.Background(), 60*time.Second)' \
'context.WithTimeout(context.Background(), 600*time.Second)'
# For WebAssembly runtime tests
GOOS=wasip1 GOARCH=wasm go build -o $GOPATH/bin/buf-plugin-suffix.wasm \
./private/bufpkg/bufcheck/internal/cmd/buf-plugin-suffix
# The tests need access to some of the built utilities
export PATH="$PATH:$GOPATH/bin"
'';
# Allow tests that bind or connect to localhost on macOS.
__darwinAllowLocalNetworking = true;
installPhase = ''
runHook preInstall
# Binaries
# Only install required binaries, don't install testing binaries
for FILE in buf protoc-gen-buf-breaking protoc-gen-buf-lint; do
install -D -m 555 -t $out/bin $GOPATH/bin/$FILE
done
# Completions
installShellCompletion --cmd buf \
--bash <($GOPATH/bin/buf completion bash) \
--fish <($GOPATH/bin/buf completion fish) \
--zsh <($GOPATH/bin/buf completion zsh)
# Man Pages
mkdir man && $GOPATH/bin/buf manpages man
installManPage man/*
runHook postInstall
'';
passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
meta = {
homepage = "https://buf.build";
changelog = "https://github.com/bufbuild/buf/releases/tag/v${finalAttrs.version}";
description = "Create consistent Protobuf APIs that preserve compatibility and comply with design best-practices";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
jk
lrewega
];
mainProgram = "buf";
};
})

View File

@@ -0,0 +1,15 @@
diff --git a/private/buf/buftesting/buftesting.go b/private/buf/buftesting/buftesting.go
index 1c650077..5422f703 100644
--- a/private/buf/buftesting/buftesting.go
+++ b/private/buf/buftesting/buftesting.go
@@ -106,6 +106,10 @@ func RunActualProtoc(
// GetGoogleapisDirPath gets the path to a clone of googleapis.
func GetGoogleapisDirPath(t *testing.T, buftestingDirPath string) string {
+ // Requires network access, which is not available during
+ // the nixpkgs sandboxed build
+ t.Skip()
+
googleapisDirPath := filepath.Join(buftestingDirPath, testGoogleapisDirPath)
require.NoError(
t,

View File

@@ -0,0 +1,62 @@
{
lib,
cargo,
desktop-file-utils,
fetchFromGitLab,
gtk4,
gtksourceview5,
libadwaita,
libspelling,
meson,
ninja,
pkg-config,
rustPlatform,
rustc,
stdenv,
wrapGAppsHook4,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "buffer";
version = "0.10.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "cheywood";
repo = "buffer";
tag = finalAttrs.version;
hash = "sha256-AkgmKMMy3tBgJudJ2Mm8LFV+aE0QbviKxgAJEZ9A3cg=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src pname version;
hash = "sha256-fwXeXaoC/Uh9eMEkRjhpAouxOrlRWX2n2r4pgIe83S0=";
};
nativeBuildInputs = [
cargo
desktop-file-utils
meson
ninja
pkg-config
rustPlatform.cargoSetupHook
rustc
wrapGAppsHook4
];
buildInputs = [
gtk4
gtksourceview5
libadwaita
libspelling
];
meta = {
description = "Minimal editing space for all those things that don't need keeping";
homepage = "https://gitlab.gnome.org/cheywood/buffer";
license = lib.licenses.gpl3Plus;
mainProgram = "buffer";
maintainers = with lib.maintainers; [ michaelgrahamevans ];
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,36 @@
{
lib,
fetchFromGitHub,
rustPlatform,
}:
rustPlatform.buildRustPackage rec {
pname = "buffrs";
version = "0.11.0";
src = fetchFromGitHub {
owner = "helsing-ai";
repo = "buffrs";
tag = "v${version}";
hash = "sha256-VHzPOFOkwz3QlDt25gBbishM4ujtEPFjA21WuiNVw00=";
};
cargoHash = "sha256-/cdBt23VSmwN/C2XdHeeRjUSqLWiEheqVl+hfEDKIP0=";
# Disabling tests meant to work over the network, as they will fail
# inside the builder.
checkFlags = [
"--skip=cmd::install::upgrade::fixture"
"--skip=cmd::publish::lib::fixture"
"--skip=cmd::publish::local::fixture"
"--skip=cmd::tuto::fixture"
];
meta = {
description = "Modern protobuf package management";
homepage = "https://github.com/helsing-ai/buffrs";
license = lib.licenses.asl20;
mainProgram = "buffrs";
maintainers = with lib.maintainers; [ danilobuerger ];
};
}

View File

@@ -0,0 +1,74 @@
{
fetchFromGitLab,
fetchpatch2,
inih,
lib,
libdrm,
libinput,
libxkbcommon,
meson,
ninja,
pkg-config,
scdoc,
stdenv,
gitUpdater,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "buffybox";
version = "3.3.0";
src = fetchFromGitLab {
domain = "gitlab.postmarketos.org";
owner = "postmarketOS";
repo = "buffybox";
fetchSubmodules = true; # to use its vendored lvgl
rev = "dce41a6f07a2b63c3136409b7bcd0078299fadf9";
hash = "sha256-n5RQg7kGS+lg7sRe5Defl3nDEha0vhc/FbwywD5wBsg=";
};
patches = [
(fetchpatch2 {
# This fixes a bug that might annoy you if you use something like PKCS#11
url = "https://gitlab.postmarketos.org/postmarketOS/buffybox/-/commit/d8214b522a3cc72cd4639a1dd114103a02e9218c.patch";
hash = "sha256-WxKuioJ1Fo5ARRYF/R4yULDVB4pq11phljzVGdWTV6s=";
})
(fetchpatch2 {
# Fixes up UB
url = "https://gitlab.postmarketos.org/postmarketOS/buffybox/-/commit/4e13c312241420cbb3e5cc7d4f0dd3e5d17449be.patch";
hash = "sha256-7yX6gGsptwijx+ZedSJWJKhwaoBVpxIbGK+ZiMLsIhc=";
})
];
depsBuildBuild = [
pkg-config
];
nativeBuildInputs = [
meson
ninja
pkg-config
scdoc
];
buildInputs = [
inih
libdrm
libinput
libxkbcommon
];
env.PKG_CONFIG_SYSTEMD_SYSTEMD_SYSTEM_UNIT_DIR = "${placeholder "out"}/lib/systemd/system";
strictDeps = true;
passthru.updateScript = gitUpdater { };
meta = with lib; {
description = "Suite of graphical applications for the terminal";
homepage = "https://gitlab.postmarketos.org/postmarketOS/buffybox";
license = licenses.gpl3Plus;
maintainers = with lib.maintainers; [ colinsane ];
platforms = platforms.linux;
};
})

View File

@@ -0,0 +1,32 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule (finalAttrs: {
pname = "bufisk";
version = "0.1.0";
src = fetchFromGitHub {
owner = "bufbuild";
repo = "bufisk";
tag = "v${finalAttrs.version}";
hash = "sha256-pVnqvQn7jwpx6T3sS4eA29JeJdh0GrPVm0J8n2UjJTw=";
};
vendorHash = "sha256-iv5zIn9C56AQB87T+n5fJzm/fhBFBUObFwrlJ72A/J4=";
ldflags = [
"-s"
"-w"
];
meta = {
homepage = "https://github.com/bufbuild/bufisk";
description = "User-friendly launcher for Buf";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ aaronjheng ];
mainProgram = "bufisk";
};
})

View File

@@ -0,0 +1,83 @@
{
lib,
stdenv,
fetchFromGitHub,
SDL2,
libGL,
cmake,
makeWrapper,
}:
stdenv.mkDerivation rec {
pname = "bugdom";
version = "1.3.4";
src = fetchFromGitHub {
owner = "jorio";
repo = "bugdom";
tag = version;
hash = "sha256-0c7v5tSqYuqtLOFl4sqD7+naJNqX/wlKHVntkZQGJ8A=";
fetchSubmodules = true;
};
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
# Expects SDL2.framework in specific location, which we don't have
# Passing this in cmakeFlags doesn't work because the path is hard-coded for Darwin
substituteInPlace cmake/FindSDL2.cmake \
--replace 'set(SDL2_LIBRARIES' 'set(SDL2_LIBRARIES "${SDL2}/lib/libSDL2.dylib") #'
# Expects plutil, which we don't have
sed -i '/plutil/d' CMakeLists.txt
'';
buildInputs = [
SDL2
libGL
];
nativeBuildInputs = [
cmake
makeWrapper
];
cmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [
"-DCMAKE_OSX_ARCHITECTURES=${stdenv.hostPlatform.darwinArch}"
# Expects SDL2.framework in specific location, which we don't have
"-DSDL2_INCLUDE_DIRS=${lib.getInclude SDL2}/include/SDL2"
];
installPhase = ''
runHook preInstall
''
+ (
if stdenv.hostPlatform.isDarwin then
''
mkdir -p $out/{bin,Applications}
mv {,$out/Applications/}Bugdom.app
makeWrapper $out/{Applications/Bugdom.app/Contents/MacOS,bin}/Bugdom
''
else
''
mkdir -p $out/share/bugdom
mv Data $out/share/bugdom
install -Dm755 {.,$out/bin}/Bugdom
wrapProgram $out/bin/Bugdom --run "cd $out/share/bugdom"
install -Dm644 $src/packaging/io.jor.bugdom.desktop $out/share/applications/io.jor.bugdom.desktop
install -Dm644 $src/packaging/io.jor.bugdom.png $out/share/pixmaps/io.jor.bugdom.png
''
)
+ ''
runHook postInstall
'';
meta = with lib; {
description = "Port of Bugdom, a 1999 Macintosh game by Pangea Software, for modern operating systems";
homepage = "https://github.com/jorio/Bugdom";
license = with licenses; [ cc-by-sa-40 ];
maintainers = with maintainers; [ lux ];
mainProgram = "Bugdom";
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
libunwind,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bugstalker";
version = "0.3.1";
src = fetchFromGitHub {
owner = "godzie44";
repo = "BugStalker";
rev = "v${finalAttrs.version}";
hash = "sha256-c3NyYDz+Ha5jHTpXLw9xsY+h0NjW9Uvpyn2PStmahKA=";
};
cargoHash = "sha256-/FSV/avsg7kbgtinmKBb0+gemLFZdSE+A+tfLvtfNas=";
buildInputs = [ libunwind ];
nativeBuildInputs = [ pkg-config ];
# Tests require rustup.
doCheck = false;
meta = {
description = "Rust debugger for Linux x86-64";
homepage = "https://github.com/godzie44/BugStalker";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ jacg ];
mainProgram = "bs";
platforms = [ "x86_64-linux" ];
};
})

View File

@@ -0,0 +1,66 @@
{
lib,
stdenv,
fetchFromGitLab,
bubblewrap,
makeBinaryWrapper,
cmake,
pkg-config,
ninja,
grpc,
gbenchmark,
gtest,
protobuf,
glog,
nlohmann_json,
zlib,
openssl,
libuuid,
tomlplusplus,
fuse3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "buildbox";
version = "1.3.21";
src = fetchFromGitLab {
owner = "BuildGrid";
repo = "buildbox/buildbox";
tag = finalAttrs.version;
hash = "sha256-gZ4PnaIiMPh18Yy2120yIEaQaFpzGNnWXzS7Uw+n/+k=";
};
nativeBuildInputs = [
cmake
makeBinaryWrapper
ninja
pkg-config
];
buildInputs = [
bubblewrap
fuse3
gbenchmark
glog
grpc
gtest
libuuid
nlohmann_json
openssl
protobuf
tomlplusplus
zlib
];
postFixup = ''
wrapProgram $out/bin/buildbox-run --prefix PATH : ${lib.makeBinPath [ bubblewrap ]}
'';
meta = {
description = "Set of tools for remote worker build execution";
homepage = "https://gitlab.com/BuildGrid/buildbox/";
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ shymega ];
};
})

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "buildkit-nix";
version = "0.1.1";
src = fetchFromGitHub {
owner = "reproducible-containers";
repo = "buildkit-nix";
rev = "v${version}";
sha256 = "sha256-i8KQLLL36iP26jIj10fZLtYpS57Xni4eIQEJG4ixWy8=";
};
vendorHash = "sha256-SFsf2QOIuUQY5Zzshb2190pQtOBGEsELBRihOvHYVGA=";
env.CGO_ENABLED = 0;
ldflags = [
"-s"
"-w"
];
meta = with lib; {
description = "Nix frontend for BuildKit";
homepage = "https://github.com/reproducible-containers/buildkit-nix/";
license = licenses.asl20;
platforms = platforms.linux;
maintainers = with maintainers; [ lesuisse ];
mainProgram = "buildkit-nix";
};
}

View File

@@ -0,0 +1,43 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "buildkit";
version = "0.25.0";
src = fetchFromGitHub {
owner = "moby";
repo = "buildkit";
rev = "v${version}";
hash = "sha256-6BLu9wz/V0YSEEFelUMg1mYG6MxZgnkW4lwd5A+X90Q=";
};
vendorHash = null;
subPackages = [ "cmd/buildctl" ] ++ lib.optionals stdenv.hostPlatform.isLinux [ "cmd/buildkitd" ];
ldflags = [
"-s"
"-w"
"-X github.com/moby/buildkit/version.Version=${version}"
"-X github.com/moby/buildkit/version.Revision=${src.rev}"
];
doCheck = false;
meta = {
description = "Concurrent, cache-efficient, and Dockerfile-agnostic builder toolkit";
homepage = "https://github.com/moby/buildkit";
changelog = "https://github.com/moby/buildkit/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
developer-guy
vdemeester
];
mainProgram = "buildctl";
};
}

View File

@@ -0,0 +1,37 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "buildkite-agent-metrics";
version = "5.10.0";
__darwinAllowLocalNetworking = true;
outputs = [
"out"
"lambda"
];
src = fetchFromGitHub {
owner = "buildkite";
repo = "buildkite-agent-metrics";
rev = "v${version}";
hash = "sha256-QE4IY1yU8X1zG+jf7eBWiSjN3HvDqr2Avhs3Bub+xB0=";
};
vendorHash = "sha256-r088XQKYx0D0OVfz/nqhWL0LLCf4X13WqYikJKlLr3c=";
postInstall = ''
mkdir -p $lambda/bin
mv $out/bin/lambda $lambda/bin
'';
meta = with lib; {
description = "Command-line tool (and Lambda) for collecting Buildkite agent metrics";
homepage = "https://github.com/buildkite/buildkite-agent-metrics";
license = licenses.mit;
teams = [ teams.determinatesystems ];
};
}

View File

@@ -0,0 +1,86 @@
{
fetchFromGitHub,
lib,
buildGoModule,
makeWrapper,
coreutils,
git,
openssh,
bash,
gnused,
gnugrep,
gitUpdater,
nixosTests,
}:
buildGoModule rec {
pname = "buildkite-agent";
version = "3.89.0";
src = fetchFromGitHub {
owner = "buildkite";
repo = "agent";
rev = "v${version}";
hash = "sha256-5COo5vXecXLhYAy3bcaYvmluFdfEKGgiTbhat8T3AV8=";
};
vendorHash = "sha256-iYc/TWiUFdlgoGB4r/L28yhwQG7g+tBG8usB77JJncM=";
postPatch = ''
substituteInPlace clicommand/agent_start.go --replace /bin/bash ${bash}/bin/bash
'';
nativeBuildInputs = [ makeWrapper ];
doCheck = false;
# buildkite-agent expects the `buildVersion` variable to be set to something
# other than its sentinel, otherwise the agent will not work correctly as of
# https://github.com/buildkite/agent/pull/3123
ldflags = [
"-X github.com/buildkite/agent/v3/version.buildNumber=nix"
];
postInstall = ''
# Fix binary name
mv $out/bin/{agent,buildkite-agent}
# These are runtime dependencies
wrapProgram $out/bin/buildkite-agent \
--prefix PATH : '${
lib.makeBinPath [
openssh
git
coreutils
gnused
gnugrep
]
}'
'';
passthru = {
tests.smoke-test = nixosTests.buildkite-agents;
updateScript = gitUpdater {
rev-prefix = "v";
};
};
meta = with lib; {
description = "Build runner for buildkite.com";
longDescription = ''
The buildkite-agent is a small, reliable, and cross-platform build runner
that makes it easy to run automated builds on your own infrastructure.
Its main responsibilities are polling buildkite.com for work, running
build jobs, reporting back the status code and output log of the job,
and uploading the job's artifacts.
'';
homepage = "https://buildkite.com/docs/agent";
license = licenses.mit;
maintainers = with maintainers; [
pawelpacana
zimbatm
jsoo1
techknowlogick
];
platforms = with platforms; unix ++ darwin;
};
}

View File

@@ -0,0 +1,41 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "buildkite-cli";
version = "3.13.0";
src = fetchFromGitHub {
owner = "buildkite";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-SX80Hw9iaYvdrprI/Y1lYXTaKeGTkeVIBk2UujB//cs=";
};
vendorHash = "sha256-9doJSApHYYU9GrXi++WIqtUP743mZeRUCuy2xqO/kGo=";
doCheck = false;
postPatch = ''
patchShebangs .buildkite/steps/{lint,run-local}.sh
'';
subPackages = [ "cmd/bk" ];
ldflags = [
"-s"
"-w"
"-X main.VERSION=${version}"
];
meta = with lib; {
description = "Command line interface for Buildkite";
homepage = "https://github.com/buildkite/cli";
license = licenses.mit;
maintainers = with maintainers; [ groodt ];
mainProgram = "bk";
};
}

View File

@@ -0,0 +1,50 @@
{
lib,
stdenv,
buildGoModule,
fetchFromGitHub,
installShellFiles,
}:
let
pname = "pack";
version = "0.37.0";
in
buildGoModule {
inherit pname version;
src = fetchFromGitHub {
owner = "buildpacks";
repo = "pack";
rev = "refs/tags/v${version}";
hash = "sha256-QCN0UvWa5u9XX5LvY3yD8Xz2s1XzZUg/WXnAfWwZnY0=";
};
vendorHash = "sha256-W8FTk2eJYaTE9gCRwrT+mDhda/ZZeCytqQ9vvVZZHSQ=";
nativeBuildInputs = [ installShellFiles ];
subPackages = [ "cmd/pack" ];
ldflags = [
"-s"
"-w"
"-X github.com/buildpacks/pack.Version=${version}"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd pack \
--zsh $(PACK_HOME=$PWD $out/bin/pack completion --shell zsh) \
--bash $(PACK_HOME=$PWD $out/bin/pack completion --shell bash) \
--fish $(PACK_HOME=$PWD $out/bin/pack completion --shell fish)
'';
meta = {
homepage = "https://buildpacks.io/";
changelog = "https://github.com/buildpacks/pack/releases/tag/v${version}";
description = "CLI for building apps using Cloud Native Buildpacks";
mainProgram = "pack";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ momeemt ];
};
}

View File

@@ -0,0 +1,141 @@
{
lib,
python3Packages,
fetchFromGitHub,
fetchpatch,
# buildInputs
buildbox,
fuse3,
lzip,
patch,
# tests
addBinToPathHook,
gitMinimal,
versionCheckHook,
# Optional features
enableBuildstreamPlugins ? true,
}:
python3Packages.buildPythonApplication rec {
pname = "buildstream";
version = "2.5.0";
pyproject = true;
src = fetchFromGitHub {
owner = "apache";
repo = "buildstream";
tag = version;
hash = "sha256-/kGmAHx10//iVeqLXwcIWNI9FGIi0LlNJW+s6v0yU3Q=";
};
# FIXME: To be removed in v2.6.0 of Buildstream.
patches = [
(fetchpatch {
url = "https://github.com/apache/buildstream/commit/9c4378ab2ec71b6b79ef90ee4bd950dd709a0310.patch?full_index=1";
hash = "sha256-po3Dn7gCv7o7h3k8qhmoH/b6Vv6ikKO/pkA20RvdU1g=";
})
(fetchpatch {
url = "https://github.com/apache/buildstream/commit/456a464b2581c52cad2b0b48596f5c19ad1db23f.patch?full_index=1";
hash = "sha256-0oFENx4AUhd1uJxRzbKzO5acGDosCc4vFJaSJ6urvhk=";
})
];
build-system = with python3Packages; [
cython
pdm-pep517
setuptools
setuptools-scm
];
dependencies = [
buildbox
]
++ (with python3Packages; [
click
dulwich
grpcio
jinja2
markupsafe
packaging
pluginbase
protobuf
psutil
pyroaring
requests
ruamel-yaml
ruamel-yaml-clib
tomlkit
ujson
])
++ lib.optionals enableBuildstreamPlugins [
python3Packages.buildstream-plugins
];
buildInputs = [
fuse3
lzip
patch
];
pythonImportsCheck = [ "buildstream" ];
nativeCheckInputs = [
addBinToPathHook
buildbox
gitMinimal
python3Packages.pexpect
python3Packages.pyftpdlib
python3Packages.pytest-datafiles
python3Packages.pytest-env
python3Packages.pytest-timeout
python3Packages.pytest-xdist
python3Packages.pytestCheckHook
versionCheckHook
];
disabledTests = [
# ValueError: Unexpected comparison between all and ''
"test_help"
# Error loading project: project.conf [line 37 column 2]: Failed to load source-mirror plugin 'mirror': No package metadata was found for sample-plugins
"test_source_mirror_plugin"
# AssertionError: assert '1a5528cad211...0bbe5ee314c14' == '2ccfee62a657...52dbc47203a88'
"test_fixed_cas_import"
"test_random_cas_import"
# Runtime error: The FUSE stager child process unexpectedly died with exit code 2
"test_patch_sources_cached_1"
"test_patch_sources_cached_2"
"test_source_cache_key"
"test_custom_transform_source"
# Blob not found in the local CAS
"test_source_pull_partial_fallback_fetch"
# FAILED tests/sources/tar.py::test_out_of_basedir_hardlinks - AssertionError
# FIXME: To be removed in v2.6.0 of Buildstream.
"test_out_of_basedir_hardlinks"
];
disabledTestPaths = [
# FileNotFoundError: [Errno 2] No such file or directory: '/build/source/tmp/popen-gw1/test_report_when_cascache_exit0/buildbox-casd'
"tests/internals/cascache.py"
];
versionCheckProgram = "${placeholder "out"}/bin/bst";
versionCheckProgramArg = "--version";
meta = {
description = "Powerful software integration tool";
downloadPage = "https://buildstream.build/install.html";
homepage = "https://buildstream.build";
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
mainProgram = "bst";
maintainers = with lib.maintainers; [ shymega ];
};
}

View File

@@ -0,0 +1,23 @@
{
lib,
stdenv,
fetchurl,
}:
stdenv.mkDerivation rec {
pname = "buildtorrent";
version = "0.8";
src = fetchurl {
url = "https://mathr.co.uk/blog/code/${pname}-${version}.tar.gz";
sha256 = "sha256-6OJ2R72ziHOsVw1GwalompKwG7Z/WQidHN0IeE9wUtA=";
};
meta = with lib; {
description = "Simple commandline torrent creator";
homepage = "https://mathr.co.uk/blog/torrent.html";
license = licenses.gpl3Plus;
platforms = platforms.all;
mainProgram = "buildtorrent";
};
}

View File

@@ -0,0 +1,96 @@
{
lib,
python3,
fetchFromGitHub,
withServer ? false,
}:
let
serverRequire = with python3.pkgs; [
requests
flask
flask-admin
flask-api
flask-bootstrap
flask-paginate
flask-wtf
arrow
werkzeug
click
vcrpy
toml
];
in
with python3.pkgs;
buildPythonApplication rec {
version = "5.0";
pname = "buku";
pyproject = true;
src = fetchFromGitHub {
owner = "jarun";
repo = "buku";
tag = "v${version}";
sha256 = "sha256-b3j3WLMXl4sXZpIObC+F7RRpo07cwJpAK7lQ7+yIzro=";
};
nativeBuildInputs = [
setuptools
];
nativeCheckInputs = [
hypothesis
pytestCheckHook
pytest-recording
pyyaml
mypy-extensions
click
pylint
flake8
pytest-cov-stub
pyyaml
];
propagatedBuildInputs = [
cryptography
beautifulsoup4
certifi
urllib3
html5lib
]
++ lib.optionals withServer serverRequire;
preCheck = ''
# Disables a test which requires internet
substituteInPlace tests/test_bukuDb.py \
--replace "@pytest.mark.slowtest" "@unittest.skip('skipping')" \
--replace "self.assertEqual(shorturl, \"http://tny.im/yt\")" "" \
--replace "self.assertEqual(url, \"https://www.google.com\")" ""
substituteInPlace setup.py \
--replace mypy-extensions==0.4.1 mypy-extensions>=0.4.1
''
+ lib.optionalString (!withServer) ''
rm tests/test_{server,views}.py
'';
postInstall = ''
make install PREFIX=$out
mkdir -p $out/share/zsh/site-functions $out/share/bash-completion/completions $out/share/fish/vendor_completions.d
cp auto-completion/zsh/* $out/share/zsh/site-functions
cp auto-completion/bash/* $out/share/bash-completion/completions
cp auto-completion/fish/* $out/share/fish/vendor_completions.d
''
+ lib.optionalString (!withServer) ''
rm $out/bin/bukuserver
'';
meta = with lib; {
description = "Private cmdline bookmark manager";
mainProgram = "buku";
homepage = "https://github.com/jarun/Buku";
license = licenses.gpl3;
platforms = platforms.unix;
maintainers = with maintainers; [ matthiasbeyer ];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
rustPlatform,
fetchFromGitHub,
sqlite,
}:
let
manifest = {
description = "Bukubrow extension host application";
name = "com.samhh.bukubrow";
path = "@out@/bin/bukubrow";
type = "stdio";
};
in
rustPlatform.buildRustPackage rec {
pname = "bukubrow-host";
version = "5.4.0";
src = fetchFromGitHub {
owner = "SamHH";
repo = "bukubrow-host";
rev = "v${version}";
sha256 = "sha256-xz5Agsm+ATQXXgpPGN4EQ00i1t8qUlrviNHauVdCu4U=";
};
cargoHash = "sha256-mCPJE9WW14NtahbMnDcE+0xXl5w25dzerPy3wv78l20=";
buildInputs = [ sqlite ];
passAsFile = [
"firefoxManifest"
"chromeManifest"
];
firefoxManifest = builtins.toJSON (
manifest
// {
allowed_extensions = [ "bukubrow@samhh.com" ];
}
);
chromeManifest = builtins.toJSON (
manifest
// {
allowed_origins = [ "chrome-extension://ghniladkapjacfajiooekgkfopkjblpn/" ];
}
);
postBuild = ''
substituteAll $firefoxManifestPath firefox.json
substituteAll $chromeManifestPath chrome.json
'';
postInstall = ''
install -Dm0644 firefox.json $out/lib/mozilla/native-messaging-hosts/com.samhh.bukubrow.json
install -Dm0644 chrome.json $out/etc/chromium/native-messaging-hosts/com.samhh.bukubrow.json
'';
meta = with lib; {
description = "WebExtension for Buku, a command-line bookmark manager";
homepage = "https://github.com/SamHH/bukubrow-host";
license = licenses.gpl3;
maintainers = [ ];
mainProgram = "bukubrow";
};
}

View File

@@ -0,0 +1,79 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
exiv2,
flex,
libewf,
libxml2,
openssl,
zlib,
pkg-config,
python310,
re2,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "bulk_extractor";
version = "2.1.1";
src = fetchFromGitHub {
owner = "simsong";
repo = "bulk_extractor";
tag = "v${finalAttrs.version}";
hash = "sha256-Jj/amXESFBu/ZaiIRlDKmtWTBVQ2TEvOM2jBYP3y1L8=";
fetchSubmodules = true;
};
enableParallelBuilding = true;
nativeBuildInputs = [
pkg-config
python310
autoreconfHook
];
buildInputs = [
exiv2
flex
libewf
libxml2
openssl
zlib
re2
];
preAutoreconf = ''
python3 etc/makefile_builder.py
autoheader -f
aclocal -I m4
'';
postPatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
substituteInPlace src/be20_api/feature_recorder_set.cpp --replace-fail '#warn ' '#warning '
'';
meta = with lib; {
description = "Digital forensics tool for extracting information from file systems";
longDescription = ''
bulk_extractor is a C++ program that scans a disk image, a file, or a
directory of files and extracts useful information without parsing
the file system or file system structures. The results are stored in
feature files that can be easily inspected, parsed, or processed with
automated tools.
'';
mainProgram = "bulk_extractor";
homepage = "https://github.com/simsong/bulk_extractor";
downloadPage = "http://downloads.digitalcorpora.org/downloads/bulk_extractor/";
changelog = "https://github.com/simsong/bulk_extractor/blob/${finalAttrs.src.rev}/ChangeLog";
maintainers = with maintainers; [ d3vil0p3r ];
platforms = with platforms; unix ++ windows;
license = with licenses; [
mit
cpl10
gpl3Only
lgpl21Only
lgpl3Only
licenses.openssl
];
};
})

View File

@@ -0,0 +1,74 @@
{
stdenv,
lib,
fetchFromGitHub,
wrapGAppsHook3,
python3,
gobject-introspection,
gsettings-desktop-schemas,
gettext,
gtk3,
glib,
common-licenses,
}:
stdenv.mkDerivation rec {
pname = "bulky";
version = "3.9";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "bulky";
tag = version;
hash = "sha256-LrArLx0AOEaeAvLBVhV9ho5H+qeiaBfjs8+iV5W9u+w=";
};
nativeBuildInputs = [
wrapGAppsHook3
gsettings-desktop-schemas
gettext
gobject-introspection
];
buildInputs = [
(python3.withPackages (
p: with p; [
pygobject3
setproctitle
unidecode
]
))
gsettings-desktop-schemas
gtk3
glib
];
postPatch = ''
substituteInPlace usr/lib/bulky/bulky.py \
--replace "/usr/share/locale" "$out/share/locale" \
--replace /usr/share/bulky "$out/share/bulky" \
--replace /usr/share/common-licenses "${common-licenses}/share/common-licenses" \
--replace __DEB_VERSION__ "${version}"
'';
installPhase = ''
runHook preInstall
chmod +x usr/share/applications/*
cp -ra usr $out
ln -sf $out/lib/bulky/bulky.py $out/bin/bulky
runHook postInstall
'';
postInstall = ''
glib-compile-schemas $out/share/glib-2.0/schemas
'';
meta = with lib; {
description = "Bulk rename app";
mainProgram = "bulky";
homepage = "https://github.com/linuxmint/bulky";
license = licenses.gpl3Plus;
platforms = platforms.linux;
teams = [ teams.cinnamon ];
};
}

View File

@@ -0,0 +1,22 @@
commit a5d3497577c78b03c05c69d17df972fa9fb54f53
Author: Linus Heckemann <git@sphalerite.org>
Date: Fri Jan 5 23:57:09 2018 +0100
Add -Wno-narrowing to GWEN's CMakeLists
This avoids the compilation issue that occurs on aarch64 with gcc6.
(nixpkgs-specific patch)
diff --git a/examples/ThirdPartyLibs/Gwen/CMakeLists.txt b/examples/ThirdPartyLibs/Gwen/CMakeLists.txt
index 82fa0ffba..26c4bbd37 100644
--- a/examples/ThirdPartyLibs/Gwen/CMakeLists.txt
+++ b/examples/ThirdPartyLibs/Gwen/CMakeLists.txt
@@ -15,7 +15,7 @@ IF(NOT WIN32 AND NOT APPLE)
ADD_DEFINITIONS("-DDYNAMIC_LOAD_X11_FUNCTIONS=1")
ENDIF()
-ADD_DEFINITIONS( -DGLEW_STATIC -DGWEN_COMPILE_STATIC -D_HAS_EXCEPTIONS=0 -D_STATIC_CPPLIB )
+ADD_DEFINITIONS( -DGLEW_STATIC -DGWEN_COMPILE_STATIC -D_HAS_EXCEPTIONS=0 -D_STATIC_CPPLIB -Wno-narrowing )
FILE(GLOB gwen_SRCS "*.cpp" "Controls/*.cpp" "Controls/Dialog/*.cpp" "Controls/Dialogs/*.cpp" "Controls/Layout/*.cpp" "Controls/Property/*.cpp" "Input/*.cpp" "Platforms/*.cpp" "Renderers/*.cpp" "Skins/*.cpp")
FILE(GLOB gwen_HDRS "*.h" "Controls/*.h" "Controls/Dialog/*.h" "Controls/Dialogs/*.h" "Controls/Layout/*.h" "Controls/Property/*.h" "Input/*.h" "Platforms/*.h" "Renderers/*.h" "Skins/*.h")

View File

@@ -0,0 +1,58 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
libGLU,
libGL,
libglut,
}:
stdenv.mkDerivation {
pname = "bullet";
version = "2019-03-27";
src = fetchFromGitHub {
owner = "olegklimov";
repo = "bullet3";
# roboschool needs the HEAD of a specific branch of this fork, see
# https://github.com/openai/roboschool/issues/126#issuecomment-421643980
# https://github.com/openai/roboschool/pull/62
# https://github.com/openai/roboschool/issues/124
rev = "3687507ddc04a15de2c5db1e349ada3f2b34b3d6";
sha256 = "1wd7vj9136dl7lfb8ll0rc2fdl723y3ls9ipp7657yfl2xrqhvkb";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
libGLU
libGL
libglut
];
patches = [ ./gwen-narrowing.patch ];
cmakeFlags = [
"-DBUILD_SHARED_LIBS=ON"
"-DBUILD_CPU_DEMOS=OFF"
"-DINSTALL_EXTRA_LIBS=ON"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
"-DBUILD_BULLET2_DEMOS=OFF"
"-DBUILD_UNIT_TESTS=OFF"
];
meta = with lib; {
description = "Professional free 3D Game Multiphysics Library";
longDescription = ''
Bullet 3D Game Multiphysics Library provides state of the art collision
detection, soft body and rigid body dynamics.
'';
homepage = "http://bulletphysics.org";
license = licenses.zlib;
platforms = platforms.unix;
# /tmp/nix-build-bullet-2019-03-27.drv-0/source/src/Bullet3Common/b3Vector3.h:297:7: error: argument value 10880 is outside the valid range [0, 255] [-Wargument-outside-range]
# y = b3_splat_ps(y, 0x80);
broken = (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64);
};
}

View File

@@ -0,0 +1,67 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
cmake,
libGLU,
libGL,
libglut,
}:
stdenv.mkDerivation rec {
pname = "bullet";
version = "3.25";
src = fetchFromGitHub {
owner = "bulletphysics";
repo = "bullet3";
tag = version;
sha256 = "sha256-AGP05GoxLjHqlnW63/KkZe+TjO3IKcgBi+Qb/osQuCM=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [
libGLU
libGL
libglut
];
patches = [
# fix for CMake v4, merged upstream
(fetchpatch {
url = "https://github.com/bulletphysics/bullet3/commit/d1a4256b3a019117f2bb6cb8c63d6367aaf512e2.patch";
hash = "sha256-FklMKYw5dKUcR5kZOkqv+KVLcWL/7r/0SAdYolmrn5A=";
})
];
postPatch = ''
substituteInPlace examples/ThirdPartyLibs/Gwen/CMakeLists.txt \
--replace "-DGLEW_STATIC" "-DGLEW_STATIC -Wno-narrowing"
'';
cmakeFlags = [
"-DBUILD_SHARED_LIBS=ON"
"-DBUILD_CPU_DEMOS=OFF"
"-DINSTALL_EXTRA_LIBS=ON"
]
++ lib.optionals stdenv.hostPlatform.isDarwin [
"-DBUILD_BULLET2_DEMOS=OFF"
"-DBUILD_UNIT_TESTS=OFF"
"-DBUILD_BULLET_ROBOTICS_GUI_EXTRA=OFF"
];
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=argument-outside-range -Wno-error=c++11-narrowing";
meta = with lib; {
description = "Professional free 3D Game Multiphysics Library";
longDescription = ''
Bullet 3D Game Multiphysics Library provides state of the art collision
detection, soft body and rigid body dynamics.
'';
homepage = "http://bulletphysics.org";
license = licenses.zlib;
maintainers = with maintainers; [ aforemny ];
platforms = platforms.unix;
};
}

View File

@@ -0,0 +1,92 @@
{
lib,
stdenv,
fetchpatch,
fetchurl,
bison,
perl,
}:
let
version = "0.0.6";
debianRevision = "7";
debianPatch =
patchname: hash:
fetchpatch {
name = "${patchname}.patch";
url = "https://sources.debian.org/data/main/b/bulletml/${version}-${debianRevision}/debian/patches/${patchname}.patch";
sha256 = hash;
};
lib_src = fetchurl {
url = "http://shinh.skr.jp/libbulletml/libbulletml-${version}.tar.bz2";
sha256 = "0yda0zgj2ydgkmby5676f5iiawabxadzh5p7bmy42998sp9g6dvw";
};
cpp_src = fetchurl {
url = "http://shinh.skr.jp/d/d_cpp.tar.bz2";
sha256 = "1ly9qmbb8q9nyadmdap1gmxs3vkniqgchlv2hw7riansz4gg1agh";
};
in
stdenv.mkDerivation {
pname = "bulletml";
inherit version;
srcs = [
lib_src
cpp_src
];
postUnpack = "mv d_cpp bulletml/";
sourceRoot = "bulletml";
patches = [
(debianPatch "fixes" "0cnr968n0h50fjmjijx7idsa2pg2pv5cwy6nvfbkx9z8w2zf0mkl")
(debianPatch "bulletml_d" "03d1dgln3gkiw019pxn3gwgjkmvzisq8kp3n6fpn38yfwh4fp4hv")
(debianPatch "d_cpp" "04g9c7c89w7cgrxw75mcbdhzxqmz1716li49mhl98znakchrlb9h")
(debianPatch "warnings" "18px79x4drvm6dy6w6js53nzlyvha7qaxhz5a99b97pyk3qc7i9g")
(debianPatch "makefile" "0z6yxanxmarx0s08gh12pk2wfqjk8g797wmfcqczdv1i6xc7nqzp")
(debianPatch "includes" "1n11j5695hs9pspslf748w2cq5d78s6bwhyl476wp6gcq6jw20bw")
];
makeFlags = [
"-C src"
];
nativeBuildInputs = [
bison
perl
];
hardeningDisable = [ "format" ];
installPhase = ''
install -D -m 644 src/bulletml.d "$out"/include/d/bulletml.d
install -d "$out"/include/bulletml/tinyxml
install -m 644 src/*.h "$out"/include/bulletml
install -m 644 src/tinyxml/tinyxml.h "$out"/include/bulletml/tinyxml
cp -r src/boost $out/include/boost
install -d "$out"/lib
install -m 644 src/libbulletml.{a,so}* "$out"/lib
install -D -m 644 README "$out"/share/doc/libbulletml/README.jp
install -m 644 README.en "$out"/share/doc/libbulletml
install -m 644 README.bulletml "$out"/share/doc/libbulletml
install -D -m 644 README "$out"/share/licenses/libbulletml/README.jp
install -m 644 README.en "$out"/share/licenses/libbulletml
'';
meta = with lib; {
description = "C++ library to handle BulletML easily";
longDescription = ''
BulletML is the Bullet Markup Language. BulletML can describe the barrage
of bullets in shooting games.
'';
homepage = "http://www.asahi-net.or.jp/~cs8k-cyu/bulletml/index_e.html";
license = licenses.bsd3;
maintainers = with maintainers; [ fgaz ];
# See https://github.com/NixOS/nixpkgs/pull/35482
# for some attempts in getting it to build on darwin
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
pkgs,
fetchFromGitHub,
rustPlatform,
nix-update-script,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bulletty";
version = "0.1.7";
src = fetchFromGitHub {
owner = "CrociDB";
repo = "bulletty";
tag = "v${finalAttrs.version}";
hash = "sha256-ceXHrsxUSDx4orlHTOdynYKDID/uvp8NxVMei1EqDA8=";
};
cargoHash = "sha256-vhZaklpNIGSMRSjD+WINphMVsAcepUJfw9WBnaxoK4c=";
# perl is required for bulletty package build for openssl
nativeBuildInputs = with pkgs; [
perl
];
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
passthru.updateScript = nix-update-script { };
meta = {
description = "bulletty is a feed reader for the terminal";
homepage = "https://bulletty.croci.dev/";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.FKouhai ];
};
})

View File

@@ -0,0 +1,63 @@
{
lib,
fetchFromGitHub,
rustPlatform,
fetchurl,
stdenv,
}:
let
# svm-rs-builds requires a list of solc versions to build, and would make network calls if not provided.
# The ethereum project does not provide static binaries for aarch64, so we use separate sources, the same as in
# svm-rs's source code.
solc-versions = {
x86_64-linux = fetchurl {
url = "https://raw.githubusercontent.com/ethereum/solc-bin/bdd7dd3fda6e4a00c0697d891a1a7ae9f2b3a5fd/linux-amd64/list.json";
hash = "sha256-H6D6XbIw5sDZlbc2c51vIMRmOqs2nDIcaNzCaOvnLsw=";
};
x86_64-darwin = fetchurl {
url = "https://raw.githubusercontent.com/ethereum/solc-bin/bdd7dd3fda6e4a00c0697d891a1a7ae9f2b3a5fd/macosx-amd64/list.json";
hash = "sha256-A3A6gtNb129tD5KC0tCXvlzQ11t5SrNrX8tQeq73+mY=";
};
aarch64-linux = fetchurl {
url = "https://raw.githubusercontent.com/nikitastupin/solc/99b5867237b37952d372e0dab400d6788feda315/linux/aarch64/list.json";
hash = "sha256-u6WRAcnR9mN9ERfFdLOxxSc9ASQIQvmS8uG+Z4H6OAU=";
};
aarch64-darwin = fetchurl {
url = "https://raw.githubusercontent.com/alloy-rs/solc-builds/e4b80d33bc4d015b2fc3583e217fbf248b2014e1/macosx/aarch64/list.json";
hash = "sha256-h0B1g7x80jU9iCFCMYw+HlmdKQt1wfhIkV5W742kw6w=";
};
};
in
rustPlatform.buildRustPackage rec {
pname = "bulloak";
version = "0.8.1";
src = fetchFromGitHub {
owner = "alexfertel";
repo = "bulloak";
rev = "v${version}";
hash = "sha256-8Qp8ceafAkw7Tush/dvBl27q5oNDzbOqyvSLXhjf4fo=";
};
cargoHash = "sha256-yaRaB3U8Wxhp7SK5E44CF8AudhG7ar7L5ey+CRVfYqc=";
# tests run in CI on the source repo
doCheck = false;
# provide the list of solc versions to the `svm-rs-builds` dependency
SVM_RELEASES_LIST_JSON =
solc-versions.${stdenv.hostPlatform.system}
or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
meta = {
description = "Solidity test generator based on the Branching Tree Technique";
homepage = "https://github.com/alexfertel/bulloak";
license = with lib.licenses; [
mit
asl20
];
mainProgram = "bulloak";
maintainers = with lib.maintainers; [ beeb ];
};
}

View File

@@ -0,0 +1,45 @@
{
lib,
stdenvNoCC,
fetchFromGitHub,
gawk,
nix-update-script,
}:
stdenvNoCC.mkDerivation {
pname = "bullshit";
version = "0-unstable-2018-05-28";
src = fetchFromGitHub {
owner = "fceschmidt";
repo = "bullshit-arch";
rev = "d65e4bbbea76bb752842c2c464154a7b417783fa";
hash = "sha256-sqtQDaWtfhn9XYRsF8lVLHYb+7o9Hf7rLKsX6dw3Sh4=";
};
installPhase = ''
runHook preInstall
install -Dm555 src/bullshit -t $out/bin
install -Dm444 src/bullshit_lib $out/share/wordlists/bullshit.txt
runHook postInstall
'';
fixupPhase = ''
runHook preFixup
patchShebangs $out/bin/bullshit
substituteInPlace $out/bin/bullshit \
--replace /usr/lib/bullshit $out/share/wordlists/bullshit.txt \
--replace awk '${gawk}/bin/awk'
runHook postFixup
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Nonsense phrase generator";
mainProgram = "bullshit";
homepage = "https://github.com/fceschmidt/bullshit-arch";
license = licenses.gpl2Only;
maintainers = with maintainers; [ krloer ];
inherit (gawk.meta) platforms;
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
libpcap,
}:
stdenv.mkDerivation rec {
pname = "bully";
version = "1.4-00";
src = fetchFromGitHub {
owner = "kimocoder";
repo = "bully";
tag = version;
sha256 = "1n2754a5z44g414a0hj3cmi9q5lwnzyvmvzskrj2nci8c8m2kgnf";
};
buildInputs = [ libpcap ];
enableParallelBuilding = true;
sourceRoot = "${src.name}/src";
installPhase = ''
install -Dm555 -t $out/bin bully
install -Dm444 -t $out/share/doc/${pname} ../*.md
'';
meta = with lib; {
description = "Retrieve WPA/WPA2 passphrase from a WPS enabled access point";
homepage = "https://github.com/kimocoder/bully";
license = licenses.gpl3;
maintainers = with maintainers; [ edwtjo ];
platforms = platforms.linux;
mainProgram = "bully";
};
}

View File

@@ -0,0 +1,90 @@
{
pkgs,
lib,
glibcLocales,
python3,
fetchpatch,
fetchFromGitHub,
# Usage: bumblebee-status.override { plugins = p: [p.arandr p.bluetooth2]; };
plugins ? p: [ ],
}:
let
version = "2.2.0";
# { <name> = { name = "..."; propagatedBuildInputs = [ ... ]; buildInputs = [ ... ]; } }
allPlugins = lib.mapAttrs (name: value: value // { inherit name; }) (
import ./plugins.nix { inherit pkgs python3; }
);
# [ { name = "..."; propagatedBuildInputs = [ ... ]; buildInputs = [ ... ]; } ]
selectedPlugins = plugins allPlugins;
in
python3.pkgs.buildPythonPackage {
pname = "bumblebee-status";
inherit version;
format = "pyproject";
src = fetchFromGitHub {
owner = "tobi-wan-kenobi";
repo = "bumblebee-status";
rev = "v${version}";
hash = "sha256-+RCg2XZv0AJnexi7vnQhEXB1qSoKBN1yKWm3etdys1s=";
};
patches = [
# fix build with Python 3.12
# https://github.com/tobi-wan-kenobi/bumblebee-status/pull/1019
(fetchpatch {
url = "https://github.com/tobi-wan-kenobi/bumblebee-status/commit/2fe8f1ff1444daf155b18318005f33a76a5d64b4.patch";
hash = "sha256-BC1cgQDMJkhuEgq8NJ28521CHbEfqIMueHkFXXlZz2w=";
})
];
build-system = with python3.pkgs; [
setuptools
];
buildInputs = lib.concatMap (p: p.buildInputs or [ ]) selectedPlugins;
propagatedBuildInputs = lib.concatMap (p: p.propagatedBuildInputs or [ ]) selectedPlugins;
nativeCheckInputs = with python3.pkgs; [
freezegun
netifaces
psutil
pytest
pytest-mock
requests
];
checkPhase = ''
runHook preCheck
# Fixes `locale.Error: unsupported locale setting` in some tests.
export LOCALE_ARCHIVE="${glibcLocales}/lib/locale/locale-archive";
# FIXME: We skip the `dunst` module tests, some of which fail with
# `RuntimeError: killall -s SIGUSR2 dunst not found`.
# This is not solved by adding `pkgs.killall` to `checkInputs`.
${python3.interpreter} -m pytest -k 'not test_dunst.py'
runHook postCheck
'';
postInstall = ''
# Remove binary cache files
find $out -name "__pycache__" -type d | xargs rm -rv
# Make themes available for bumblebee-status to detect them
cp -r ./themes $out/${python3.sitePackages}
'';
meta = with lib; {
description = "Modular, theme-able status line generator for the i3 window manager";
homepage = "https://github.com/tobi-wan-kenobi/bumblebee-status";
mainProgram = "bumblebee-status";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ jamerrq ];
};
}

View File

@@ -0,0 +1,211 @@
{
pkgs,
python3,
...
}:
# propagatedBuildInputs are for Python libraries and executables
# buildInputs are for libraries
let
py = python3.pkgs;
in
{
amixer.propagatedBuildInputs = [ pkgs.alsa-utils ];
# aptitude is unpackaged
# apt.propagatedBuildInputs = [aptitude];
arandr.propagatedBuildInputs = [
py.tkinter
pkgs.arandr
pkgs.xorg.xrandr
];
# checkupdates is unpackaged
# arch-update.propagatedBuildInputs = [checkupdates];
# checkupdates is unpackaged
# arch_update.propagatedBuildInputs = [checkupdates];
# yay is unpackaged
# aur-update.propagatedBuildInputs = [yay];
battery = { };
battery-upower = { };
battery_upower = { };
bluetooth.propagatedBuildInputs = [
pkgs.bluez
pkgs.blueman
pkgs.dbus
];
bluetooth2.propagatedBuildInputs = [
pkgs.bluez
pkgs.blueman
pkgs.dbus
py.dbus-python
];
blugon.propagatedBuildInputs = [ pkgs.blugon ];
# If you do not allow this plugin to query the system's ACPI, i.e. the plugin option `use_acpi` is set to `False`, then you need at least one of [ brightnessctl light xbacklight ]
brightness.propagatedBuildInputs = [ ];
caffeine.propagatedBuildInputs = [
pkgs.xdg-utils
pkgs.xdotool
pkgs.xorg.xprop
pkgs.libnotify
];
cmus.propagatedBuildInputs = [ pkgs.cmus ];
cpu.propagatedBuildInputs = [
py.psutil
pkgs.gnome-system-monitor
];
cpu2.propagatedBuildInputs = [
py.psutil
pkgs.lm_sensors
];
cpu3.propagatedBuildInputs = [
py.psutil
pkgs.lm_sensors
];
currency.propagatedBuildInputs = [ py.requests ];
date = { };
datetime = { };
datetimetz.propagatedBuildInputs = [
py.tzlocal
py.pytz
];
datetz = { };
deadbeef.propagatedBuildInputs = [ pkgs.deadbeef ];
debug = { };
deezer.propagatedBuildInputs = [ py.dbus-python ];
disk = { };
# dnf is unpackaged
# dnf.propagatedBuildInputs = [dnf];
docker_ps.propagatedBuildInputs = [ py.docker ];
dunst.propagatedBuildInputs = [ pkgs.dunst ];
dunstctl.propagatedBuildInputs = [ pkgs.dunst ];
# emerge is unpackaged
# emerge_status.propagatedBuildInputs = [emerge];
error = { };
gcalendar.propagatedBuildInputs = [
py.google-api-python-client
py.google-auth-httplib2
py.google-auth-oauthlib
];
getcrypto.propagatedBuildInputs = [ py.requests ];
git.propagatedBuildInputs = [
pkgs.xcwd
pkgs.pygit2
];
github.propagatedBuildInputs = [ py.requests ];
gitlab.propagatedBuildInputs = [ py.requests ];
# gpmdp-remote is unpackaged
# gpmdp.propagatedBuildInputs = [gpmdp-remote];
hddtemp = { };
hostname = { };
http_status = { };
indicator.propagatedBuildInputs = [ pkgs.xorg.xset ];
kernel = { };
keys = { };
# python3Packages.xkbgroup is unpackaged
layout = {
buildInputs = [ pkgs.xorg.libX11 ];
# propagatedBuildInputs = [py.xkbgroup];
};
# python3Packages.xkbgroup is unpackaged
layout-xkb = {
buildInputs = [ pkgs.xorg.libX11 ];
# propagatedBuildInputs = [py.xkbgroup];
};
layout-xkbswitch.propagatedBuildInputs = [ pkgs.xkb-switch ];
# python3Packages.xkbgroup is unpackaged
# NOTE: Yes, there is also a plugin named `layout-xkb` with a dash.
layout_xkb = {
buildInputs = [ pkgs.xorg.libX11 ];
# propagatedBuildInputs = [python3Packages.xkbgroup];
};
# NOTE: Yes, there is also a plugin named `layout-xkbswitch` with a dash.
layout_xkbswitch.propagatedBuildInputs = [ pkgs.xkb-switch ];
libvirtvms.propagatedBuildInputs = [ py.libvirt ];
load.propagatedBuildInputs = [ pkgs.gnome-system-monitor ];
memory.propagatedBuildInputs = [ pkgs.gnome-system-monitor ];
messagereceiver = { };
mocp.propagatedBuildInputs = [ pkgs.moc ];
mpd.propagatedBuildInputs = [ pkgs.mpc ];
network.propagatedBuildInputs = [
py.netifaces
pkgs.iw
];
network_traffic.propagatedBuildInputs = [ py.netifaces ];
nic.propagatedBuildInputs = [
py.netifaces
pkgs.iw
];
notmuch_count.propagatedBuildInputs = [ pkgs.notmuch ];
# nvidian-smi is unpackaged
# nvidiagpu.propagatedBuildInputs = [nvidia-smi];
octoprint.propagatedBuildInputs = [ py.tkinter ];
# optimus-manager is unpackaged
# optman.propagatedBuildInputs = [optimus-manager];
pacman.propagatedBuildInputs = [
pkgs.fakeroot
pkgs.pacman
];
pamixer.propagatedBuildInputs = [ pkgs.pamixer ];
persian_date.propagatedBuildInputs = [ py.jdatetime ];
pihole = { };
ping.propagatedBuildInputs = [ pkgs.iputils ];
pipewire.buildInputs = [ pkgs.wireplumber ];
playerctl.propagatedBuildInputs = [ pkgs.playerctl ];
pomodoro = { };
# emerge is unpackaged
# portage_status.propagatedBuildInputs = [emerge];
# prime-select is unpackaged
# prime.propagatedBuildInputs = [prime-select];
progress.propagatedBuildInputs = [ pkgs.progress ];
publicip.propagatedBuildInputs = [ py.netifaces ];
# Deprecated in favor of pulsectl
# pulseaudio = {};
pulsectl.propagatedBuildInputs = [ pkgs.pulsectl ];
redshift.propagatedBuildInputs = [ pkgs.redshift ];
# rofication is unpackaged
# rofication.propagatedBuildInputs = [rofication];
rotation.propagatedBuildInputs = [ pkgs.xorg.xrandr ];
rss = { };
sensors.propagatedBuildInputs = [ pkgs.lm_sensors ];
sensors2.propagatedBuildInputs = [ pkgs.lm_sensors ];
shell = { };
shortcut = { };
smartstatus.propagatedBuildInputs = [ pkgs.smartmontools ];
solaar.propagatedBuildInputs = [ pkgs.solaar ];
spaceapi.propagatedBuildInputs = [ py.requests ];
spacer = { };
speedtest.propagatedBuildInputs = [ py.speedtest-cli ];
spotify.propagatedBuildInputs = [ py.dbus-python ];
stock = { };
# suntime is not packaged yet
# sun.propagatedBuildInputs = [ py.requests python-dateutil suntime ];
system.propagatedBuildInputs = [ py.tkinter ];
taskwarrior.propagatedBuildInputs = [ py.taskw ];
test = { };
thunderbird = { };
time = { };
timetz = { };
title.propagatedBuildInputs = [ py.i3ipc ];
todo = { };
todo_org = { };
todoist.propagatedBuildInputs = [ py.requests ];
traffic = { };
# Needs `systemctl`
twmn.propagatedBuildInputs = [ ];
uptime = { };
usage.propagatedBuildInputs = [
py.sqlite
pkgs.activitywatch
];
vault.propagatedBuildInputs = [ pkgs.pass ];
vpn.propagatedBuildInputs = [
py.tkinter
pkgs.networkmanager
];
wakatime.propagatedBuildInputs = [ py.requests ];
watson.propagatedBuildInputs = [ pkgs.watson ];
weather.propagatedBuildInputs = [ py.requests ];
xkcd = { };
# i3 is optional
xrandr.propagatedBuildInputs = [ pkgs.xorg.xrandr ];
yubikey.propagatedBuildInputs = [ pkgs.yubico ];
zpool = { };
}

View File

@@ -0,0 +1,80 @@
diff --git a/conf/xorg.conf.nouveau b/conf/xorg.conf.nouveau
index 87e48cb..60d6eaf 100644
--- a/conf/xorg.conf.nouveau
+++ b/conf/xorg.conf.nouveau
@@ -15,4 +15,5 @@ Section "Device"
# This Setting is needed on Ubuntu 13.04.
# BusID "PCI:01:00:0"
+@nouveauDeviceOptions@
EndSection
diff --git a/conf/xorg.conf.nvidia b/conf/xorg.conf.nvidia
index c3107f9..17072f4 100644
--- a/conf/xorg.conf.nvidia
+++ b/conf/xorg.conf.nvidia
@@ -29,6 +29,6 @@ Section "Device"
Option "ProbeAllGpus" "false"
Option "NoLogo" "true"
- Option "UseEDID" "false"
- Option "UseDisplayDevice" "none"
+
+@nvidiaDeviceOptions@
EndSection
diff --git a/src/bbsecondary.c b/src/bbsecondary.c
index 71a6b73..a682d8a 100644
--- a/src/bbsecondary.c
+++ b/src/bbsecondary.c
@@ -145,6 +145,23 @@ bool start_secondary(bool need_secondary) {
}
bb_log(LOG_INFO, "Starting X server on display %s.\n", bb_config.x_display);
+ const char mod_appends[] = X_MODULE_APPENDS;
+
+ char *mod_path;
+ int pathlen = strlen(bb_config.mod_path);
+ if (pathlen == 0) {
+ mod_path = mod_appends;
+ } else {
+ mod_path = malloc(pathlen + 1 + sizeof(mod_appends));
+ if (!mod_path) {
+ set_bb_error("Could not allocate memory for modules path\n");
+ return false;
+ }
+ strcpy(mod_path, bb_config.mod_path);
+ mod_path[pathlen] = ',';
+ strcpy(mod_path + pathlen + 1, mod_appends);
+ }
+
char *x_argv[] = {
XORG_BINARY,
bb_config.x_display,
@@ -153,24 +170,24 @@ bool start_secondary(bool need_secondary) {
"-sharevts",
"-nolisten", "tcp",
"-noreset",
+ "-logfile", "/var/log/X.bumblebee.log",
"-verbose", "3",
"-isolateDevice", pci_id,
- "-modulepath", bb_config.mod_path, // keep last
+ "-modulepath", mod_path,
NULL
};
enum {n_x_args = sizeof(x_argv) / sizeof(x_argv[0])};
- if (!*bb_config.mod_path) {
- x_argv[n_x_args - 3] = 0; //remove -modulepath if not set
- }
//close any previous pipe, if it (still) exists
if (bb_status.x_pipe[0] != -1){close(bb_status.x_pipe[0]); bb_status.x_pipe[0] = -1;}
if (bb_status.x_pipe[1] != -1){close(bb_status.x_pipe[1]); bb_status.x_pipe[1] = -1;}
//create a new pipe
if (pipe2(bb_status.x_pipe, O_NONBLOCK | O_CLOEXEC)){
set_bb_error("Could not create output pipe for X");
+ if (pathlen > 0) free(mod_path);
return false;
}
bb_status.x_pid = bb_run_fork_ld_redirect(x_argv, bb_config.ld_path, bb_status.x_pipe[1]);
+ if (pathlen > 0) free(mod_path);
//close the end of the pipe that is not ours
if (bb_status.x_pipe[1] != -1){close(bb_status.x_pipe[1]); bb_status.x_pipe[1] = -1;}
}

View File

@@ -0,0 +1,188 @@
# The bumblebee package allows a program to be rendered on an
# dedicated video card by spawning an additional X11 server and
# streaming the results via VirtualGL or primus to the primary server.
# The package is rather chaotic; it's also quite recent.
# As it may change a lot, some of the hacks in this nix expression
# will hopefully not be needed in the future anymore.
# To test:
# 1. make sure that the 'bbswitch' kernel module is installed,
# 2. then run 'bumblebeed' as root
# 3. Then either 'optirun glxinfo' or 'primusrun glxinfo' as user.
#
# The glxinfo output should indicate the Nvidia driver is being used
# and all expected extensions are supported.
#
# To use at startup, see hardware.bumblebee options.
{
stdenv,
lib,
fetchurl,
fetchpatch,
pkg-config,
help2man,
makeWrapper,
glib,
libbsd,
libX11,
xorgserver,
kmod,
xf86videonouveau,
nvidia_x11 ? linuxPackages.nvidia_x11,
linuxPackages,
pkgsi686Linux,
virtualgl,
libglvnd,
autoreconfHook,
# The below should only be non-null in a x86_64 system. On a i686
# system the above nvidia_x11 and virtualgl will be the i686 packages.
# TODO: Confusing. Perhaps use "SubArch" instead of i686?
nvidia_x11_i686 ?
if stdenv.hostPlatform.system == "x86_64-linux" then
pkgsi686Linux.linuxPackages.nvidia_x11.override { libsOnly = true; }
else
null,
libglvnd_i686 ?
if stdenv.hostPlatform.system == "x86_64-linux" then pkgsi686Linux.libglvnd else null,
useDisplayDevice ? false,
extraNvidiaDeviceOptions ? "",
extraNouveauDeviceOptions ? "",
useNvidia ? true,
}:
let
nvidia_x11s = [
nvidia_x11
]
++ lib.optional nvidia_x11.useGLVND libglvnd
++ lib.optionals (nvidia_x11_i686 != null) (
[ nvidia_x11_i686 ] ++ lib.optional nvidia_x11_i686.useGLVND libglvnd_i686
);
nvidiaLibs = lib.makeLibraryPath nvidia_x11s;
bbdPath = lib.makeBinPath [
kmod
xorgserver
];
xmodules = lib.concatStringsSep "," (
map (x: "${x.out or x}/lib/xorg/modules") (
[ xorgserver ] ++ lib.optional (!useNvidia) xf86videonouveau
)
);
modprobePatch = fetchpatch {
url = "https://github.com/Bumblebee-Project/Bumblebee/commit/1ada79fe5916961fc4e4917f8c63bb184908d986.patch";
sha256 = "02vq3vba6nx7gglpjdfchws9vjhs1x02a543yvqrxqpvvdfim2x2";
};
libkmodPatch = fetchpatch {
url = "https://github.com/Bumblebee-Project/Bumblebee/commit/deceb14cdf2c90ff64ebd1010a674305464587da.patch";
sha256 = "00c05i5lxz7vdbv445ncxac490vbl5g9w3vy3gd71qw1f0si8vwh";
};
gcc10Patch = fetchpatch {
url = "https://github.com/Bumblebee-Project/Bumblebee/commit/f94a118a88cd76e2dbea33d735bd53cf54b486a1.patch";
hash = "sha256-3b5tLoMrGYSdg9Hz5bh0c44VIrbSZrY56JpWEyU/Pik=";
};
in
stdenv.mkDerivation rec {
pname = "bumblebee";
version = "3.2.1";
src = fetchurl {
url = "https://www.bumblebee-project.org/${pname}-${version}.tar.gz";
sha256 = "03p3gvx99lwlavznrpg9l7jnl1yfg2adcj8jcjj0gxp20wxp060h";
};
patches = [
./nixos.patch
modprobePatch
libkmodPatch
gcc10Patch
];
# By default we don't want to use a display device
nvidiaDeviceOptions =
lib.optionalString (!useDisplayDevice) ''
# Disable display device
Option "UseEDID" "false"
Option "UseDisplayDevice" "none"
''
+ extraNvidiaDeviceOptions;
nouveauDeviceOptions = extraNouveauDeviceOptions;
# the have() function is deprecated and not available to bash completions the
# way they are currently loaded in NixOS, so use _have. See #10936
postPatch = ''
substituteInPlace scripts/bash_completion/bumblebee \
--replace "have optirun" "_have optirun"
'';
preConfigure = ''
# Apply configuration options
substituteInPlace conf/xorg.conf.nvidia \
--subst-var nvidiaDeviceOptions
substituteInPlace conf/xorg.conf.nouveau \
--subst-var nouveauDeviceOptions
'';
# Build-time dependencies of bumblebeed and optirun.
# Note that it has several runtime dependencies.
buildInputs = [
libX11
glib
libbsd
kmod
];
nativeBuildInputs = [
makeWrapper
pkg-config
help2man
autoreconfHook
];
# The order of LDPATH is very specific: First X11 then the host
# environment then the optional sub architecture paths.
#
# The order for MODPATH is the opposite: First the environment that
# includes the acceleration driver. As this is used for the X11
# server, which runs under the host architecture, this does not
# include the sub architecture components.
configureFlags = [
"--with-udev-rules=$out/lib/udev/rules.d"
# Don't use a special group, just reuse wheel.
"CONF_GID=wheel"
# see #10282
#"CONF_PRIMUS_LD_PATH=${primusLibs}"
]
++ lib.optionals useNvidia [
"CONF_LDPATH_NVIDIA=${nvidiaLibs}"
"CONF_MODPATH_NVIDIA=${nvidia_x11.bin}/lib/xorg/modules"
];
CFLAGS = [
"-DX_MODULE_APPENDS=\\\"${xmodules}\\\""
];
postInstall = ''
wrapProgram "$out/sbin/bumblebeed" \
--prefix PATH : "${bbdPath}"
wrapProgram "$out/bin/optirun" \
--prefix PATH : "${virtualgl}/bin"
'';
meta = with lib; {
description = "Daemon for managing Optimus videocards (power-on/off, spawns xservers)";
homepage = "https://github.com/Bumblebee-Project/Bumblebee";
license = licenses.gpl3;
maintainers = [ ];
platforms = platforms.linux;
};
}

View File

@@ -0,0 +1 @@
{ python3Packages }: with python3Packages; toPythonApplication bump-my-version

View File

@@ -0,0 +1,35 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
buildGoModule rec {
pname = "bump";
version = "0.2.6";
src = fetchFromGitHub {
owner = "mroth";
repo = "bump";
rev = "v${version}";
sha256 = "sha256-OD/ZAVLhezhmFSaWyka5kKwEU5FXH3KuzS91eAteR8Y=";
};
vendorHash = "sha256-mEeuTyNjyuCdRlvJkMPVSplbNL9KXPgX+F1FNdKTvQU=";
doCheck = false;
ldflags = [
"-X main.buildVersion=${version}"
"-X main.buildCommit=${version}"
"-X main.buildDate=1970-01-01"
];
meta = with lib; {
license = licenses.mit;
homepage = "https://github.com/mroth/bump";
description = "CLI tool to draft a GitHub Release for the next semantic version";
mainProgram = "bump";
maintainers = with maintainers; [ doronbehar ];
};
}

View File

@@ -0,0 +1,64 @@
{
lib,
stdenv,
fetchFromGitHub,
nodejs,
pnpm_10,
npmHooks,
versionCheckHook,
nix-update-script,
}:
let
pnpm = pnpm_10;
in
stdenv.mkDerivation (finalAttrs: {
pname = "bumpp";
version = "10.3.1";
src = fetchFromGitHub {
owner = "antfu-collective";
repo = "bumpp";
tag = "v${finalAttrs.version}";
hash = "sha256-krJzPHlGgtEukOlSX0sXfCwXmdItDLhf6hS+zamNrN4=";
};
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 2;
hash = "sha256-N6boJiwq5G4L/vOqp+GoYWtSI1sYScYadxXueeJgGMo=";
};
nativeBuildInputs = [
nodejs
pnpm.configHook
npmHooks.npmInstallHook
];
buildPhase = ''
runHook preBuild
pnpm run build
find dist -type f \( -name '*.cjs' -or -name '*.cts' -or -name '*.ts' \) -delete
runHook postBuild
'';
dontNpmPrune = true;
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Interactive CLI that bumps your version numbers and more";
homepage = "https://github.com/antfu-collective/bumpp";
changelog = "https://github.com/antfu-collective/bumpp/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ xiaoxiangmoe ];
mainProgram = "bumpp";
};
})

View File

@@ -0,0 +1,57 @@
{
lib,
python3,
fetchPypi,
git,
mercurial,
}:
python3.pkgs.buildPythonApplication rec {
pname = "bumpver";
version = "2021.1110";
format = "pyproject";
src = fetchPypi {
inherit pname version;
sha256 = "b6a0ddb78db7e00ae7ffe895bf8ef97f91e6310dfc1c4721896bdfd044b1cb03";
};
prePatch = ''
substituteInPlace setup.py \
--replace-fail "if any(arg.startswith(\"bdist\") for arg in sys.argv):" ""\
--replace-fail "import lib3to6" ""\
--replace-fail "package_dir = lib3to6.fix(package_dir)" ""
'';
build-system = with python3.pkgs; [
setuptools
];
dependencies = with python3.pkgs; [
pathlib2
click
toml
lexid
colorama
setuptools
];
nativeCheckInputs = [
python3.pkgs.pytestCheckHook
git
mercurial
];
disabledTests = [
# fails due to more aggressive setuptools version specifier validation
"test_parse_default_pattern"
];
meta = with lib; {
description = "Bump version numbers in project files";
homepage = "https://pypi.org/project/bumpver/";
license = licenses.mit;
maintainers = with maintainers; [ kfollesdal ];
mainProgram = "bumpver";
};
}

View File

@@ -0,0 +1,153 @@
{
lib,
stdenvNoCC,
fetchurl,
autoPatchelfHook,
unzip,
installShellFiles,
makeWrapper,
openssl,
writeShellScript,
curl,
jq,
common-updater-scripts,
cctools,
darwin,
rcodesign,
}:
stdenvNoCC.mkDerivation rec {
version = "1.2.23";
pname = "bun";
src =
passthru.sources.${stdenvNoCC.hostPlatform.system}
or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
sourceRoot =
{
aarch64-darwin = "bun-darwin-aarch64";
x86_64-darwin = "bun-darwin-x64-baseline";
}
.${stdenvNoCC.hostPlatform.system} or null;
strictDeps = true;
nativeBuildInputs = [
unzip
installShellFiles
makeWrapper
]
++ lib.optionals stdenvNoCC.hostPlatform.isLinux [ autoPatchelfHook ];
buildInputs = [ openssl ];
dontConfigure = true;
dontBuild = true;
installPhase = ''
runHook preInstall
install -Dm 755 ./bun $out/bin/bun
ln -s $out/bin/bun $out/bin/bunx
runHook postInstall
'';
postPhases = [ "postPatchelf" ];
postPatchelf =
lib.optionalString stdenvNoCC.hostPlatform.isDarwin ''
'${lib.getExe' cctools "${cctools.targetPrefix}install_name_tool"}' $out/bin/bun \
-change /usr/lib/libicucore.A.dylib '${lib.getLib darwin.ICU}/lib/libicucore.A.dylib'
'${lib.getExe rcodesign}' sign --code-signature-flags linker-signed $out/bin/bun
''
# We currently cannot generate completions for x86_64-darwin because bun requires avx support to run, which is:
# 1. Not currently supported by the version of Rosetta on our aarch64 builders
# 2. Is not correctly detected even on macOS 15+, where it is available through Rosetta
#
# The baseline builds are no longer an option because they too now require avx support.
+
lib.optionalString
(
stdenvNoCC.buildPlatform.canExecute stdenvNoCC.hostPlatform
&& !(stdenvNoCC.hostPlatform.isDarwin && stdenvNoCC.hostPlatform.isx86_64)
)
''
completions_dir=$(mktemp -d)
SHELL="bash" $out/bin/bun completions $completions_dir
SHELL="zsh" $out/bin/bun completions $completions_dir
SHELL="fish" $out/bin/bun completions $completions_dir
installShellCompletion --name bun \
--bash $completions_dir/bun.completion.bash \
--zsh $completions_dir/_bun \
--fish $completions_dir/bun.fish
'';
passthru = {
sources = {
"aarch64-darwin" = fetchurl {
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-aarch64.zip";
hash = "sha256-IvX6P/9ysNO45+D4BR7K3y5Bkg1HSsYttSeRRICckAU=";
};
"aarch64-linux" = fetchurl {
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-aarch64.zip";
hash = "sha256-anqYxUbQhKhF3tpi6ypblKahSmPqgc+RhtRr9Vv5EKk=";
};
"x86_64-darwin" = fetchurl {
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-darwin-x64-baseline.zip";
hash = "sha256-/MZyPIq6ZGpYRDWG0XhrkJ5kBh5YS0IUoLZ+BFElKEU=";
};
"x86_64-linux" = fetchurl {
url = "https://github.com/oven-sh/bun/releases/download/bun-v${version}/bun-linux-x64.zip";
hash = "sha256-zw7QqSB5nVdv/eTgyuZtcyvyPCUwQH8m9Zx4Md/+Hw4=";
};
};
updateScript = writeShellScript "update-bun" ''
set -o errexit
export PATH="${
lib.makeBinPath [
curl
jq
common-updater-scripts
]
}"
NEW_VERSION=$(curl --silent https://api.github.com/repos/oven-sh/bun/releases/latest | jq '.tag_name | ltrimstr("bun-v")' --raw-output)
if [[ "${version}" = "$NEW_VERSION" ]]; then
echo "The new version same as the old version."
exit 0
fi
for platform in ${lib.escapeShellArgs meta.platforms}; do
update-source-version "bun" "$NEW_VERSION" --ignore-same-version --source-key="sources.$platform"
done
'';
};
meta = {
homepage = "https://bun.sh";
changelog = "https://bun.sh/blog/bun-v${version}";
description = "Incredibly fast JavaScript runtime, bundler, transpiler and package manager all in one";
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
longDescription = ''
All in one fast & easy-to-use tool. Instead of 1,000 node_modules for development, you only need bun.
'';
license = with lib.licenses; [
mit # bun core
lgpl21Only # javascriptcore and webkit
];
mainProgram = "bun";
maintainers = with lib.maintainers; [
DAlperin
jk
thilobillerbeck
cdmistman
coffeeispower
diogomdp
];
platforms = builtins.attrNames passthru.sources;
# Broken for Musl at 2024-01-13, tracking issue:
# https://github.com/NixOS/nixpkgs/issues/280716
broken = stdenvNoCC.hostPlatform.isMusl;
# Hangs when run via Rosetta 2 on Apple Silicon
hydraPlatforms = lib.lists.remove "x86_64-darwin" lib.platforms.all;
};
}

View File

@@ -0,0 +1,40 @@
{
lib,
rustPlatform,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage rec {
pname = "bunbun";
version = "1.5.0";
src = fetchFromGitHub {
owner = "devraza";
repo = "bunbun";
tag = "v${version}";
hash = "sha256-3f/G0Vx1uXeH3QMDVUAHWi4Pf/B88/4F+4XywVsp3/4=";
};
cargoHash = "sha256-2pgQB2myEnLvrU3ApNL/bwaVcGku+X/TjR6YBqXD7Xg=";
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Simple and adorable sysinfo utility written in Rust";
homepage = "https://github.com/devraza/bunbun";
changelog = "https://github.com/devraza/bunbun/releases/tag/v${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ GaetanLepage ];
mainProgram = "bunbun";
};
}

View File

@@ -0,0 +1,56 @@
{
buildRubyGem,
fetchFromGitHub,
makeWrapper,
lib,
bundler,
nix,
nix-prefetch-git,
}:
buildRubyGem rec {
inherit (bundler) ruby;
name = "${gemName}-${version}";
gemName = "bundix";
version = "2.5.2";
src = fetchFromGitHub {
owner = "nix-community";
repo = "bundix";
tag = version;
hash = "sha256-QnNdseCSwQYhO/ybzWsflMEk68TMgPU3HqXJ7av3SHE=";
};
buildInputs = [
ruby
bundler
];
nativeBuildInputs = [ makeWrapper ];
preFixup = ''
wrapProgram $out/bin/bundix \
--prefix PATH : "${nix.out}/bin" \
--prefix PATH : "${nix-prefetch-git.out}/bin" \
--prefix PATH : "${bundler.out}/bin" \
--set GEM_HOME "${bundler}/${bundler.ruby.gemPath}" \
--set GEM_PATH "${bundler}/${bundler.ruby.gemPath}"
'';
meta = {
description = "Creates Nix packages from Gemfiles";
longDescription = ''
This is a tool that converts Gemfile.lock files to nix expressions.
The output is then usable by the bundlerEnv derivation to list all the
dependencies of a ruby package.
'';
homepage = "https://github.com/nix-community/bundix";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
manveru
zimbatm
];
platforms = lib.platforms.all;
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
buildRubyGem,
ruby,
writeScript,
testers,
bundler,
versionCheckHook,
nix-update-script,
}:
buildRubyGem rec {
inherit ruby;
name = "${gemName}-${version}";
gemName = "bundler";
version = "2.7.1";
source.sha256 = "sha256-CtWgAqh5d2sqmL5lL1V6yHMb4zU2EtY/pO8bJwbcHgs=";
dontPatchShebangs = true;
postFixup = ''
substituteInPlace $out/bin/bundle --replace-fail "activate_bin_path" "bin_path"
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgram = "${placeholder "out"}/bin/bundler";
versionCheckProgramArg = "--version";
doInstallCheck = true;
passthru = {
updateScript = nix-update-script { };
};
meta = {
description = "Manage your Ruby application's gem dependencies";
homepage = "https://bundler.io";
changelog = "https://github.com/rubygems/rubygems/blob/bundler-v${version}/bundler/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
anthonyroussel
guylamar2006
];
mainProgram = "bundler";
};
}

View File

@@ -0,0 +1,38 @@
{
lib,
stdenvNoCC,
fetchurl,
makeBinaryWrapper,
jre_headless,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "bundletool";
version = "1.18.2";
src = fetchurl {
url = "https://github.com/google/bundletool/releases/download/${finalAttrs.version}/bundletool-all-${finalAttrs.version}.jar";
sha256 = "sha256-N4tUNM0TeL72srxSe4x/D/JYSyc4MDNbzlTW0IE8hYQ=";
};
dontUnpack = true;
nativeBuildInputs = [ makeBinaryWrapper ];
installPhase = ''
runHook preInstall
makeWrapper ${jre_headless}/bin/java $out/bin/bundletool --add-flags "-jar $src"
runHook postInstall
'';
meta = {
description = "Command-line tool to manipulate Android App Bundles";
mainProgram = "bundletool";
homepage = "https://developer.android.com/studio/command-line/bundletool";
changelog = "https://github.com/google/bundletool/releases/tag/${finalAttrs.version}";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
maintainers = with lib.maintainers; [ momeemt ];
platforms = jre_headless.meta.platforms;
license = lib.licenses.asl20;
};
})

View File

@@ -0,0 +1,31 @@
{
buildGoModule,
fetchFromGitHub,
lib,
}:
buildGoModule rec {
pname = "bunnyfetch";
version = "0.2.0";
src = fetchFromGitHub {
owner = "Rosettea";
repo = "bunnyfetch";
rev = "v${version}";
sha256 = "sha256-6MnjCXc9/8twdf8PHKsVJY1yWYwUf5R01vtQFJbyy7M=";
};
vendorHash = "sha256-w+O1dU8t7uNvdlFnYhCdJCDixpWWZAnj9GrtsCbu9SM=";
# No upstream tests
doCheck = false;
meta = with lib; {
description = "Tiny system info fetch utility";
homepage = "https://github.com/Rosettea/bunnyfetch";
license = licenses.mit;
maintainers = with maintainers; [ devins2518 ];
platforms = platforms.linux;
mainProgram = "bunnyfetch";
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
stdenv,
}:
buildGoModule rec {
pname = "bunster";
version = "0.9.0";
src = fetchFromGitHub {
owner = "yassinebenaid";
repo = "bunster";
tag = "v${version}";
hash = "sha256-HE5Wp5A0wc5jgs9kNkCH1f82Y+SkILHvOwlQAsC6DVU=";
};
vendorHash = "sha256-Gs+8J+yEVynsBte3Hnx7jnYRPa/61CIISDbMyDKhPRE=";
# checks fail on aarch64-darwin but binary still builds successfully
doCheck = !stdenv.hostPlatform.isDarwin;
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
versionCheckProgramArg = "version";
passthru.updateScript = nix-update-script { };
meta = {
description = "Compile shell scripts to static binaries";
homepage = "https://github.com/yassinebenaid/bunster";
changelog = "https://github.com/yassinebenaid/bunster/releases/tag/v{version}";
license = lib.licenses.bsd3;
maintainers = with lib.maintainers; [
yunz
];
mainProgram = "bunster";
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,30 @@
{
rustPlatform,
fetchFromGitHub,
lib,
}:
rustPlatform.buildRustPackage rec {
pname = "bunyan-rs";
version = "0.1.9";
src = fetchFromGitHub {
owner = "LukeMathWalker";
repo = "bunyan";
rev = "v${version}";
sha256 = "sha256-dqhZIwxWBMXS2RgE8YynYrESVyAOIJ9ujAKcp2tDhvA=";
};
cargoHash = "sha256-eLbfrlZWwPv1AFgwFz+IacLZrSl9/KU9zfTstwB8ol0=";
meta = with lib; {
description = "CLI to pretty print logs in bunyan format (Rust port of the original JavaScript bunyan CLI)";
homepage = "https://github.com/LukeMathWalker/bunyan";
license = with licenses; [
asl20
mit
];
maintainers = with maintainers; [ netcrns ];
mainProgram = "bunyan";
};
}

View File

@@ -0,0 +1,100 @@
{
lib,
stdenv,
fetchFromGitHub,
makeWrapper,
perl,
pandoc,
python3,
git,
par2Support ? true,
par2cmdline ? null,
}:
assert par2Support -> par2cmdline != null;
let
version = "0.33.9";
pythonDeps =
with python3.pkgs;
[
setuptools
tornado
]
++ lib.optionals (!stdenv.hostPlatform.isDarwin) [
pyxattr
pylibacl
fuse
];
in
stdenv.mkDerivation {
pname = "bup";
inherit version;
src = fetchFromGitHub {
repo = "bup";
owner = "bup";
tag = version;
hash = "sha256-MW4kScu81XW89W7WpvOj40+S8bG5QozN30Hfj4TsnX4=";
};
buildInputs = [
python3
];
nativeBuildInputs = [
pandoc
perl
makeWrapper
];
configurePlatforms = [ ];
postPatch = ''
patchShebangs --build .
substituteInPlace ./config/configure \
--replace-fail 'bup_git=' 'bup_git="${lib.getExe git}" #'
'';
dontAddPrefix = true;
makeFlags = [
"MANDIR=$(out)/share/man"
"DOCDIR=$(out)/share/doc/bup"
"BINDIR=$(out)/bin"
"LIBDIR=$(out)/lib/bup"
];
env.BUP_PYTHON_CONFIG = lib.getExe' (lib.getDev python3) "python-config";
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isClang "-Wno-error=implicit-function-declaration -Wno-error=implicit-int";
postInstall = ''
wrapProgram $out/bin/bup \
--prefix PATH : ${
lib.makeBinPath [
git
par2cmdline
]
} \
--prefix NIX_PYTHONPATH : ${lib.makeSearchPathOutput "lib" python3.sitePackages pythonDeps}
'';
meta = with lib; {
homepage = "https://github.com/bup/bup";
description = "Efficient file backup system based on the git packfile format";
mainProgram = "bup";
license = licenses.gpl2Plus;
longDescription = ''
Highly efficient file backup system based on the git packfile format.
Capable of doing *fast* incremental backups of virtual machine images.
'';
platforms = platforms.linux ++ platforms.darwin;
maintainers = with maintainers; [ rnhmjoj ];
# bespoke ./configure does not like cross
broken = stdenv.buildPlatform != stdenv.hostPlatform;
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
stdenv,
fetchurl,
perl,
coreutils,
}:
stdenv.mkDerivation rec {
pname = "berkeley_upc";
version = "2020.12.0";
src = fetchurl {
url = "http://upc.lbl.gov/download/release/berkeley_upc-${version}.tar.gz";
hash = "sha256-JdpFORlXHpCQE+TivoQQnjQlxQN7C8BNfHvTOSwXbYQ=";
};
postPatch = ''
patchShebangs .
'';
# Used during the configure phase
ENVCMD = "${coreutils}/bin/env";
buildInputs = [ perl ];
meta = with lib; {
description = "Compiler for the Berkely Unified Parallel C language";
longDescription = ''
Unified Parallel C (UPC) is an extension of the C programming language
designed for high performance computing on large-scale parallel
machines.The language provides a uniform programming model for both
shared and distributed memory hardware. The programmer is presented with
a single shared, partitioned address space, where variables may be
directly read and written by any processor, but each variable is
physically associated with a single processor. UPC uses a Single Program
Multiple Data (SPMD) model of computation in which the amount of
parallelism is fixed at program startup time, typically with a single
thread of execution per processor.
'';
homepage = "https://upc.lbl.gov/";
license = licenses.mit;
platforms = platforms.linux;
maintainers = with maintainers; [ zimbatm ];
};
}

View File

@@ -0,0 +1,46 @@
{
lib,
fetchFromGitHub,
installShellFiles,
rustPlatform,
ronn,
pkg-config,
libsodium,
}:
rustPlatform.buildRustPackage rec {
pname = "bupstash";
version = "0.12.0";
src = fetchFromGitHub {
owner = "andrewchambers";
repo = "bupstash";
rev = "v${version}";
sha256 = "sha256-Ekjxna3u+71s1q7jjXp7PxYUQIfbp2E+jAqKGuszU6g=";
};
cargoHash = "sha256-kWUAI25ag9ghIhn36NF+SunRtmbS0HzsZsxGJujmuG4=";
nativeBuildInputs = [
ronn
pkg-config
installShellFiles
];
buildInputs = [ libsodium ];
postBuild = ''
RUBYOPT="-KU -E utf-8:utf-8" ronn -r doc/man/*.md
'';
postInstall = ''
installManPage doc/man/*.[1-9]
'';
meta = with lib; {
description = "Easy and efficient encrypted backups";
homepage = "https://bupstash.io";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [ andrewchambers ];
mainProgram = "bupstash";
};
}

View File

@@ -0,0 +1,68 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
autoreconfHook,
pkg-config,
acl,
librsync,
ncurses,
openssl_legacy,
zlib,
uthash,
}:
stdenv.mkDerivation rec {
pname = "burp";
version = "2.4.0";
src = fetchFromGitHub {
owner = "grke";
repo = "burp";
tag = version;
hash = "sha256-y6kRd1jD6t+Q6d5t7W9MDuk+m2Iq1THQkP50PJwI7Nc=";
};
patches = [
# Pull upstream fix for ncurses-6.3 support
(fetchpatch {
name = "ncurses-6.3.patch";
url = "https://github.com/grke/burp/commit/1d6c931af7c11f164cf7ad3479781e8f03413496.patch";
hash = "sha256-dJn9YhFQWggoqD3hce7F1d5qHYogbPP6+NMqCpVbTpM=";
})
# Pull upstream fix for backup resuming
(fetchpatch {
name = "fix-resume.patch";
url = "https://github.com/grke/burp/commit/b5ed667f73805b5af9842bb0351f5af95d4d50b3.patch";
hash = "sha256-MT9D2thLgV4nT3LsIDHZp8sWQF2GlOENj0nkOQXZKuk=";
})
];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
# use openssl_legacy due to burp-2.4.0 not supporting file encryption with openssl 3.0
# replace with 'openssl' once burp-3.x has been declared stable and this package upgraded
buildInputs = [
librsync
ncurses
openssl_legacy
zlib
uthash
]
++ lib.optional (!stdenv.hostPlatform.isDarwin) acl;
configureFlags = [ "--localstatedir=/var" ];
installFlags = [ "localstatedir=/tmp" ];
meta = with lib; {
description = "BackUp and Restore Program";
homepage = "https://burp.grke.org";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ arjan-s ];
platforms = platforms.all;
};
}

View File

@@ -0,0 +1,120 @@
{
lib,
buildFHSEnv,
fetchurl,
jdk,
makeDesktopItem,
proEdition ? false,
unzip,
}:
let
version = "2025.9.4";
product =
if proEdition then
{
productName = "pro";
productDesktop = "Burp Suite Professional Edition";
hash = "sha256-Q6fltYCkmVXXh/nhIalMKmLoV7lqNWcM6LjyfPIkORw=";
}
else
{
productName = "community";
productDesktop = "Burp Suite Community Edition";
hash = "sha256-8USmaNI1OZrbo33WkKIEybzGOTIAhIE+0J8tld4Kysg=";
};
src = fetchurl {
name = "burpsuite.jar";
urls = [
"https://portswigger-cdn.net/burp/releases/download?product=${product.productName}&version=${version}&type=Jar"
"https://portswigger.net/burp/releases/download?product=${product.productName}&version=${version}&type=Jar"
"https://web.archive.org/web/https://portswigger.net/burp/releases/download?product=${product.productName}&version=${version}&type=Jar"
];
hash = product.hash;
};
pname = "burpsuite";
description = "Integrated platform for performing security testing of web applications";
desktopItem = makeDesktopItem {
name = "burpsuite";
exec = pname;
icon = pname;
desktopName = product.productDesktop;
comment = description;
categories = [
"Development"
"Security"
"System"
];
};
in
buildFHSEnv {
inherit pname version;
runScript = "${jdk}/bin/java -jar ${src}";
targetPkgs =
pkgs: with pkgs; [
alsa-lib
at-spi2-core
cairo
cups
dbus
expat
glib
gtk3
gtk3-x11
jython
libcanberra-gtk3
libdrm
udev
libxkbcommon
libgbm
nspr
nss
pango
xorg.libX11
xorg.libxcb
xorg.libXcomposite
xorg.libXdamage
xorg.libXext
xorg.libXfixes
xorg.libXrandr
];
extraInstallCommands = ''
mkdir -p "$out/share/pixmaps"
${lib.getBin unzip}/bin/unzip -p ${src} resources/Media/icon64${product.productName}.png > "$out/share/pixmaps/burpsuite.png"
cp -r ${desktopItem}/share/applications $out/share
'';
passthru.updateScript = ./update.sh;
meta = with lib; {
inherit description;
longDescription = ''
Burp Suite is an integrated platform for performing security testing of web applications.
Its various tools work seamlessly together to support the entire testing process, from
initial mapping and analysis of an application's attack surface, through to finding and
exploiting security vulnerabilities.
'';
homepage = "https://portswigger.net/burp/";
changelog =
"https://portswigger.net/burp/releases/professional-community-"
+ replaceStrings [ "." ] [ "-" ] version;
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.unfree;
platforms = jdk.meta.platforms;
hydraPlatforms = [ ];
maintainers = with maintainers; [
bennofs
blackzeshi
fab
yechielw
];
mainProgram = "burpsuite";
};
}

View File

@@ -0,0 +1,39 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq xxd gnused diffutils
set -eu -o pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" &>/dev/null && pwd)"
curl -s 'https://portswigger.net/burp/releases/data' |
jq -r '
[[
.ResultSet.Results[]
| select(
(.categories | sort) == (["Professional","Community"] | sort)
and .releaseChannels == ["Early Adopter"]
)
][0].builds[]
| select(.ProductPlatform == "Jar")
]' >latest.json
version=$(jq -r '.[0].Version' latest.json)
comm_hex=$(jq -r '.[] | select(.ProductId=="community") .Sha256Checksum' latest.json)
pro_hex=$(jq -r '.[] | select(.ProductId=="pro") .Sha256Checksum' latest.json)
comm_sri="sha256-$(printf %s "$comm_hex" | xxd -r -p | base64 -w0)"
pro_sri="sha256-$(printf %s "$pro_hex" | xxd -r -p | base64 -w0)"
sed -i \
-e "s|^\(\s*version = \)\"[^\"]*\";|\1\"$version\";|" \
-e "/productName = \"community\"/,/hash =/ {
s|sha256-[^\"]*|$comm_sri|
}" \
-e "/productName = \"pro\"/,/hash =/ {
s|sha256-[^\"]*|$pro_sri|
}" \
$SCRIPT_DIR/package.nix
echo "burpsuite → $version"
echo " community: $comm_sri"
echo " pro : $pro_sri"

View File

@@ -0,0 +1,74 @@
{
lib,
stdenv,
fetchFromGitLab,
buildPackages,
cargo,
meson,
ninja,
pkg-config,
desktop-file-utils,
rustPlatform,
rustc,
wrapGAppsHook4,
gettext,
glib,
gtk4,
libadwaita,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "bustle";
version = "0.12.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "bustle";
tag = finalAttrs.version;
hash = "sha256-gzPFODVLvv+Ore1XR+XTi2fjVh3OJOZF0k9vilVnst4=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-DYkicVDjQRIMfKl0f9aLWIyQfR153I43EpSuskenmoA=";
};
env = lib.optionalAttrs stdenv.hostPlatform.isDarwin {
# Set the location to gettext to ensure the nixpkgs one on Darwin instead of the vendored one.
# The vendored gettext does not build with clang 16.
GETTEXT_BIN_DIR = "${lib.getBin buildPackages.gettext}/bin";
GETTEXT_INCLUDE_DIR = "${lib.getDev gettext}/include";
GETTEXT_LIB_DIR = "${lib.getLib gettext}/lib";
};
nativeBuildInputs = [
cargo
meson
ninja
pkg-config
desktop-file-utils
rustPlatform.cargoSetupHook
rustc
wrapGAppsHook4
glib
];
buildInputs = [
glib
gtk4
libadwaita
];
meta = {
description = "Graphical D-Bus message analyser and profiler";
homepage = "https://gitlab.gnome.org/World/bustle";
license = lib.licenses.lgpl21Plus;
maintainers = with lib.maintainers; [
jtojnar
];
teams = [ lib.teams.gnome-circle ];
mainProgram = "bustle";
platforms = lib.platforms.unix;
};
})

View File

@@ -0,0 +1,44 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
zlib,
testers,
bustools,
}:
stdenv.mkDerivation rec {
pname = "bustools";
version = "0.45.1";
src = fetchFromGitHub {
owner = "BUStools";
repo = "bustools";
rev = "v${version}";
sha256 = "sha256-G+ZMoUmhINp18XKmXpdb5GT7YMsiK/XX2zrjt56CbLg=";
};
nativeBuildInputs = [ cmake ];
buildInputs = [ zlib ];
passthru.tests.version = testers.testVersion {
package = bustools;
command = "bustools version";
};
meta = {
description = "Program for manipulating BUS files for single cell RNA-Seq datasets";
longDescription = ''
bustools is a program for manipulating BUS files for single cell RNA-Seq datasets. It can be used to error correct barcodes, collapse UMIs, produce gene count or transcript compatibility count matrices, and is useful for many other tasks. It is also part of the kallisto | bustools workflow for pre-processing single-cell RNA-seq data.
'';
homepage = "https://www.kallistobus.tools/";
downloadPage = "https://bustools.github.io/download";
changelog = "https://github.com/BUStools/bustools/releases/tag/v${version}";
maintainers = [ lib.maintainers.dflores ];
license = lib.licenses.bsd2;
mainProgram = "bustools";
platforms = lib.platforms.unix;
};
}

View File

@@ -0,0 +1,42 @@
{
lib,
fetchFromGitHub,
buildGoModule,
}:
buildGoModule rec {
pname = "butane";
version = "0.25.1";
src = fetchFromGitHub {
owner = "coreos";
repo = "butane";
rev = "v${version}";
hash = "sha256-HrLnXkaayCmMrvW79NSYrmI0ujfHtRwWmonkbvTXEXY=";
};
vendorHash = null;
doCheck = false;
subPackages = [ "internal" ];
ldflags = [
"-X github.com/coreos/butane/internal/version.Raw=v${version}"
];
postInstall = ''
mv $out/bin/{internal,butane}
'';
meta = with lib; {
description = "Translates human-readable Butane configs into machine-readable Ignition configs";
mainProgram = "butane";
license = licenses.asl20;
homepage = "https://github.com/coreos/butane";
maintainers = with maintainers; [
elijahcaine
ruuda
];
};
}

View File

@@ -0,0 +1,128 @@
{
stdenv,
lib,
fetchFromGitHub,
gitUpdater,
testers,
dbus,
doxygen,
glib,
libsForQt5,
pkg-config,
wrapGAppsHook3,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "buteo-syncfw";
version = "0.11.10";
outputs = [
"out"
"dev"
"doc"
];
src = fetchFromGitHub {
owner = "sailfishos";
repo = "buteo-syncfw";
tag = finalAttrs.version;
hash = "sha256-WZ70dFrQeHO0c9MM3wS8aWMd0DDhTW9Ks4hhw7pPmu8=";
};
postPatch = ''
# Wildcard breaks file installation (tries to run ~ "install source/* target/*")
substituteInPlace doc/doc.pri \
--replace-fail 'htmldocs.files = $${PWD}/html/*' 'htmldocs.files = $${PWD}/html' \
--replace-fail '/usr/share/doc' "$doc/share/doc"
substituteInPlace declarative/declarative.pro \
--replace-fail '$$[QT_INSTALL_QML]' "$out/${libsForQt5.qtbase.qtQmlPrefix}"
substituteInPlace libbuteosyncfw/libbuteosyncfw.pro \
--replace-fail '$$[QT_INSTALL_LIBS]' "$out/lib" \
--replace-fail '/usr/include' "$dev/include"
substituteInPlace msyncd/msyncd-app.pro \
--replace-fail '/usr/bin' "$out/bin" \
--replace-fail '/usr/lib/systemd' "$out/lib/systemd" \
--replace-fail '/etc' "$out/etc" \
--replace-fail '/usr/share' "$out/share"
substituteInPlace oopp-runner/oopp-runner.pro \
--replace-fail '/usr/libexec' "$out/libexec"
# We don't have invoked (mapplauncherd)
substituteInPlace msyncd/bin/msyncd.service \
--replace-fail 'ExecStart=/usr/bin/invoker -G -o -s --type=qt5 /usr/bin/msyncd' "ExecStart=$out/bin/msyncd"
substituteInPlace msyncd/com.meego.msyncd.service \
--replace-fail 'Exec=/usr/bin/msyncd' "Exec=$out/bin/msyncd"
# Tests expect to get installed, require excessive patching
substituteInPlace buteo-sync.pro \
--replace-fail 'unittests \' '\' \
--replace-fail 'unittests.depends' '# unittests.depends'
'';
# QMake doesn't handle strictDeps well
strictDeps = false;
nativeBuildInputs = [
doxygen
glib
pkg-config
wrapGAppsHook3
]
++ (with libsForQt5; [
qmake
wrapQtAppsHook
]);
buildInputs = [
dbus
]
++ (with libsForQt5; [
accounts-qt
qtdeclarative
signond
]);
dontWrapGApps = true;
# Do all configuring now, not during build
postConfigure = ''
make qmake_all
'';
# Tests expect to get installed, require excessive patching & managing
doCheck = false;
postInstall = ''
glib-compile-schemas $out/share/glib-2.0/schemas
'';
preFixup = ''
qtWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru = {
updateScript = gitUpdater { };
tests.pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
# Version is hardcoded to 1.0.0
};
};
meta = {
description = "Buteo Synchronization Framework";
homepage = "https://github.com/sailfishos/buteo-syncfw";
changelog = "https://github.com/sailfishos/buteo-syncfw/releases/tag/${finalAttrs.version}";
license = lib.licenses.lgpl21Only;
mainProgram = "msyncd";
teams = [ lib.teams.lomiri ];
platforms = lib.platforms.linux;
pkgConfigModules = [
"buteosyncfw5"
];
};
})

View File

@@ -0,0 +1,232 @@
diff --git a/go.mod b/go.mod
index 5e595ac8..bf183d06 100644
--- a/go.mod
+++ b/go.mod
@@ -1,6 +1,6 @@
module github.com/itchio/butler
-go 1.14
+go 1.18
require (
crawshaw.io/sqlite v0.3.2
@@ -11,11 +11,8 @@ require (
github.com/efarrer/iothrottler v0.0.1
github.com/fatih/color v1.9.0
github.com/fatih/structtag v1.2.0
- github.com/getlantern/mtime v0.0.0-20200417132445-23682092d1f7 // indirect
- github.com/getlantern/ops v0.0.0-20200403153110-8476b16edcd6 // indirect
github.com/go-ole/go-ole v1.2.4
github.com/go-ozzo/ozzo-validation v3.6.0+incompatible
- github.com/golang/protobuf v1.4.2 // indirect
github.com/google/gops v0.3.10
github.com/google/uuid v1.1.1
github.com/helloeave/json v1.13.0
@@ -40,28 +37,67 @@ require (
github.com/itchio/wharf v0.0.0-20200618110241-8896e2c6e09b
github.com/itchio/wizardry v0.0.0-20200301161332-e8c8c4a5a488
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
- github.com/klauspost/compress v1.10.9 // indirect
- github.com/mattn/go-colorable v0.1.6 // indirect
- github.com/mattn/go-runewidth v0.0.9 // indirect
github.com/mitchellh/mapstructure v1.3.2
github.com/natefinch/npipe v0.0.0-20160621034901-c1b8fa8bdcce
- github.com/nightlyone/lockfile v1.0.0 // indirect
github.com/olekukonko/tablewriter v0.0.4
github.com/pkg/errors v0.9.1
github.com/russross/blackfriday v2.0.0+incompatible
github.com/scjalliance/comshim v0.0.0-20190308082608-cf06d2532c4e
- github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966
github.com/stretchr/testify v1.6.1
golang.org/x/crypto v0.31.0
- golang.org/x/net v0.32.0 // indirect
golang.org/x/sync v0.10.0
golang.org/x/sys v0.28.0
golang.org/x/text v0.21.0
golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1
- google.golang.org/protobuf v1.24.0 // indirect
gopkg.in/alecthomas/kingpin.v2 v2.2.6
+ xorm.io/builder v0.3.7
+)
+
+require (
+ github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 // indirect
+ github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d // indirect
+ github.com/basgys/goxml2json v1.1.0 // indirect
+ github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 // indirect
+ github.com/davecgh/go-spew v1.1.1 // indirect
+ github.com/detailyang/go-fallocate v0.0.0-20180908115635-432fa640bd2e // indirect
+ github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 // indirect
+ github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 // indirect
+ github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7 // indirect
+ github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7 // indirect
+ github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 // indirect
+ github.com/getlantern/idletiming v0.0.0-20200228204104-10036786eac5 // indirect
+ github.com/getlantern/mtime v0.0.0-20200417132445-23682092d1f7 // indirect
+ github.com/getlantern/netx v0.0.0-20190110220209-9912de6f94fd // indirect
+ github.com/getlantern/ops v0.0.0-20200403153110-8476b16edcd6 // indirect
+ github.com/go-stack/stack v1.8.0 // indirect
+ github.com/gogs/chardet v0.0.0-20191104214054-4b6791f73a28 // indirect
+ github.com/golang/protobuf v1.4.2 // indirect
+ github.com/gorilla/handlers v1.4.2 // indirect
+ github.com/gorilla/mux v1.7.4 // indirect
+ github.com/hashicorp/golang-lru v0.5.4 // indirect
+ github.com/itchio/dmcunrar-go v0.0.0-20241212230744-bd86d6b265e9 // indirect
+ github.com/itchio/dskompress v0.0.0-20190702113811-5e6f499be697 // indirect
+ github.com/itchio/go-brotli v0.0.0-20190702114328-3f28d645a45c // indirect
+ github.com/itchio/kompress v0.0.0-20200301155538-5c2eecce9e51 // indirect
+ github.com/itchio/lzma v0.0.0-20190703113020-d3e24e3e3d49 // indirect
+ github.com/itchio/randsource v0.0.0-20190703104731-3f6d22f91927 // indirect
+ github.com/itchio/sevenzip-go v0.0.0-20190703112252-e327cec6c376 // indirect
+ github.com/jgallagher/gosaca v0.0.0-20130226042358-754749770f08 // indirect
+ github.com/jinzhu/inflection v1.0.0 // indirect
+ github.com/klauspost/compress v1.10.9 // indirect
+ github.com/mattn/go-colorable v0.1.6 // indirect
+ github.com/mattn/go-isatty v0.0.12 // indirect
+ github.com/mattn/go-runewidth v0.0.9 // indirect
+ github.com/mitchellh/copystructure v1.0.0 // indirect
+ github.com/mitchellh/reflectwalk v1.0.1 // indirect
+ github.com/nightlyone/lockfile v1.0.0 // indirect
+ github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c // indirect
+ github.com/pmezard/go-difflib v1.0.0 // indirect
+ github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect
+ golang.org/x/net v0.32.0 // indirect
+ golang.org/x/term v0.27.0 // indirect
+ google.golang.org/protobuf v1.24.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
- xorm.io/builder v0.3.7
)
diff --git a/go.sum b/go.sum
index 5a7f5551..a06ce6df 100644
--- a/go.sum
+++ b/go.sum
@@ -21,7 +21,6 @@ github.com/basgys/goxml2json v1.1.0 h1:4ln5i4rseYfXNd86lGEB+Vi652IsIXIvggKM/BhUK
github.com/basgys/goxml2json v1.1.0/go.mod h1:wH7a5Np/Q4QoECFIU8zTQlZwZkrilY0itPfecMw41Dw=
github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y=
github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
-github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY=
github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/certifi/gocertifi v0.0.0-20200211180108-c7c1fbc02894 h1:JLaf/iINcLyjwbtTsCJjc6rtlASgHeIJPrB6QmwURnA=
@@ -99,9 +98,8 @@ github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
+github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
-github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
github.com/google/gops v0.3.10 h1:M2XZYgfUW+P7AOCLiu4CRb0rQfwnslLyB4B9Mp0vXmE=
github.com/google/gops v0.3.10/go.mod h1:38bMPVKFh+1X106CPpbLAWtZIR1+xwgzT9gew0kn6w4=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
@@ -197,7 +195,6 @@ github.com/klauspost/compress v1.10.9 h1:pPRt1Z78crspaHISkpSSHjDlx+Tt9suHe519dsI
github.com/klauspost/compress v1.10.9/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
github.com/klauspost/cpuid v1.2.1/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
-github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
@@ -256,49 +253,25 @@ github.com/stretchr/testify v1.6.1 h1:hDPOHmpOpP40lSULcqw7IrRb/u7w6RpDC9399XyoNd
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
github.com/xlab/treeprint v1.0.0/go.mod h1:IoImgRak9i3zJyuxOKUP1v4UZd1tMoKkq/Cimt1uhCg=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
-golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
-golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
-golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
-golang.org/x/crypto v0.30.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
-golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
-golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
-golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
-golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM=
golang.org/x/net v0.32.0 h1:ZqPmj8Kzc+Y6e0+skZsuACbx+wzMgo5MQsJh9Qd6aYI=
golang.org/x/net v0.32.0/go.mod h1:CwU0IoeOlnQQWJ6ioyFrfRuomB8GKF6KbYXZVyeXNfs=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
-golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
-golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -311,36 +284,12 @@ golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7w
golang.org/x/sys v0.0.0-20200301153931-2f85c7ec1e52/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
-golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE=
-golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
-golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
-golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
-golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
-golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
-golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
-golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
-golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
-golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
-golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
@@ -352,12 +301,7 @@ golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGm
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
-golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk=
-golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=

View File

@@ -0,0 +1,42 @@
{
buildGoModule,
brotli,
lib,
fetchFromGitHub,
}:
# update instructions:
# - Check if butler version bug was fixed https://github.com/itchio/butler/issues/266
# - if it's fixed, remove patch.
# - if it was not fixed, follow steps below to regenerate the patch
# - manually clone butler, change go.mod's version number to 1.18 at least
# - run `go mod tidy` in the cloned repository.
# - generate patch with `git diff > go.mod.patch`
buildGoModule rec {
pname = "butler";
version = "15.24.0";
src = fetchFromGitHub {
owner = "itchio";
repo = "butler";
tag = "v${version}";
hash = "sha256-Gzf+8icPIXrNc8Vk8z0COPv/QA6GL6nSvQg13bAlfZM=";
};
buildInputs = [ brotli ];
patches = [ ./go.mod.patch ];
doCheck = false; # disabled because the tests don't work in a non-FHS compliant environment.
vendorHash = "sha256-A6u7bKI7eoptkjBuXoQlLYHkEVtrl8aNnBb65k1bFno=";
meta = {
description = "Command-line itch.io helper";
changelog = "https://github.com/itchio/butler/releases/tag/v${version}/CHANGELOG.md";
homepage = "http://itch.io";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ naelstrof ];
};
}

View File

@@ -0,0 +1,77 @@
{
lib,
stdenv,
fetchurl,
pkg-config,
fltk13,
portaudio,
lame,
libvorbis,
libogg,
flac,
libopus,
libsamplerate,
fdk_aac,
dbus,
openssl,
curl,
portmidi,
autoPatchelfHook,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "butt";
version = "1.45.0";
src = fetchurl {
url = "https://danielnoethen.de/butt/release/${finalAttrs.version}/butt-${finalAttrs.version}.tar.gz";
hash = "sha256-iEmFEJRsTvHeKGYvnhzYXSC/q0DSw0Z/YgK4buDtg2Q=";
};
postPatch = ''
# remove advertising
substituteInPlace src/FLTK/flgui.cpp \
--replace-fail 'idata_radio_co_badge, 124, 61, 4,' 'nullptr, 0, 0, 0,'
substituteInPlace src/FLTK/fl_timer_funcs.cpp \
--replace-fail 'radio_co_logo, 124, 61, 4,' 'nullptr, 0, 0, 0,' \
--replace-fail 'live365_logo, 124, 61, 4,' 'nullptr, 0, 0, 0,'
'';
nativeBuildInputs = [
autoPatchelfHook
pkg-config
];
buildInputs = [
fltk13
portaudio
lame
libvorbis
libogg
flac
libopus
libsamplerate
fdk_aac
dbus
openssl
curl
portmidi
];
runtimeDependencies = [
fdk_aac
];
postInstall = ''
cp -r usr/share $out/
'';
meta = {
changelog = "https://danielnoethen.de/butt/Changelog.html";
description = "Easy to use, multi OS streaming tool";
homepage = "https://danielnoethen.de/butt/";
license = lib.licenses.gpl2;
mainProgram = "butt";
platforms = lib.platforms.linux;
};
})

View File

@@ -0,0 +1,37 @@
{
lib,
fetchurl,
appimageTools,
}:
let
pname = "buttercup-desktop";
version = "2.28.1";
src = fetchurl {
url = "https://github.com/buttercup/buttercup-desktop/releases/download/v${version}/Buttercup-linux-x86_64.AppImage";
sha256 = "sha256-iCuvs+FisYPvCmPVg1dhYMX+Lw3WmrMSRytdy6TLrxg=";
};
appimageContents = appimageTools.extractType2 { inherit pname src version; };
in
appimageTools.wrapType2 {
inherit pname src version;
extraPkgs = pkgs: [ pkgs.libsecret ];
extraInstallCommands = ''
install -m 444 -D ${appimageContents}/buttercup.desktop -t $out/share/applications
substituteInPlace $out/share/applications/buttercup.desktop \
--replace 'Exec=AppRun' 'Exec=${pname}'
cp -r ${appimageContents}/usr/share/icons $out/share
'';
meta = with lib; {
description = "Cross-Platform Passwords & Secrets Vault";
mainProgram = "buttercup-desktop";
homepage = "https://buttercup.pw";
license = licenses.gpl3Only;
maintainers = [ ];
platforms = [ "x86_64-linux" ];
};
}

View File

@@ -0,0 +1,11 @@
{
"dart_leap": "sha256-oO5851cIdrW/asgOePxvwUgjn1XchkH9CKJUruvlLYI=",
"lw_file_system": "sha256-cnGaTriJI3IEZjUg5sj4VrrG3cxfzBfDzJRkFRIKmu4=",
"lw_file_system_api": "sha256-ozp/mJq2o5pzQgFcTWLzG67XgHZRHoIRW+W0QDLCTFM=",
"lw_sysapi": "sha256-rs/nC6/uUGXHZ6kzb+RCcvtVP/zSYV9NdrUq+WHLOKQ=",
"material_leap": "sha256-cnGaTriJI3IEZjUg5sj4VrrG3cxfzBfDzJRkFRIKmu4=",
"networker": "sha256-YqCl/FODv8QZFnz1qVHoJLIioYhcluPiY4pP09MzvNE=",
"networker_crypto": "sha256-8I/qBdxxbIse7un4W9MjaifbK7TqsyYrFnIbaTuezo0=",
"networker_socket": "sha256-8I/qBdxxbIse7un4W9MjaifbK7TqsyYrFnIbaTuezo0=",
"swamp_api": "sha256-74Zr2qUeS8JnWcqqU7zAwaD8ygnni76OuTOwQqobhCk="
}

View File

@@ -0,0 +1,73 @@
{
lib,
flutter335,
fetchFromGitHub,
runCommand,
yq-go,
_experimental-update-script-combinators,
gitUpdater,
}:
let
version = "2.4.0";
src = fetchFromGitHub {
owner = "LinwoodDev";
repo = "Butterfly";
tag = "v${version}";
hash = "sha256-kxX9gHNKDlRir9TGSob6iz8cRJOqHdoYlvIi4MQAroc=";
};
in
flutter335.buildFlutterApplication {
pname = "butterfly";
inherit version src;
pubspecLock = lib.importJSON ./pubspec.lock.json;
sourceRoot = "${src.name}/app";
gitHashes = lib.importJSON ./gitHashes.json;
postInstall = ''
cp -r linux/debian/usr/share $out/share
'';
passthru = {
pubspecSource =
runCommand "pubspec.lock.json"
{
inherit src;
nativeBuildInputs = [ yq-go ];
}
''
yq eval --output-format=json --prettyPrint $src/app/pubspec.lock > "$out"
'';
updateScript = _experimental-update-script-combinators.sequence [
(gitUpdater {
ignoredVersions = ".*(rc|beta).*";
rev-prefix = "v";
})
(_experimental-update-script-combinators.copyAttrOutputToFile "butterfly.pubspecSource" ./pubspec.lock.json)
{
command = [ ./update-gitHashes.py ];
supportedFeatures = [ "silent" ];
}
];
};
meta = {
description = "Note taking app where your ideas come first";
homepage = "https://github.com/LinwoodDev/Butterfly";
mainProgram = "butterfly";
license = with lib.licenses; [
agpl3Plus
cc-by-sa-40
asl20
];
maintainers = [ ];
platforms = [
"aarch64-linux"
"x86_64-linux"
];
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,51 @@
#! /usr/bin/env nix-shell
#! nix-shell -i python3 -p python3 nix-prefetch-git
import json
import subprocess
import sys
from pathlib import Path
THIS_FOLDER = Path(__file__).parent.resolve()
PUBSPEC_LOCK = THIS_FOLDER / "pubspec.lock.json"
GIT_HASHES = THIS_FOLDER / "gitHashes.json"
def fetch_git_hash(url: str, rev: str) -> str:
result = subprocess.run(
["nix-prefetch-git", "--url", url, "--rev", rev],
capture_output=True,
text=True,
check=True,
)
return json.loads(result.stdout)["hash"]
def main() -> None:
if not PUBSPEC_LOCK.exists():
sys.exit(1)
try:
data = json.loads(PUBSPEC_LOCK.read_text())
except json.JSONDecodeError:
sys.exit(1)
output: dict[str, str] = {}
for name, info in data.get("packages", {}).items():
if info.get("source") != "git":
continue
desc = info.get("description")
if not isinstance(desc, dict):
continue
url = desc.get("url")
rev = desc.get("resolved-ref")
if not (isinstance(url, str) and isinstance(rev, str)):
continue
try:
package_hash = fetch_git_hash(url, rev)
except subprocess.CalledProcessError:
continue
output[name] = package_hash
GIT_HASHES.write_text(json.dumps(output, indent=2) + "\n")
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,55 @@
{
lib,
fetchFromGitHub,
python3Packages,
wrapGAppsHook3,
qt5,
}:
python3Packages.buildPythonApplication rec {
pname = "buttermanager";
version = "2.5.2";
pyproject = true;
src = fetchFromGitHub {
owner = "egara";
repo = "buttermanager";
tag = version;
hash = "sha256-/U5IVJvYCw/YzBWjQ949YP9uoxsTNRJ5FO7rrI6Cvhs=";
};
propagatedBuildInputs = with python3Packages; [
pyqt5
pyyaml
sip
tkinter
];
nativeBuildInputs = [
wrapGAppsHook3
qt5.wrapQtAppsHook
];
dontWrapQtApps = true;
dontWrapGApps = true;
makeWrapperArgs = [
"\${qtWrapperArgs[@]}"
"\${gappsWrapperArgs[@]}"
];
postInstall = ''
substituteInPlace packaging/buttermanager.desktop \
--replace-fail /opt/buttermanager/gui/buttermanager.svg buttermanager
install -Dm444 packaging/buttermanager.desktop -t $out/share/applications
install -Dm444 packaging/buttermanager.svg -t $out/share/icons/hicolor/scalable/apps
'';
meta = with lib; {
description = "Btrfs tool for managing snapshots, balancing filesystems and upgrading the system safetly";
homepage = "https://github.com/egara/buttermanager";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ t4ccer ];
mainProgram = "buttermanager";
};
}

View File

@@ -0,0 +1,35 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule (finalAttrs: {
pname = "buttplug-mcp";
version = "0.0.1";
src = fetchFromGitHub {
owner = "ConAcademy";
repo = "buttplug-mcp";
rev = "v${finalAttrs.version}";
hash = "sha256-C4ZPTO+Gh6g19BrqHugSCF74aAZ888XRTk1AzNpEBok=";
};
vendorHash = "sha256-EoLv7HpdAyEM83m/DTgu9jMh0Nn+v8b2buIavQFJbnY=";
ldflags = [
"-s"
"-w"
"-X main.version=${finalAttrs.version}"
];
__darwinAllowLocalNetworking = true;
meta = {
description = "Buttplug.io Model Context Protocol (MCP) Server";
homepage = "https://github.com/ConAcademy/buttplug-mcp";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ pilz ];
mainProgram = "buttplug-mcp";
};
})

View File

@@ -0,0 +1,78 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
gtk-doc,
intltool,
itstool,
libtool,
pkg-config,
wrapGAppsHook3,
yelp-tools,
clutter-gtk,
gst_all_1,
glib,
gtk2,
libgsf,
libxml2,
fluidsynth,
orc,
}:
stdenv.mkDerivation {
pname = "buzztrax";
version = "0.11.0-unstable-2024-03-02";
src = fetchFromGitHub {
owner = "Buzztrax";
repo = "buzztrax";
rev = "4bb66d9d9870e1e56ce1f0e97bb58a0c627356d3";
hash = "sha256-AV/tYru9WhGbi6IlQEf42EN8b0pNAYblLUZ+fXpOFRI=";
};
postPatch = ''
touch AUTHORS
'';
nativeBuildInputs = [
autoreconfHook
gtk-doc
intltool
itstool
libtool
pkg-config
wrapGAppsHook3
yelp-tools
];
buildInputs = [
clutter-gtk
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
gst_all_1.gst-plugins-good
glib
gtk2
libgsf
libxml2
# optional packages
fluidsynth
gst_all_1.gst-plugins-bad
gst_all_1.gst-plugins-ugly
orc
];
# 'g_memdup' is deprecated: Use 'g_memdup2' instead
env.NIX_CFLAGS_COMPILE =
"-Wno-error=deprecated-declarations -Wno-error=incompatible-pointer-types"
# Suppress incompatible function pointer error in clang due to libxml2 2.12 const changes
+ lib.optionalString stdenv.cc.isClang " -Wno-error=incompatible-function-pointer-types";
meta = with lib; {
description = "Modular music composer for Linux";
homepage = "https://www.buzztrax.org/";
license = licenses.lgpl21Plus;
maintainers = [ maintainers.bendlas ];
platforms = platforms.unix;
};
}