Compare commits

...

19 Commits

Author SHA1 Message Date
xenia 6ff53a02b8 experimental new repl-overlay 2026-01-05 13:46:35 -05:00
xenia b81369662c update nixpkgs 2026-01-05 13:40:16 -05:00
xenia 13e67681de update nixpkgs 2025-12-28 21:11:59 -05:00
xenia 8511ccaa4f patch strawberry 2025-12-24 16:35:42 -05:00
xenia 2028d946a5 fix tex package meta 2025-12-23 05:02:14 -05:00
xenia 7e52eb4d52 what 2025-12-23 04:53:52 -05:00
xenia 1319b12cb7 texlive: provide default dragnpkgs scheme 2025-12-23 04:33:27 -05:00
xenia 74ba7dba3e update beamer template 2025-12-23 04:25:26 -05:00
xenia 0f55b27419 pkgs.satisfactory-dedicated-server: update 2025-12-22 22:22:07 -05:00
xenia ae47a36f7f rename system -> stdenv.hostPlatform.system 2025-12-22 22:22:01 -05:00
xenia 82ac27dea3 treewide: clean up 'meta = with' pattern 2025-12-22 22:03:30 -05:00
xenia 875a804500 update 2025-12-22 21:49:19 -05:00
xenia 90f79781c7 update readme 2025-12-14 21:03:03 -05:00
xenia 6310c4ca22 update nixpkgs 2025-12-14 17:44:49 -05:00
xenia 96a1cf5c55 fix pyside6/binsync build 2025-12-07 18:40:34 -05:00
xenia b38957ff39 update binsync and libbs 2025-12-07 18:16:55 -05:00
xenia 722df1c375 uncomment binsync override 2025-12-07 18:10:22 -05:00
xenia 94247ca614 fork off dragnpkgs-25.11 2025-12-07 17:55:20 -05:00
xenia 6ba1a991dd update packages and fix builds
- remove lix-module dependency and vendor a version of the overlay
- move python packages to python313
- comment binsync because the build is fucked
- add note about building zbasefind
- update feedvalidator to latest version
- update megacom to pyproject=true
2025-12-07 17:53:39 -05:00
23 changed files with 747 additions and 123 deletions

View File

@ -43,8 +43,8 @@ for flake usage, add this repo as an input and don't input nixpkgs at all, since
```nix ```nix
{ {
inputs = { inputs = {
# for nixos-25.05 # for nixos-25.11
dragnpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=nixos-25.05"; dragnpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=nixos-25.11";
# for nixos-unstable # for nixos-unstable
dragnpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=main"; dragnpkgs.url = "git+https://git.lain.faith/haskal/dragnpkgs.git?ref=main";

View File

@ -1,37 +1,23 @@
{ {
"nodes": { "nodes": {
"lix-module": {
"flake": false,
"locked": {
"lastModified": 1756125859,
"narHash": "sha256-6a+PWILmqHCs9B5eIBLg6HSZ8jYweZpgOWO8FlyVwYI=",
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.3-2.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://git.lix.systems/lix-project/nixos-module/archive/2.93.3-2.tar.gz"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1763283776, "lastModified": 1767480499,
"narHash": "sha256-Y7TDFPK4GlqrKrivOcsHG8xSGqQx3A6c+i7novT85Uk=", "narHash": "sha256-8IQQUorUGiSmFaPnLSo2+T+rjHtiNWc+OAzeHck7N48=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "50a96edd8d0db6cc8db57dab6bb6d6ee1f3dc49a", "rev": "30a3c519afcf3f99e2c6df3b359aec5692054d92",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "owner": "NixOS",
"ref": "nixos-unstable", "ref": "nixos-25.11",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"lix-module": "lix-module",
"nixpkgs": "nixpkgs" "nixpkgs": "nixpkgs"
} }
} }

View File

@ -2,19 +2,14 @@
description = "dragnpkgs together with nixpkgs and lix"; description = "dragnpkgs together with nixpkgs and lix";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
lix-module = {
url = "https://git.lix.systems/lix-project/nixos-module/archive/2.93.3-2.tar.gz";
flake = false;
};
}; };
outputs = { self, nixpkgs, lix-module }: outputs = { self, nixpkgs }:
let let
overlays = [ overlays = [
(import ./overlay.nix) (import ./overlay.nix)
(import "${lix-module}/overlay.nix" { lix = null; }) (import ./lix-overlay.nix)
]; ];
forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed;
libVersionInfoOverlay = import "${nixpkgs}/lib/flake-version-info.nix" nixpkgs; libVersionInfoOverlay = import "${nixpkgs}/lib/flake-version-info.nix" nixpkgs;
@ -28,18 +23,18 @@
# self reference in the registry to be downloadable by URL in case it makes it into a # self reference in the registry to be downloadable by URL in case it makes it into a
# flake.lock # flake.lock
meta.registry-entry = { meta.registry-entry = {
from = { id = "dragnpkgs-unstable"; type = "indirect"; }; from = { id = "dragnpkgs"; type = "indirect"; };
to = { to = {
type = "git"; type = "git";
url = "https://git.lain.faith/haskal/dragnpkgs.git"; url = "https://git.lain.faith/haskal/dragnpkgs.git";
ref = "main"; ref = "nixos-25.11";
} // self.lib.filterAttrs } // self.lib.filterAttrs
(n: _: n == "lastModified" || n == "rev" || n == "revCount" || n == "narHash") (n: _: n == "lastModified" || n == "rev" || n == "revCount" || n == "narHash")
self; self;
}; };
# the nix path entry for self # the nix path entry for self
meta.path-entry = "dragnpkgs-unstable=flake:dragnpkgs-unstable"; meta.path-entry = "dragnpkgs=flake:dragnpkgs";
lib = (lib-base.extend (import ./lib/overlay.nix)).extend (final: prev: { lib = (lib-base.extend (import ./lib/overlay.nix)).extend (final: prev: {
# initializes regular upstream nixpkgs with the given arguments # initializes regular upstream nixpkgs with the given arguments
@ -154,17 +149,17 @@
}; };
}; };
config.nix.registry.dragnpkgs-unstable = config.nix.registry.dragnpkgs =
lib.mkIf config.dragnpkgs.setFlakeRegistry self.meta.registry-entry; lib.mkIf config.dragnpkgs.setFlakeRegistry self.meta.registry-entry;
config.nix.registry.nixpkgs = lib.mkIf config.dragnpkgs.setNixpkgsFlakeAlias { config.nix.registry.nixpkgs = lib.mkIf config.dragnpkgs.setNixpkgsFlakeAlias {
from = { id = "nixpkgs"; type = "indirect"; }; from = { id = "nixpkgs"; type = "indirect"; };
to = { id = "dragnpkgs-unstable"; type = "indirect"; }; to = { id = "dragnpkgs"; type = "indirect"; };
}; };
config.nix.registry.templates = lib.mkIf config.dragnpkgs.setTemplatesFlakeAlias { config.nix.registry.templates = lib.mkIf config.dragnpkgs.setTemplatesFlakeAlias {
from = { id = "templates"; type = "indirect"; }; from = { id = "templates"; type = "indirect"; };
to = { id = "dragnpkgs-unstable"; type = "indirect"; }; to = { id = "dragnpkgs"; type = "indirect"; };
}; };
config.nix.nixPath = lib.mkIf config.dragnpkgs.setNixPath [ config.nix.nixPath = lib.mkIf config.dragnpkgs.setNixPath [

View File

@ -1,4 +1,4 @@
{ lib, stdenvNoCC, system, cacert, depotdownloader }: { lib, stdenv, cacert, depotdownloader }:
let let
checkDepot = depot: with builtins; checkDepot = depot: with builtins;
hasAttr "depotId" depot && hasAttr "manifestId" depot; hasAttr "depotId" depot && hasAttr "manifestId" depot;
@ -18,7 +18,7 @@ else if ! builtins.all checkDepot additionalDepots then
else else
let let
depotOs = depotOs =
if system == "x86_64-linux" then if stdenv.hostPlatform.system == "x86_64-linux" then
"linux" "linux"
else else
throw "fetchFromSteam does not currently support systems other than x86_64-linux"; throw "fetchFromSteam does not currently support systems other than x86_64-linux";
@ -26,7 +26,7 @@ let
"-app ${appId} -depot ${depot.depotId} -manifest ${depot.manifestId} -os ${depotOs}" "-app ${appId} -depot ${depot.depotId} -manifest ${depot.manifestId} -os ${depotOs}"
+ (lib.optionalString (builtins.hasAttr "beta" depot) " -beta ${depot.beta}"); + (lib.optionalString (builtins.hasAttr "beta" depot) " -beta ${depot.beta}");
depotArgs = builtins.map makeDepotArg [ depot ] ++ additionalDepots; depotArgs = builtins.map makeDepotArg [ depot ] ++ additionalDepots;
in stdenvNoCC.mkDerivation { in stdenv.mkDerivation {
name = "steam-depot-${appId}" + (lib.optionalString (name != null) "-${name}"); name = "steam-depot-${appId}" + (lib.optionalString (name != null) "-${name}");
builder = ./builder.sh; builder = ./builder.sh;

98
lix-overlay.nix Normal file
View File

@ -0,0 +1,98 @@
# This file is adapted from <https://git.lix.systems/lix-project/nixos-module>
# and distributed under the terms of the MIT license found at
# <https://git.lix.systems/lix-project/nixos-module/src/branch/main/LICENSE>
final: prev:
let
# These packages should receive CppNix since they may link to it or otherwise
# cause problems (or even just silly mass-rebuilds) if we give them Lix
overridelist_upstream = [
"attic-client"
"devenv"
"nix-du"
"nix-init"
"nix-prefetch-git"
"nixd"
"nixos-option"
"nixt"
"nurl"
"prefetch-yarn-deps" # force these onto upstream so we are not regularly rebuilding electron
];
inherit (prev) lib;
csi = builtins.fromJSON ''"\u001b"'';
orange = "${csi}[35;1m";
normal = "${csi}[0m";
warning = ''
${orange}warning${normal}: You have the lix overlay included into a nixpkgs import twice,
perhaps due to the NixOS module being included twice, or because of using
pkgs.nixos and also including it in imports, or perhaps some unknown
machinations of a complicated flake library.
This is completely harmless since we have no-op'd the second one if you are
seeing this message, but it would be a small style improvement to fix
it :)
P.S. If you had some hack to fix nixos-option build failures in your
configuration, that was caused by including an older version of the lix
overlay twice, which is now mitigated if you see this message, so you can
delete that.
P.P.S. This Lix has super catgirl powers.
'';
maybeWarnDuplicate = x: if final.lix-overlay-present > 1 then builtins.trace warning x else x;
# TODO: latest
lixPackageToUse = prev.lixPackageSets.lix_2_93.lix;
# It is not enough to *just* throw whatever the default nix version is at
# anything in the "don't give lix" list, we have to *also* ensure that we
# give whatever upstream version as specified in the callPackage invocation.
#
# Unfortunately I don't think there is any actual way to directly query that,
# so we instead do something extremely evil and guess which version it
# probably was. This code is not generalizable to arbitrary derivations, so
# it will hopefully not make us cry, at least.
useCppNixOverlay =
lib.genAttrs overridelist_upstream (
name:
if (lib.functionArgs prev.${name}.override ? "nix") then
let
# Get the two common inputs of a derivation/package.
inputs = prev.${name}.buildInputs ++ prev.${name}.nativeBuildInputs;
nixDependency = lib.findFirst
(drv: (drv.pname or "") == "nix")
final.nixVersions.stable_upstream # default to stable nix if nix is not an input
inputs;
nixMajor = lib.versions.major (nixDependency.version or "");
nixMinor = lib.versions.minor (nixDependency.version or "");
nixAttr = "nix_${nixMajor}_${nixMinor}";
finalNix = final.nixVersions.${nixAttr};
in
prev.${name}.override {
nix = finalNix;
}
else prev.${name}
);
overlay = useCppNixOverlay // {
lix-overlay-present = 1;
lix = maybeWarnDuplicate lixPackageToUse;
nixForLinking = final.nixVersions.stable_upstream; # make sure that nixVersions.stable isn't messed with.
nixVersions = prev.nixVersions // {
stable = final.lix;
stable_upstream = prev.nixVersions.stable;
};
nix-eval-jobs =
# TODO: latest
prev.lixPackageSets.lix_2_93.nix-eval-jobs;
nix-doc = prev.nix-doc.override { withPlugin = false; };
};
in
# Make the overlay idempotent, since flakes passing nixos modules around by
# value and many other things make it way too easy to include the overlay
# twice
if (prev ? lix-overlay-present) then { lix-overlay-present = 2; } else overlay

View File

@ -36,7 +36,7 @@ final: prev: {
patdiff-bin = ofinal.callPackage ./pkgs/ocaml/patdiff-bin {}; patdiff-bin = ofinal.callPackage ./pkgs/ocaml/patdiff-bin {};
}); });
python312 = prev.python312.override { python313 = prev.python313.override {
packageOverrides = pfinal: pprev: { packageOverrides = pfinal: pprev: {
feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {}; feedvalidator = pfinal.callPackage ./pkgs/python/feedvalidator {};
megacom = pfinal.callPackage ./pkgs/python/megacom {}; megacom = pfinal.callPackage ./pkgs/python/megacom {};
@ -44,13 +44,18 @@ final: prev: {
}; };
# add to top level because it has a binary # add to top level because it has a binary
feedvalidator = final.python312Packages.feedvalidator; feedvalidator = final.python313Packages.feedvalidator;
megacom = final.python312Packages.megacom; megacom = final.python313Packages.megacom;
python311 = prev.python311.override { python311 = prev.python311.override {
packageOverrides = pfinal: pprev: { packageOverrides = pfinal: pprev: {
# TODO: untested and weirdly requires manual build of qtwebengine
libbs = pfinal.callPackage ./pkgs/reverse-engineering/binsync/libbs.nix {}; libbs = pfinal.callPackage ./pkgs/reverse-engineering/binsync/libbs.nix {};
binsync = pfinal.callPackage ./pkgs/reverse-engineering/binsync/binsync.nix {}; binsync = pfinal.callPackage ./pkgs/reverse-engineering/binsync/binsync.nix {};
pyside6 = pprev.pyside6.overrideAttrs (afinal: aprev: {
buildInputs = final.lib.filter (x: x.pname != "qtwebengine" && x.pname != "qtwebview") aprev.buildInputs;
});
}; };
}; };
@ -78,6 +83,12 @@ final: prev: {
texliveDragonPackages = { texliveDragonPackages = {
moloch = prev.callPackage ./pkgs/tex/moloch {}; moloch = prev.callPackage ./pkgs/tex/moloch {};
scheme = final.texliveMedium.withPackages (ps: [
ps.fontawesome5
ps.standalone
final.texliveDragonPackages.moloch
]);
}; };
racket-minimal = final.callPackage ./pkgs/racket/racket/minimal.nix {}; racket-minimal = final.callPackage ./pkgs/racket/racket/minimal.nix {};
@ -96,4 +107,17 @@ final: prev: {
makeRacketEnv = self.callPackage ./pkgs/racket/make-racket-env.nix {}; makeRacketEnv = self.callPackage ./pkgs/racket/make-racket-env.nix {};
} // (byName self)); } // (byName self));
strawberry = prev.strawberry.overrideAttrs (afinal: aprev: {
version = "1.2.16";
src = final.fetchFromGitHub {
owner = "jonaski";
repo = "strawberry";
rev = afinal.version;
hash = "sha256-4V/geww/M0FD3McBuz8MgkwdXA7j+d71SJn5Q4AZrvU=";
};
patches = [
./pkgs/strawberry/0001-make-the-minimum-scrobble-length-shorter.patch
];
});
} }

View File

@ -52,10 +52,10 @@ in stdenvNoCC.mkDerivation rec {
chmod +x $out/bin/outer-wilds-text-adventure chmod +x $out/bin/outer-wilds-text-adventure
''; '';
meta = with lib; { meta = {
description = "Outer Wilds: A Thrilling Graphical Text Adventure"; description = "Outer Wilds: A Thrilling Graphical Text Adventure";
homepage = "https://www.mobiusdigitalgames.com/outer-wilds-text-adventure.html"; homepage = "https://www.mobiusdigitalgames.com/outer-wilds-text-adventure.html";
license = licenses.unfree; license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
}; };
} }

View File

@ -7,24 +7,24 @@
}: }:
let let
appId = "1690800"; appId = "1690800";
buildId = "19876517"; buildId = "21237536";
steamworks_sdk = fetchFromSteam { steamworks_sdk = fetchFromSteam {
name = "steamworks-sdk"; name = "steamworks-sdk";
inherit appId; inherit appId;
depot = { depot = {
depotId = "1006"; depotId = "1006";
manifestId = "5587033981095108078"; manifestId = "6403079453713498174";
}; };
hash = "sha256-CjrVpq5ztL6wTWIa63a/4xHM35DzgDR/O6qVf1YV5xw="; hash = "sha256-q1A2ooLzKojf3kj5VCFSLngFv6522rXd5nApBQFDrHA=";
}; };
server_dist = fetchFromSteam { server_dist = fetchFromSteam {
name = "satisfactory-dedicated-server"; name = "satisfactory-dedicated-server";
inherit appId; inherit appId;
depot = { depot = {
depotId = "1690802"; depotId = "1690802";
manifestId = "7620210706575413121"; manifestId = "6002578218905311874";
}; };
hash = "sha256-jQbtHSBFCDcdycrDjIJBY4DGV7EgITvwv3k3+htZ7io="; hash = "sha256-OSS0tviycIOO9kvJzVHvnseYw0+gVLZOkLHyuXZSHvM=";
}; };
in stdenv.mkDerivation { in stdenv.mkDerivation {
pname = "satisfactory-dedicated-server"; pname = "satisfactory-dedicated-server";
@ -69,11 +69,11 @@ in stdenv.mkDerivation {
$out/opt/Engine/Binaries/Linux/FactoryServer-Linux-Shipping $out/opt/Engine/Binaries/Linux/FactoryServer-Linux-Shipping
''; '';
meta = with lib; { meta = {
description = "Satisfactory Dedicated Server"; description = "Satisfactory Dedicated Server";
homepage = "https://www.satisfactorygame.com/"; homepage = "https://www.satisfactorygame.com/";
license = licenses.unfree; license = lib.licenses.unfree;
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
sourceProvenance = [ sourceTypes.binaryNativeCode ]; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
}; };
} }

View File

@ -18,8 +18,8 @@ let feedvalidator_src = stdenvNoCC.mkDerivation {
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "w3c"; owner = "w3c";
repo = "feedvalidator"; repo = "feedvalidator";
rev = "1bbf6d9c68ef074b824c452fbc5d1f7817e6adae"; rev = "96fbf7e918293da0e3dfd06b2dece14da65ba2aa";
sha256 = "sha256-sHc6cgjSNcd0BcYYeybGPayQNV8SK9GjUglWg9iOQko="; sha256 = "sha256-aNRtW+YnLKPdVURKxDd/QR+/Vfp93TmGnm8hf8Q5Gz0=";
}; };
installPhase = '' installPhase = ''

View File

@ -2,11 +2,15 @@
fetchPypi, fetchPypi,
buildPythonPackage, buildPythonPackage,
setuptools,
pyserial, pyserial,
pyserial-asyncio, pyserial-asyncio,
}: buildPythonPackage rec { }: buildPythonPackage rec {
pname = "megacom"; pname = "megacom";
version = "0.1.2"; version = "0.1.2";
pyproject = true;
build-system = [ setuptools ];
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "sha256-q2sU37uTX98RJDF0WFt7vzqtfLk3u25COCdKt34/Z70="; sha256 = "sha256-q2sU37uTX98RJDF0WFt7vzqtfLk3u25COCdKt34/Z70=";

View File

@ -1,51 +1,45 @@
{ {
lib, lib,
fetchFromGitHub,
buildPythonPackage, buildPythonPackage,
fetchFromGitHub,
setuptools,
libbs,
filelock, filelock,
gitpython, gitpython,
libbs,
prompt-toolkit, prompt-toolkit,
pycparser, pycparser,
pyside6,
pytest-qt,
pytestCheckHook,
setuptools,
sortedcontainers, sortedcontainers,
toml, toml,
tqdm, tqdm,
ply,
wordfreq, wordfreq,
}:
pyside6, buildPythonPackage rec {
pytestCheckHook,
pytest-qt,
}: buildPythonPackage rec {
pname = "binsync"; pname = "binsync";
version = "5.7.10+dev"; version = "5.8.0+dev";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "binsync"; owner = "binsync";
repo = "binsync"; repo = "binsync";
rev = "e67da5ab9cddc2743f7462c9543ba7100e25eeb5"; rev = "9fdf3b28e78abd6a9665e52b713d8f480e78a78a";
hash = "sha256-QDOfbo2yjfjLsLILMhl/ckKwXDusXfE8+YmFpW5djN0="; hash = "sha256-IXr3IzQfj50J7b+OqIl5IhWS1KKXWiNd7vEJX+TOxsA=";
}; };
build-system = [ setuptools ]; build-system = [ setuptools ];
dependencies = [ dependencies = [
libbs
filelock filelock
gitpython gitpython
libbs
prompt-toolkit prompt-toolkit
pycparser pycparser
sortedcontainers sortedcontainers
toml toml
tqdm tqdm
ply
wordfreq wordfreq
]; ];
@ -60,8 +54,10 @@
]; ];
disabledTestPaths = [ disabledTestPaths = [
# Test tries to import angrmanagement # Test tries to import angr-management
"tests/test_angr_gui.py" "tests/test_angr_gui.py"
# needs flask
"tests/test_auxiliary_server.py"
]; ];
pythonImportsCheck = [ "binsync" ]; pythonImportsCheck = [ "binsync" ];
@ -71,5 +67,6 @@
homepage = "https://github.com/binsync/binsync"; homepage = "https://github.com/binsync/binsync";
changelog = "https://github.com/binsync/binsync/releases/tag/${src.tag}"; changelog = "https://github.com/binsync/binsync/releases/tag/${src.tag}";
license = lib.licenses.bsd2; license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ scoder12 ];
}; };
} }

View File

@ -1,35 +1,43 @@
{ {
lib, lib,
fetchFromGitHub,
buildPythonPackage, buildPythonPackage,
fetchFromGitHub,
setuptools,
filelock, filelock,
ghidra-bridge, ghidra-bridge,
jfx-bridge, jfx-bridge,
networkx, networkx,
platformdirs, platformdirs,
ply,
prompt-toolkit, prompt-toolkit,
psutil, psutil,
pycparser, pycparser,
pyhidra, pyhidra,
pytestCheckHook,
setuptools,
toml, toml,
tqdm, tqdm,
ply,
pytestCheckHook,
writableTmpDirAsHomeHook, writableTmpDirAsHomeHook,
}: buildPythonPackage rec { }:
let
# Binary files from https://github.com/binsync/bs-artifacts (only used for testing and only here)
binaries = fetchFromGitHub {
owner = "binsync";
repo = "bs-artifacts";
rev = "514c2d6ef1875435c9d137bb5d99b6fc74063817";
hash = "sha256-P7+BTJgdC9W8cC/7xQduFYllF+0ds1dSlm59/BFvZ2g=";
};
in
buildPythonPackage rec {
pname = "libbs"; pname = "libbs";
version = "2.16.4+dev"; version = "2.16.5+dev";
pyproject = true; pyproject = true;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "binsync"; owner = "binsync";
repo = "libbs"; repo = "libbs";
rev = "0ce5c351cc81c1a0120f763aeba584fdb9dc2820"; rev = "8955ad96ba94e2164c3daf5c0a942b256ec93126";
hash = "sha256-if27Tg5S0Esrw9xHi6nr+kDIw4OTz7yZ2256/4Kbkeo="; hash = "sha256-mFNieYFZYskOpYdwr4Vpbs8lLct0nehsYTXzlvS/pas=";
}; };
build-system = [ setuptools ]; build-system = [ setuptools ];
@ -40,13 +48,13 @@
jfx-bridge jfx-bridge
networkx networkx
platformdirs platformdirs
ply
prompt-toolkit prompt-toolkit
psutil psutil
pycparser pycparser
pyhidra pyhidra
toml toml
tqdm tqdm
ply
]; ];
nativeCheckInputs = [ nativeCheckInputs = [
@ -54,6 +62,14 @@
writableTmpDirAsHomeHook writableTmpDirAsHomeHook
]; ];
# Place test binaries in place
preCheck = ''
export HOME=$TMPDIR
mkdir -p $HOME/bs-artifacts/binaries
cp -r ${binaries} $HOME/bs-artifacts/binaries
export TEST_BINARIES_DIR=$HOME/bs-artifacts/binaries
'';
pythonImportsCheck = [ "libbs" ]; pythonImportsCheck = [ "libbs" ];
disabledTests = [ disabledTests = [
@ -62,16 +78,11 @@
"TestHeadlessInterfaces" "TestHeadlessInterfaces"
]; ];
disabledTestPaths = [
"tests/test_decompilers.py"
"tests/test_remote_ghidra.py"
];
meta = { meta = {
description = "Library for writing plugins in any decompiler: includes API lifting, common data formatting, and GUI abstraction"; description = "Library for writing plugins in any decompiler: includes API lifting, common data formatting, and GUI abstraction";
homepage = "https://github.com/binsync/libbs"; homepage = "https://github.com/binsync/libbs";
changelog = "https://github.com/binsync/libbs/releases/tag/${src.tag}"; changelog = "https://github.com/binsync/libbs/releases/tag/${src.tag}";
license = lib.licenses.bsd2; license = lib.licenses.bsd2;
maintainers = with lib.maintainers; [ scoder12 ];
}; };
} }

View File

@ -253,7 +253,7 @@ stdenv.mkDerivation (finalAttrs: {
withExtensions = callPackage ./with-extensions.nix { ghidra = finalAttrs.finalPackage; }; withExtensions = callPackage ./with-extensions.nix { ghidra = finalAttrs.finalPackage; };
}; };
meta = with lib; { meta = {
changelog = "https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_${finalAttrs.version}_build/Ghidra/Configurations/Public_Release/src/global/docs/ChangeHistory.html"; changelog = "https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_${finalAttrs.version}_build/Ghidra/Configurations/Public_Release/src/global/docs/ChangeHistory.html";
description = "Software reverse engineering (SRE) suite of tools"; description = "Software reverse engineering (SRE) suite of tools";
mainProgram = "ghidra"; mainProgram = "ghidra";
@ -264,12 +264,12 @@ stdenv.mkDerivation (finalAttrs: {
"x86_64-darwin" "x86_64-darwin"
"aarch64-darwin" "aarch64-darwin"
]; ];
sourceProvenance = with sourceTypes; [ sourceProvenance = with lib.sourceTypes; [
fromSource fromSource
binaryBytecode # deps binaryBytecode # deps
]; ];
license = licenses.asl20; license = lib.licenses.asl20;
maintainers = with maintainers; [ maintainers = with lib.maintainers; [
roblabla roblabla
vringar vringar
]; ];

View File

@ -26,10 +26,10 @@ buildGhidraScripts {
substituteInPlace YaraSearch.py --replace-fail '"yara "' '"${yara}/bin/yara "' substituteInPlace YaraSearch.py --replace-fail '"yara "' '"${yara}/bin/yara "'
''; '';
meta = with lib; { meta = {
description = "Scripts for the Ghidra software reverse engineering suite"; description = "Scripts for the Ghidra software reverse engineering suite";
homepage = "https://github.com/ghidraninja/ghidra_scripts"; homepage = "https://github.com/ghidraninja/ghidra_scripts";
license = with licenses; [ license = with lib.licenses; [
gpl3Only gpl3Only
gpl2Only gpl2Only
]; ];

View File

@ -61,10 +61,10 @@ buildGhidraExtension {
runHook postInstall runHook postInstall
''; '';
meta = with lib; { meta = {
description = "Leverage the binutils disassembler capabilities for various processors"; description = "Leverage the binutils disassembler capabilities for various processors";
homepage = "https://ghidra-sre.org/"; homepage = "https://ghidra-sre.org/";
downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/GPL/GnuDisassembler"; downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/GPL/GnuDisassembler";
license = licenses.gpl2Only; license = lib.licenses.gpl2Only;
}; };
} }

View File

@ -23,11 +23,11 @@ buildGhidraExtension {
runHook postInstall runHook postInstall
''; '';
meta = with lib; { meta = {
inherit (ghidra.meta) homepage license; inherit (ghidra.meta) homepage license;
description = "Finds functions using ML"; description = "Finds functions using ML";
downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Extensions/MachineLearning"; downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Extensions/MachineLearning";
sourceProvenance = with sourceTypes; [ sourceProvenance = with lib.sourceTypes; [
fromSource fromSource
binaryBytecode # deps binaryBytecode # deps
]; ];

View File

@ -34,9 +34,9 @@ buildGhidraExtension {
rm dist/ghidra* rm dist/ghidra*
mv dist/safe.zip dist/$correct_version mv dist/safe.zip dist/$correct_version
''; '';
meta = with lib; { meta = {
description = "Reverse-Engineering Tools SYNChronization. Allows syncing between a debugging session and Ghidra"; description = "Reverse-Engineering Tools SYNChronization. Allows syncing between a debugging session and Ghidra";
homepage = "https://github.com/bootleg/ret-sync"; homepage = "https://github.com/bootleg/ret-sync";
license = licenses.gpl3Only; license = lib.licenses.gpl3Only;
}; };
} }

View File

@ -25,7 +25,7 @@ buildGhidraExtension {
runHook postInstall runHook postInstall
''; '';
meta = with lib; { meta = {
inherit (ghidra.meta) homepage license; inherit (ghidra.meta) homepage license;
description = "Sleigh language development tools including external disassembler capabilities"; description = "Sleigh language development tools including external disassembler capabilities";
longDescription = '' longDescription = ''
@ -33,7 +33,7 @@ buildGhidraExtension {
The GnuDisassembler extension may be also be required as a disassembly provider. The GnuDisassembler extension may be also be required as a disassembly provider.
''; '';
downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Extensions/SleighDevTools"; downloadPage = "https://github.com/NationalSecurityAgency/ghidra/tree/master/Ghidra/Extensions/SleighDevTools";
sourceProvenance = with sourceTypes; [ sourceProvenance = with lib.sourceTypes; [
fromSource fromSource
binaryBytecode # deps binaryBytecode # deps
]; ];

View File

@ -173,12 +173,12 @@ in stdenv.mkDerivation (self: {
inherit pythonEnv; inherit pythonEnv;
}; };
meta = with lib; { meta = {
description = "A powerful disassembler, decompiler and a versatile debugger."; description = "A powerful disassembler, decompiler and a versatile debugger.";
homepage = "https://hex-rays.com/ida-pro"; homepage = "https://hex-rays.com/ida-pro";
mainProgram = "ida"; mainProgram = "ida";
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];
sourceProvenance = with sourceTypes; [ binaryNativeCode ]; sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree; license = lib.licenses.unfree;
}; };
}) })

View File

@ -0,0 +1,493 @@
From 208a9c9b5d771c92df79cf32aabb5a1315dec56b Mon Sep 17 00:00:00 2001
From: xenia <xenia@awoo.systems>
Date: Wed, 24 Dec 2025 16:25:47 -0500
Subject: [PATCH] make the minimum scrobble length shorter
---
src/playlist/playlist.cpp | 2 +-
src/settings/scrobblersettingspage.ui | 2 +-
src/translations/strawberry_ca_ES.ts | 4 ++--
src/translations/strawberry_cs_CZ.ts | 4 ++--
src/translations/strawberry_de_DE.ts | 2 +-
src/translations/strawberry_el_CY.ts | 4 ++--
src/translations/strawberry_el_GR.ts | 4 ++--
src/translations/strawberry_en_US.ts | 2 +-
src/translations/strawberry_es_AR.ts | 2 +-
src/translations/strawberry_es_ES.ts | 2 +-
src/translations/strawberry_es_MX.ts | 2 +-
src/translations/strawberry_et_EE.ts | 2 +-
src/translations/strawberry_fi_FI.ts | 4 ++--
src/translations/strawberry_fr_BE.ts | 2 +-
src/translations/strawberry_fr_FR.ts | 2 +-
src/translations/strawberry_hu_HU.ts | 2 +-
src/translations/strawberry_id_ID.ts | 2 +-
src/translations/strawberry_is_IS.ts | 2 +-
src/translations/strawberry_it_IT.ts | 2 +-
src/translations/strawberry_ja_JP.ts | 2 +-
src/translations/strawberry_ko_KR.ts | 2 +-
src/translations/strawberry_nb_NO.ts | 2 +-
src/translations/strawberry_nl_NL.ts | 4 ++--
src/translations/strawberry_pl_PL.ts | 2 +-
src/translations/strawberry_pt_BR.ts | 4 ++--
src/translations/strawberry_ru_RU.ts | 2 +-
src/translations/strawberry_sv_SE.ts | 2 +-
src/translations/strawberry_tr_CY.ts | 4 ++--
src/translations/strawberry_tr_TR.ts | 4 ++--
src/translations/strawberry_uk_UA.ts | 2 +-
src/translations/strawberry_vi_VN.ts | 2 +-
src/translations/strawberry_zh_CN.ts | 2 +-
src/translations/strawberry_zh_TW.ts | 4 ++--
33 files changed, 43 insertions(+), 43 deletions(-)
diff --git a/src/playlist/playlist.cpp b/src/playlist/playlist.cpp
index 5b95d2bd..c823f7df 100644
--- a/src/playlist/playlist.cpp
+++ b/src/playlist/playlist.cpp
@@ -117,7 +117,7 @@ constexpr QRgb kInvalidSongColor = qRgb(0xC0, 0xC0, 0xC0);
constexpr int kDynamicHistoryPriority = 100;
constexpr QRgb kDynamicHistoryColor = qRgb(0x80, 0x80, 0x80);
-constexpr qint64 kMinScrobblePointNsecs = 31LL * kNsecPerSec;
+constexpr qint64 kMinScrobblePointNsecs = 16LL * kNsecPerSec;
constexpr qint64 kMaxScrobblePointNsecs = 240LL * kNsecPerSec;
constexpr int kMaxPlayedIndexes = 100;
diff --git a/src/settings/scrobblersettingspage.ui b/src/settings/scrobblersettingspage.ui
index 0b0606c4..3848c743 100644
--- a/src/settings/scrobblersettingspage.ui
+++ b/src/settings/scrobblersettingspage.ui
@@ -30,7 +30,7 @@
<item>
<widget class="QLabel" name="label_scrobble_info">
<property name="text">
- <string>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</string>
+ <string>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</string>
</property>
<property name="wordWrap">
<bool>true</bool>
diff --git a/src/translations/strawberry_ca_ES.ts b/src/translations/strawberry_ca_ES.ts
index 08fa29d0..672687e1 100644
--- a/src/translations/strawberry_ca_ES.ts
+++ b/src/translations/strawberry_ca_ES.ts
@@ -5702,8 +5702,8 @@ Esteu segur que voleu continuar?</translation>
<translation type="unfinished">Enable</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_cs_CZ.ts b/src/translations/strawberry_cs_CZ.ts
index 3a31995c..fb88f8ca 100644
--- a/src/translations/strawberry_cs_CZ.ts
+++ b/src/translations/strawberry_cs_CZ.ts
@@ -5712,8 +5712,8 @@ Opravdu chcete pokračovat?</translation>
<translation>Povolit</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_de_DE.ts b/src/translations/strawberry_de_DE.ts
index 3254eafa..221cd984 100644
--- a/src/translations/strawberry_de_DE.ts
+++ b/src/translations/strawberry_de_DE.ts
@@ -5702,7 +5702,7 @@ Möchten Sie wirklich fortfahren?</translation>
<translation>Aktivieren</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Lieder werden gescrobbelt, wenn sie gültige Metadaten haben und länger als 30 Sekunden sind, mindestens die Hälfte ihrer Dauer oder 4 Minuten (je nachdem, was früher eintritt) abgespielt wurden.</translation>
</message>
<message>
diff --git a/src/translations/strawberry_el_CY.ts b/src/translations/strawberry_el_CY.ts
index 436137b1..7f6130bb 100644
--- a/src/translations/strawberry_el_CY.ts
+++ b/src/translations/strawberry_el_CY.ts
@@ -5702,8 +5702,8 @@ Are you sure you want to continue?</translation>
<translation type="unfinished">Enable</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_el_GR.ts b/src/translations/strawberry_el_GR.ts
index c825f932..a966220c 100644
--- a/src/translations/strawberry_el_GR.ts
+++ b/src/translations/strawberry_el_GR.ts
@@ -5702,8 +5702,8 @@ Are you sure you want to continue?</source>
<translation>Ενεργοποίηση</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_en_US.ts b/src/translations/strawberry_en_US.ts
index 8e08cc97..a1c387e8 100644
--- a/src/translations/strawberry_en_US.ts
+++ b/src/translations/strawberry_en_US.ts
@@ -5698,7 +5698,7 @@ Are you sure you want to continue?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation type="unfinished"></translation>
</message>
<message>
diff --git a/src/translations/strawberry_es_AR.ts b/src/translations/strawberry_es_AR.ts
index 3ee6ea55..5f4dc1f5 100644
--- a/src/translations/strawberry_es_AR.ts
+++ b/src/translations/strawberry_es_AR.ts
@@ -5701,7 +5701,7 @@ Are you sure you want to continue?</source>
<translation>Activar</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>La reproducción de una canción es registrada solo si dispone de metadatos válidos, dura más de 30 segundos y se ha reproducido al menos durante la mitad de su duración o 4 minutos (lo que ocurra primero).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_es_ES.ts b/src/translations/strawberry_es_ES.ts
index 66e7881a..e766f973 100644
--- a/src/translations/strawberry_es_ES.ts
+++ b/src/translations/strawberry_es_ES.ts
@@ -5701,7 +5701,7 @@ Are you sure you want to continue?</source>
<translation>Activar</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>La reproducción de un tema se registra solo si dispone de metadatos válidos, dura más de 30 segundos y se ha reproducido al menos durante la mitad de su duración o 4 minutos (lo que ocurra primero).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_es_MX.ts b/src/translations/strawberry_es_MX.ts
index 15128cb0..0a670041 100644
--- a/src/translations/strawberry_es_MX.ts
+++ b/src/translations/strawberry_es_MX.ts
@@ -5701,7 +5701,7 @@ Are you sure you want to continue?</source>
<translation>Activar</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>La reproducción de una canción es registrada solo si dispone de metadatos válidos, dura más de 30 segundos y se ha reproducido al menos durante la mitad de su duración o 4 minutos (lo que ocurra primero).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_et_EE.ts b/src/translations/strawberry_et_EE.ts
index db45d2b5..29709722 100644
--- a/src/translations/strawberry_et_EE.ts
+++ b/src/translations/strawberry_et_EE.ts
@@ -5702,7 +5702,7 @@ Kas soovid jätkata?</translation>
<translation>Luba</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Lood kraasitakse, kui neil on kehtivad metaandmed ja need on pikemad kui 30 sekundit, neid on esitatud vähemalt pool kestusest või 4 minutit (olenevalt sellest, kumb saabub varem).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_fi_FI.ts b/src/translations/strawberry_fi_FI.ts
index d9480396..74127dc2 100644
--- a/src/translations/strawberry_fi_FI.ts
+++ b/src/translations/strawberry_fi_FI.ts
@@ -5702,8 +5702,8 @@ Haluatko varmasti jatkaa?</translation>
<translation>Ota käyttöön</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_fr_BE.ts b/src/translations/strawberry_fr_BE.ts
index 2e4db5af..9ddfb22b 100644
--- a/src/translations/strawberry_fr_BE.ts
+++ b/src/translations/strawberry_fr_BE.ts
@@ -5702,7 +5702,7 @@ Are you sure you want to continue?</source>
<translation>Activer</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Les musiques sont scrobblées si leurs métadonnées sont valides et n&apos;ont pas plus de 30 secondes, ont été jouées pour un minimum de leur moitiés de leur longueur ou plus de 4 minutes (la première des conditions qui est vérifiée).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_fr_FR.ts b/src/translations/strawberry_fr_FR.ts
index efc76390..d8342595 100644
--- a/src/translations/strawberry_fr_FR.ts
+++ b/src/translations/strawberry_fr_FR.ts
@@ -5702,7 +5702,7 @@ Are you sure you want to continue?</source>
<translation>Activer</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Les musiques sont scrobblées si leurs métadonnées sont valides et n&apos;ont pas plus de 30 secondes, ont été jouées pour un minimum de leur moitiés de leur longueur ou plus de 4 minutes (la première des conditions qui est vérifiée).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_hu_HU.ts b/src/translations/strawberry_hu_HU.ts
index 25225a06..f2050f6d 100644
--- a/src/translations/strawberry_hu_HU.ts
+++ b/src/translations/strawberry_hu_HU.ts
@@ -5702,7 +5702,7 @@ Biztos, hogy folytatja?</translation>
<translation>Engedélyezés</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>A számok akkor lesznek scrobble-ozva, ha érvényes metaadataik vannak, 30
másodpercnél hosszabbak, illetve legalább a felükig vagy 4 percig vannak lejátszva (amelyik korábban teljesül).</translation>
</message>
diff --git a/src/translations/strawberry_id_ID.ts b/src/translations/strawberry_id_ID.ts
index 02371af3..1a82f28a 100644
--- a/src/translations/strawberry_id_ID.ts
+++ b/src/translations/strawberry_id_ID.ts
@@ -5697,7 +5697,7 @@ Apakah Anda yakin ingin melanjutkan?</translation>
<translation>Fungsikan</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Lagu akan di-scrobble jika memiliki metadata yang benar dan lebih panjang dari 30 detik, sudah berputar setidaknya setengah dari durasinya atau 4 menit (yang mana terdahulu terjadi).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_is_IS.ts b/src/translations/strawberry_is_IS.ts
index 0223dac1..f7ce4bd6 100644
--- a/src/translations/strawberry_is_IS.ts
+++ b/src/translations/strawberry_is_IS.ts
@@ -5702,7 +5702,7 @@ Ertu viss um að þú viljir halda áfram?</translation>
<translation>Virkja</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Skráðar eru hlustunarvenjur laga (scrobbling) ef þau eru með gild lýsigögn og eru lengri en 30 sekúndur, hafa verið spiluð að minnsta kosti til hálfs eða í 4 mínútur (hvort sem fyrr gerist).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_it_IT.ts b/src/translations/strawberry_it_IT.ts
index 57a0d812..683a388c 100644
--- a/src/translations/strawberry_it_IT.ts
+++ b/src/translations/strawberry_it_IT.ts
@@ -5710,7 +5710,7 @@ Non possiamo aiutarti a procurarteli.</translation>
<translation>Abilita</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>I brani vengono inviate per lo scrobble se hanno dei metadata validi, durano più di 30 secondi e sono state riprodotti per almeno la metà della loro lunghezza totale o per 4 minuti (qualsiasi dei quali avvenga prima)</translation>
</message>
<message>
diff --git a/src/translations/strawberry_ja_JP.ts b/src/translations/strawberry_ja_JP.ts
index 8573ff85..f307e194 100644
--- a/src/translations/strawberry_ja_JP.ts
+++ b/src/translations/strawberry_ja_JP.ts
@@ -5697,7 +5697,7 @@ Are you sure you want to continue?</source>
<translation>有効</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>有効なメタデータで30秒以上ある曲で、再生時間が少なくとも半分または4分間どちらか早い方になると、曲は Scrobble されます。</translation>
</message>
<message>
diff --git a/src/translations/strawberry_ko_KR.ts b/src/translations/strawberry_ko_KR.ts
index 1dae09d4..b83c151a 100644
--- a/src/translations/strawberry_ko_KR.ts
+++ b/src/translations/strawberry_ko_KR.ts
@@ -5697,7 +5697,7 @@ Are you sure you want to continue?</source>
<translation>활성화</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>곡에 올바른 메타데이터가 있고, 재생 시간이 30초보다 길고, 재생 시간의 절반 이상 재생(최대 4분)되었을 때 스크로블 기록에 추가됩니다.</translation>
</message>
<message>
diff --git a/src/translations/strawberry_nb_NO.ts b/src/translations/strawberry_nb_NO.ts
index f73e8b43..dcb93fb6 100644
--- a/src/translations/strawberry_nb_NO.ts
+++ b/src/translations/strawberry_nb_NO.ts
@@ -5702,7 +5702,7 @@ Er du sikker?</translation>
<translation>Aktiver</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Sanger blir scrobblet når de har gyldig metadata, er lengre enn 30 seconds, og har blitt spilt for minst halve tiden, eller 30 sekunder (det som skjer tidligst).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_nl_NL.ts b/src/translations/strawberry_nl_NL.ts
index e24a97ee..df12582e 100644
--- a/src/translations/strawberry_nl_NL.ts
+++ b/src/translations/strawberry_nl_NL.ts
@@ -5702,8 +5702,8 @@ Weet je zeker dat je verder wilt gaan?</translation>
<translation>Ingeschakeld</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_pl_PL.ts b/src/translations/strawberry_pl_PL.ts
index 06196ef2..acfb3949 100644
--- a/src/translations/strawberry_pl_PL.ts
+++ b/src/translations/strawberry_pl_PL.ts
@@ -5714,7 +5714,7 @@ Na pewno chcesz usunąć?</translation>
<translation>Włącz</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Utwory są scrobblowane, jeśli mają poprawne metadane, są dłuższe niż&#xa0;30 sekund oraz były odtwarzane przez przynajmniej połowę swojej długości lub przez 4 minuty.</translation>
</message>
<message>
diff --git a/src/translations/strawberry_pt_BR.ts b/src/translations/strawberry_pt_BR.ts
index ca786c8a..742df605 100644
--- a/src/translations/strawberry_pt_BR.ts
+++ b/src/translations/strawberry_pt_BR.ts
@@ -5702,8 +5702,8 @@ Deseja continuar?</translation>
<translation>Habilitar</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_ru_RU.ts b/src/translations/strawberry_ru_RU.ts
index 7e0af15b..79c0e52e 100644
--- a/src/translations/strawberry_ru_RU.ts
+++ b/src/translations/strawberry_ru_RU.ts
@@ -5712,7 +5712,7 @@ Are you sure you want to continue?</source>
<translation>Включить</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Песни скробблятся, если они содержат допустимые метаданные, длятся более 30 секунд и воспроизводятся не менее половины своей длительности или в течение 4 минут (в зависимости от того, что произойдёт раньше).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_sv_SE.ts b/src/translations/strawberry_sv_SE.ts
index d255a6aa..9fc5b773 100644
--- a/src/translations/strawberry_sv_SE.ts
+++ b/src/translations/strawberry_sv_SE.ts
@@ -5702,7 +5702,7 @@ Are you sure you want to continue?</source>
<translation>Aktivera</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Låtar skrobblas om de har giltiga metadata och är längre än 30 sekunder, har spelats under minst halva dess varaktighet eller i 4 minuter (beroende på vilket som inträffar först).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_tr_CY.ts b/src/translations/strawberry_tr_CY.ts
index 18153843..d2213129 100644
--- a/src/translations/strawberry_tr_CY.ts
+++ b/src/translations/strawberry_tr_CY.ts
@@ -5702,8 +5702,8 @@ Are you sure you want to continue?</translation>
<translation type="unfinished">Enable</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_tr_TR.ts b/src/translations/strawberry_tr_TR.ts
index 2a9ffa1a..0a0ec467 100644
--- a/src/translations/strawberry_tr_TR.ts
+++ b/src/translations/strawberry_tr_TR.ts
@@ -5702,8 +5702,8 @@ Devam etmek istediğinizden emin misiniz?</translation>
<translation>Etkinleştir</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
diff --git a/src/translations/strawberry_uk_UA.ts b/src/translations/strawberry_uk_UA.ts
index 6f93fa33..a72361ff 100644
--- a/src/translations/strawberry_uk_UA.ts
+++ b/src/translations/strawberry_uk_UA.ts
@@ -5712,7 +5712,7 @@ Are you sure you want to continue?</source>
<translation>Увімкнути</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Композиції скроблюються, якщо вони мають дійсні метадані, мають тривалість більше 30 секунд та відтворюються щонайменше половину тривалості або 4 хвилини (залежно від того, що станеться раніше).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_vi_VN.ts b/src/translations/strawberry_vi_VN.ts
index 4a6c0602..d16c1116 100644
--- a/src/translations/strawberry_vi_VN.ts
+++ b/src/translations/strawberry_vi_VN.ts
@@ -5697,7 +5697,7 @@ Bạn có chắc chắn muốn tiếp tục không?</translation>
<translation>Bật</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>Các bài sẽ được scrobble nếu có siêu dữ liệu hợp lệ và dài hơn 30 giây, đã phát ít nhất một nửa thời lượng hoặc 4 phút (cái nào xảy ra trước).</translation>
</message>
<message>
diff --git a/src/translations/strawberry_zh_CN.ts b/src/translations/strawberry_zh_CN.ts
index dac45b7e..16d97460 100644
--- a/src/translations/strawberry_zh_CN.ts
+++ b/src/translations/strawberry_zh_CN.ts
@@ -5697,7 +5697,7 @@ Are you sure you want to continue?</source>
<translation>启用</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
<translation>如果歌曲具有有效的元数据并且长度超过 30 秒,播放时间至少为其持续时间的一半或 4 分钟(以先发生者为准),则会被记录。</translation>
</message>
<message>
diff --git a/src/translations/strawberry_zh_TW.ts b/src/translations/strawberry_zh_TW.ts
index e585c084..673fe142 100644
--- a/src/translations/strawberry_zh_TW.ts
+++ b/src/translations/strawberry_zh_TW.ts
@@ -5698,8 +5698,8 @@ Are you sure you want to continue?</translation>
<translation type="unfinished">Enable</translation>
</message>
<message>
- <source>Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
- <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 30 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
+ <source>Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</source>
+ <translation type="unfinished">Songs are scrobbled if they have valid metadata and are longer than 15 seconds, have been playing for at least half its duration or for 4 minutes (whichever occurs earlier).</translation>
</message>
<message>
<source>Show scrobble button</source>
--
2.51.2

View File

@ -1,4 +1,5 @@
{ {
lib,
fetchFromGitea, fetchFromGitea,
writeShellScript, writeShellScript,
writableTmpDirAsHomeHook, writableTmpDirAsHomeHook,
@ -91,4 +92,16 @@ in stdenvNoCC.mkDerivation rec {
runHook postInstall runHook postInstall
''; '';
meta = {
description = "A LaTeX Beamer theme, forked from the metropolis theme (with dragon patches) ";
longDescription = ''
This package cannot be installed or used directly. Please use `texlive.withPackages (ps: [ ps.${lib.strings.escapeNixIdentifier pname} ])`.
'';
homepage = "https://git.lain.faith/haskal/moloch-dragon";
outputsToInstall = [ ];
priority = 10;
platforms = lib.platforms.all;
license = lib.licenses.cc-by-sa-40;
};
} }

View File

@ -7,13 +7,17 @@ rec {
dragnpkgs-unstable = getFlake "dragnpkgs-unstable"; dragnpkgs-unstable = getFlake "dragnpkgs-unstable";
pkgs = dragnpkgs.legacyPackages.${currentSystem}; pkgs = dragnpkgs.legacyPackages.${currentSystem};
pkgs-unstable = dragnpkgs-unstable.legacyPackages.${currentSystem}; pkgs-unstable = dragnpkgs-unstable.legacyPackages.${currentSystem};
inherit (pkgs) lib; lib =
if prev ? lib then
f = getFlake "git+file:${builtins.getEnv "PWD"}"; prev.lib
fp =
if (builtins.hasAttr "legacyPackages" f) then
f.legacyPackages.${currentSystem}
else else
f.packages.${currentSystem}; pkgs.lib;
fs = f.devShells.${currentSystem};
fp =
if final ? legacyPackages then
final.legacyPackages.${currentSystem}
else
final.packages.${currentSystem};
flp = final.legacyPackages.${currentSystem};
fs = final.devShells.${currentSystem};
} }

View File

@ -3,20 +3,19 @@
outputs = { self, dragnpkgs } @ inputs: dragnpkgs.lib.mkFlake { outputs = { self, dragnpkgs } @ inputs: dragnpkgs.lib.mkFlake {
# Define a texlive environment to use # Define a texlive environment to use
packages.texlive-custom = { texliveMedium, texliveDragonPackages }: packages.texlive-custom = { texliveDragonPackages }:
texliveMedium.withPackages (ps: with ps; [ texliveDragonPackages.scheme.withPackages (ps: with ps; [
fontawesome5 # add more texlive dependencies here
texliveDragonPackages.moloch
]); ]);
# Package definition for building the PDF # Package definition for building the PDF
packages.default = { system, stdenvNoCC }: stdenvNoCC.mkDerivation rec { packages.default = { stdenv }: stdenv.mkDerivation rec {
pname = "my-beamer-presentation"; pname = "my-beamer-presentation";
name = "${pname}.pdf"; name = "${pname}.pdf";
nativeBuildInputs = [ nativeBuildInputs = [
self.packages.${system}.texlive-custom self.packages.${stdenv.hostPlatform.system}.texlive-custom
]; ];
src = self; src = self;
@ -31,16 +30,16 @@
}; };
# Runnable package (ie `nix run`) to start the presentation # Runnable package (ie `nix run`) to start the presentation
apps.default = { lib, system, writeShellScript, pympress }: { apps.default = { lib, stdenv, writeShellScript, pympress }: {
type = "app"; type = "app";
program = "${writeShellScript "start-presentation" '' program = "${writeShellScript "start-presentation" ''
exec ${lib.getExe pympress} ${self.packages.${system}.default} exec ${lib.getExe pympress} ${self.packages.${stdenv.hostPlatform.system}.default}
''}"; ''}";
}; };
# Devshell definition to expose the texlive environment to eg nvim # Devshell definition to expose the texlive environment to eg nvim
devShells.default = { mkShell, system }: mkShell { devShells.default = { mkShell, stdenv }: mkShell {
packages = [ self.packages.${system}.texlive-custom ]; packages = [ self.packages.${stdenv.hostPlatform.system}.texlive-custom ];
}; };
}; };
} }