Merge master into staging-next
This commit is contained in:
@@ -10754,6 +10754,12 @@
|
||||
githubId = 54179289;
|
||||
name = "Jason Miller";
|
||||
};
|
||||
jmir = {
|
||||
email = "joel@miramon.de";
|
||||
github = "jmir1";
|
||||
githubId = 43830312;
|
||||
name = "Joël Miramon";
|
||||
};
|
||||
jn-sena = {
|
||||
email = "jn-sena@proton.me";
|
||||
github = "jn-sena";
|
||||
@@ -12700,6 +12706,12 @@
|
||||
githubId = 29217594;
|
||||
name = "Brian Leung";
|
||||
};
|
||||
levigross = {
|
||||
email = "levi@levigross.com";
|
||||
github = "levigross";
|
||||
githubId = 80920;
|
||||
name = "Levi Gross";
|
||||
};
|
||||
lewo = {
|
||||
email = "lewo@abesis.fr";
|
||||
matrix = "@lewo:matrix.org";
|
||||
@@ -23242,6 +23254,13 @@
|
||||
github = "uku3lig";
|
||||
githubId = 61147779;
|
||||
};
|
||||
ulinja = {
|
||||
email = "julian@lobbes.dev";
|
||||
github = "ulinja";
|
||||
githubId = 56582668;
|
||||
name = "Julian Lobbes";
|
||||
keys = [ { fingerprint = "24D9 B20A 65C2 DFB9 8E6A 754C 8EC4 6A5E 6743 3524"; } ];
|
||||
};
|
||||
ulrikstrid = {
|
||||
email = "ulrik.strid@outlook.com";
|
||||
github = "ulrikstrid";
|
||||
|
||||
@@ -95,6 +95,8 @@
|
||||
|
||||
- [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr), a proxy server to bypass Cloudflare protection. Available as [services.flaresolverr](#opt-services.flaresolverr.enable).
|
||||
|
||||
- [Whisparr](https://wiki.servarr.com/en/whisparr), an adult movie collection manager for Usenet and BitTorrent users. Available as [services.whisparr](#opt-services.whisparr.enable).
|
||||
|
||||
- [Gancio](https://gancio.org/), a shared agenda for local communities. Available as [services.gancio](#opt-services.gancio.enable).
|
||||
|
||||
- [Goatcounter](https://www.goatcounter.com/), an easy web analytics platform with no tracking of personal data. Available as [services.goatcounter](options.html#opt-services.goatcounter.enable).
|
||||
|
||||
@@ -102,6 +102,8 @@
|
||||
|
||||
- The behavior of the `networking.nat.externalIP` and `networking.nat.externalIPv6` options has been changed. `networking.nat.forwardPorts` now only forwards packets destined for the specified IP addresses.
|
||||
|
||||
- `python3Packages.jaeger-client` was removed because it was deprecated upstream. [OpenTelemetry](https://opentelemetry.io) is the recommended replacement.
|
||||
|
||||
- `nodePackages.meshcommander` has been removed, as the package was deprecated by Intel.
|
||||
|
||||
- `kanata` was updated to v1.7.0, which introduces several breaking changes.
|
||||
@@ -139,6 +141,8 @@
|
||||
|
||||
- `nodePackages.stackdriver-statsd-backend` has been removed, as the StackDriver service has been discontinued by Google, and therefore the package no longer works.
|
||||
|
||||
- `python3Packages.opentracing` has been removed due to being unmaintained upstream. [OpenTelemetry](https://opentelemetry.io/) is the recommended replacement.
|
||||
|
||||
- the notmuch vim plugin now lives in a separate output of the `notmuch`
|
||||
package. Installing `notmuch` will not bring the notmuch vim package anymore,
|
||||
add `vimPlugins.notmuch-vim` to your (Neo)vim configuration if you want the
|
||||
@@ -167,6 +171,8 @@
|
||||
|
||||
- `bind.cacheNetworks` now only controls access for recursive queries, where it previously controlled access for all queries.
|
||||
|
||||
- `programs.fzf.keybindings` now supports the fish shell.
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
## Nixpkgs Library {#sec-release-25.05-lib}
|
||||
|
||||
@@ -16,7 +16,7 @@ in
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.udev.packages = [
|
||||
pkgs.steam-unwrapped
|
||||
pkgs.steam-devices-udev-rules
|
||||
];
|
||||
|
||||
# The uinput module needs to be loaded in order to trigger the udev rules
|
||||
|
||||
@@ -355,6 +355,7 @@ in
|
||||
rstudio-server = 324;
|
||||
localtimed = 325;
|
||||
automatic-timezoned = 326;
|
||||
whisparr = 328;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid.
|
||||
#
|
||||
@@ -683,6 +684,7 @@ in
|
||||
localtimed = 325;
|
||||
automatic-timezoned = 326;
|
||||
uinput = 327;
|
||||
whisparr = 328;
|
||||
|
||||
# When adding a gid, make sure it doesn't match an existing
|
||||
# uid. Users and groups with the same name should have equal
|
||||
|
||||
@@ -886,6 +886,7 @@
|
||||
./services/misc/wastebin.nix
|
||||
./services/misc/weechat.nix
|
||||
./services/misc/workout-tracker.nix
|
||||
./services/misc/whisparr.nix
|
||||
./services/misc/xmrig.nix
|
||||
./services/misc/zoneminder.nix
|
||||
./services/misc/zookeeper.nix
|
||||
|
||||
@@ -12,7 +12,7 @@ in
|
||||
};
|
||||
|
||||
config = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) {
|
||||
environment.systemPackages = lib.mkIf (cfg.keybindings || cfg.fuzzyCompletion) [ pkgs.fzf ];
|
||||
environment.systemPackages = [ pkgs.fzf ];
|
||||
|
||||
programs = {
|
||||
# load after programs.bash.completion.enable
|
||||
@@ -32,6 +32,10 @@ in
|
||||
|
||||
ohMyZsh.plugins = lib.mkIf config.programs.zsh.ohMyZsh.enable [ "fzf" ];
|
||||
};
|
||||
|
||||
fish.interactiveShellInit = lib.optionalString cfg.keybindings ''
|
||||
source ${pkgs.fzf}/share/fzf/key-bindings.fish
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.whisparr;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.whisparr = {
|
||||
enable = lib.mkEnableOption "Whisparr";
|
||||
|
||||
package = lib.mkPackageOption pkgs "whisparr" { };
|
||||
|
||||
dataDir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "/var/lib/whisparr/.config/Whisparr";
|
||||
description = "The directory where Whisparr stores its data files.";
|
||||
};
|
||||
|
||||
openFirewall = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Open ports in the firewall for the Whisparr web interface.";
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "whisparr";
|
||||
description = "User account under which Whisparr runs.";
|
||||
};
|
||||
|
||||
group = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "whisparr";
|
||||
description = "Group under which Whisparr runs.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.tmpfiles.rules = [ "d '${cfg.dataDir}' 0700 ${cfg.user} ${cfg.group} - -" ];
|
||||
|
||||
systemd.services.whisparr = {
|
||||
description = "Whisparr";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
ExecStart = "${lib.getExe cfg.package} -nobrowser -data='${cfg.dataDir}'";
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall = lib.mkIf cfg.openFirewall { allowedTCPPorts = [ 6969 ]; };
|
||||
|
||||
users.users = lib.mkIf (cfg.user == "whisparr") {
|
||||
whisparr = {
|
||||
group = cfg.group;
|
||||
home = cfg.dataDir;
|
||||
uid = config.ids.uids.whisparr;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = lib.mkIf (cfg.group == "whisparr") { whisparr.gid = config.ids.gids.whisparr; };
|
||||
};
|
||||
}
|
||||
@@ -1148,6 +1148,7 @@ in {
|
||||
watchdogd = handleTest ./watchdogd.nix {};
|
||||
webhook = runTest ./webhook.nix;
|
||||
weblate = handleTest ./web-apps/weblate.nix {};
|
||||
whisparr = handleTest ./whisparr.nix {};
|
||||
wiki-js = handleTest ./wiki-js.nix {};
|
||||
wine = handleTest ./wine.nix {};
|
||||
wireguard = handleTest ./wireguard {};
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
import ./make-test-python.nix (
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "whisparr";
|
||||
meta.maintainers = [ lib.maintainers.paveloom ];
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.whisparr.enable = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("whisparr.service")
|
||||
machine.wait_for_open_port(6969)
|
||||
machine.succeed("curl --fail http://localhost:6969/")
|
||||
'';
|
||||
}
|
||||
)
|
||||
@@ -37,11 +37,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "hugin";
|
||||
version = "2023.0.0";
|
||||
version = "2024.0.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/hugin/hugin-${version}.tar.bz2";
|
||||
hash = "sha256-BKOfzMYBfgVExjm9IjCUcsV001s0Vcut4fw4cOYxYys=";
|
||||
hash = "sha256-E+wM3utOtjFJyDN2jT43Tnz1pqjY0C1QiFzklvBbp+Q=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
@@ -71,7 +71,9 @@ stdenv.mkDerivation rec {
|
||||
zlib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ cmake makeWrapper pkg-config wrapGAppsHook3 ];
|
||||
nativeBuildInputs = [ cmake makeWrapper pkg-config wrapGAppsHook3 wxGTK ];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
# disable installation of the python scripting interface
|
||||
cmakeFlags = [ "-DBUILD_HSI:BOOl=OFF" ];
|
||||
@@ -89,7 +91,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://hugin.sourceforge.net/";
|
||||
homepage = "https://hugin.sourceforge.io/";
|
||||
description = "Toolkit for stitching photographs and assembling panoramas, together with an easy to use graphical front end";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ hrdinka ];
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "valentina";
|
||||
version = "0.7.52";
|
||||
version = "0.7.53";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "smart-pattern";
|
||||
repo = "valentina";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DmNRBxqyBvDTdA7Sz9X04Dhejtxx7tOVpST+SkUNguM=";
|
||||
hash = "sha256-vIlqrK7wyFaXKfvcJ3FtkAwUt6Xb/47qxcDGy1Ty2uk=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
builtins.mapAttrs (pname: { doCheck ? true, mainProgram ? pname, subPackages }: buildGoModule rec {
|
||||
inherit pname;
|
||||
version = "3.29.0";
|
||||
version = "3.29.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "projectcalico";
|
||||
repo = "calico";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-bgcY/unCLAtPOeEwRJGl8u1dHYdO3tSzMTg47DHOsJM=";
|
||||
hash = "sha256-e/xyrFJ9t+awpU8u8uYmXFRnk92/06vI5OoClyAMKTU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-9Kap6qHIttgMRSnSnTUvWj72jp5u2vIMy5l2sJRfKlU=";
|
||||
vendorHash = "sha256-OP3J2NE491Aivzo80OmLAyQGe3hixLTz0p9FSA897ao=";
|
||||
|
||||
inherit doCheck subPackages;
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "datovka";
|
||||
version = "4.24.1";
|
||||
version = "4.24.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://gitlab.nic.cz/datovka/datovka/-/archive/v${version}/datovka-v${version}.tar.gz";
|
||||
sha256 = "sha256-/thevIj3nliVkkFGQ0fr6qAprkNj1FgHsXx7Wmn10xI=";
|
||||
sha256 = "sha256-5wgtL3j/3BdYxHTGrK1KCK1t8GTiERaH2nIlRYm5XQU=";
|
||||
};
|
||||
|
||||
buildInputs = [ libdatovka qmake qtbase qtsvg libxml2 qtwebsockets ];
|
||||
|
||||
@@ -25,7 +25,7 @@ buildGoModule rec {
|
||||
src = fetchFromGitHub {
|
||||
owner = "rclone";
|
||||
repo = "rclone";
|
||||
rev = "v${version}";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-3Al58jg+pYP46VbpIRbYBhMOG6m7OQaC0pxKawX12E8=";
|
||||
};
|
||||
|
||||
@@ -47,7 +47,7 @@ buildGoModule rec {
|
||||
ldflags = [
|
||||
"-s"
|
||||
"-w"
|
||||
"-X github.com/rclone/rclone/fs.Version=${version}"
|
||||
"-X github.com/rclone/rclone/fs.Version=${src.tag}"
|
||||
];
|
||||
|
||||
postConfigure = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
|
||||
|
||||
@@ -133,7 +133,7 @@ llvmPackages.stdenv.mkDerivation rec {
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"v(\d\.\d)"
|
||||
"v(\\d\\.\\d)"
|
||||
];
|
||||
};
|
||||
# Let the user access the chosen uClibc outside the derivation.
|
||||
|
||||
@@ -99,7 +99,7 @@ llvmPackages.stdenv.mkDerivation rec {
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"v(\d\.\d)"
|
||||
"v(\\d\\.\\d)"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ lib, stdenv, makeWrapper, openjdk, gtk2, xorg, glibcLocales, releasePath ? null }:
|
||||
{ lib, stdenv, autoPatchelfHook, makeDesktopItem, copyDesktopItems, makeWrapper, alsa-lib, glib, glib-networking, gsettings-desktop-schemas, gtk3, libsecret, openjdk, sqlite, unixODBC, gtk2, xorg, glibcLocales, releasePath ? null }:
|
||||
|
||||
# To use this package, you need to download your own cplex installer from IBM
|
||||
# and override the releasePath attribute to point to the location of the file.
|
||||
@@ -26,51 +26,97 @@ stdenv.mkDerivation rec {
|
||||
else
|
||||
releasePath;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
buildInputs = [ openjdk gtk2 xorg.libXtst glibcLocales ];
|
||||
nativeBuildInputs = [ autoPatchelfHook copyDesktopItems makeWrapper openjdk ];
|
||||
buildInputs = [ alsa-lib gsettings-desktop-schemas gtk2 sqlite unixODBC xorg.libXtst glibcLocales ];
|
||||
|
||||
unpackPhase = "cp $src $name";
|
||||
|
||||
patchPhase = ''
|
||||
postPatch = ''
|
||||
sed -i -e 's|/usr/bin/tr"|tr" |' $name
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
export JAVA_TOOL_OPTIONS=-Djdk.util.zip.disableZip64ExtraFieldValidation=true
|
||||
sh $name LAX_VM ${openjdk}/bin/java -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=$out
|
||||
sh $name LAX_VM "$(command -v java)" -i silent -DLICENSE_ACCEPTED=TRUE -DUSER_INSTALL_DIR=$out
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
ln -s $out/opl/bin/x86-64_linux/oplrun\
|
||||
$out/opl/bin/x86-64_linux/oplrunjava\
|
||||
$out/opl/oplide/oplide\
|
||||
$out/cplex/bin/x86-64_linux/cplex\
|
||||
$out/cpoptimizer/bin/x86-64_linux/cpoptimizer\
|
||||
$out/bin
|
||||
'';
|
||||
|
||||
fixupPhase =
|
||||
let
|
||||
libraryPath = lib.makeLibraryPath [ stdenv.cc.cc gtk2 xorg.libXtst ];
|
||||
installPhase = let
|
||||
libraryPath = lib.makeLibraryPath [ stdenv.cc.cc glib gtk2 gtk3 libsecret xorg.libXtst ];
|
||||
in ''
|
||||
interpreter=${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2
|
||||
runHook preInstall
|
||||
|
||||
for pgm in $out/opl/bin/x86-64_linux/oplrun $out/opl/bin/x86-64_linux/oplrunjava $out/opl/oplide/oplide;
|
||||
do
|
||||
patchelf --set-interpreter "$interpreter" $pgm;
|
||||
wrapProgram $pgm \
|
||||
--prefix LD_LIBRARY_PATH : $out/opl/bin/x86-64_linux:${libraryPath} \
|
||||
--set LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive;
|
||||
done
|
||||
mkdir -p $out/bin
|
||||
|
||||
for pgm in $out/cplex/bin/x86-64_linux/cplex $out/cpoptimizer/bin/x86-64_linux/cpoptimizer $out/opl/oplide/jre/bin/*;
|
||||
for pgm in \
|
||||
$out/opl/bin/x86-64_linux/oplrun \
|
||||
$out/opl/bin/x86-64_linux/oplrunjava \
|
||||
$out/opl/oplide/oplide \
|
||||
$out/cplex/bin/x86-64_linux/cplex \
|
||||
$out/cpoptimizer/bin/x86-64_linux/cpoptimizer
|
||||
do
|
||||
if grep ELF $pgm > /dev/null;
|
||||
then
|
||||
patchelf --set-interpreter "$interpreter" $pgm;
|
||||
makeWrapperArgs=(
|
||||
--set-default LOCALE_ARCHIVE ${glibcLocales}/lib/locale/locale-archive
|
||||
)
|
||||
|
||||
if [[ "$pgm" = "$out/opl/oplide/oplide" ]]; then
|
||||
makeWrapperArgs+=(
|
||||
--prefix LD_LIBRARY_PATH : ${libraryPath}
|
||||
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules"
|
||||
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH"
|
||||
)
|
||||
fi
|
||||
|
||||
makeWrapper "$pgm" "$out/bin/$(basename "$pgm")" "''${makeWrapperArgs[@]}"
|
||||
done
|
||||
|
||||
mkdir -p $out/share/pixmaps
|
||||
ln -s $out/opl/oplide/icon.xpm $out/share/pixmaps/oplide.xpm
|
||||
|
||||
mkdir -p $out/share/doc
|
||||
mv $out/doc $out/share/doc/$name
|
||||
|
||||
mkdir -p $out/share/licenses
|
||||
mv $out/license $out/share/licenses/$name
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "oplide";
|
||||
desktopName = "IBM ILOG CPLEX Optimization Studio";
|
||||
genericName = "Optimization Software";
|
||||
icon = "oplide";
|
||||
exec = "oplide";
|
||||
categories = [ "Development" "IDE" "Math" "Science" ];
|
||||
})
|
||||
];
|
||||
|
||||
fixupPhase = ''
|
||||
runHook preFixup
|
||||
|
||||
rm -r $out/Uninstall
|
||||
|
||||
bins=(
|
||||
$out/bin/*
|
||||
$out/cplex/bin/x86-64_linux/cplex
|
||||
$out/cplex/bin/x86-64_linux/cplexamp
|
||||
$out/cpoptimizer/bin/x86-64_linux/cpoptimizer
|
||||
$out/opl/bin/x86-64_linux/oplrun
|
||||
$out/opl/bin/x86-64_linux/oplrunjava
|
||||
$out/opl/oplide/jre/bin/*
|
||||
$out/opl/oplide/oplide
|
||||
)
|
||||
|
||||
find $out -type d -exec chmod 755 {} \;
|
||||
find $out -type f -exec chmod 644 {} \;
|
||||
chmod +111 "''${bins[@]}"
|
||||
|
||||
runHook postFixup
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
@@ -81,6 +127,7 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
description = "Optimization solver for mathematical programming";
|
||||
homepage = "https://www.ibm.com/be-en/marketplace/ibm-ilog-cplex";
|
||||
mainProgram = "cplex";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.unfree;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
|
||||
@@ -10,12 +10,12 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "3.8.5";
|
||||
version = "3.8.7";
|
||||
src = fetchFromGitHub {
|
||||
owner = "openrefine";
|
||||
repo = "openrefine";
|
||||
rev = version;
|
||||
hash = "sha256-8QAnZCvSUMuRj/Rd85j79GXDQxl8HlEaiU4StsXDdpU=";
|
||||
hash = "sha256-ViksKZ57DCIPShrK4PDBK0o8OttQKYt5wsnQ4+aPUDE=";
|
||||
};
|
||||
|
||||
npmPkg = buildNpmPackage {
|
||||
|
||||
@@ -15,14 +15,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kaffeine";
|
||||
version = "2.0.18";
|
||||
version = "2.0.19";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "invent.kde.org";
|
||||
repo = pname;
|
||||
owner = "Multimedia";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-FOaS9gkzkHglbsNBNMwjzbHCNQg3Mbf+9so/Vfbaquc=";
|
||||
hash = "sha256-AHyUS2vyeuWFLRXdIoy1sbssDgzz7N957vyf5rWiooI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -378,6 +378,18 @@ stdenvNoCC.mkDerivation {
|
||||
substituteAll ${./add-darwin-ldflags-before.sh} $out/nix-support/add-local-ldflags-before.sh
|
||||
''
|
||||
|
||||
##
|
||||
## LLVM ranlab lacks -t option that libtool expects. We can just
|
||||
## skip it
|
||||
##
|
||||
|
||||
+ optionalString (isLLVM && targetPlatform.isOpenBSD) ''
|
||||
rm $out/bin/${targetPrefix}ranlib
|
||||
wrap \
|
||||
${targetPrefix}ranlib ${./llvm-ranlib-wrapper.sh} \
|
||||
"${bintools_bin}/bin/${targetPrefix}ranlib"
|
||||
''
|
||||
|
||||
##
|
||||
## Extra custom steps
|
||||
##
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
#! @shell@
|
||||
# shellcheck shell=bash
|
||||
|
||||
args=()
|
||||
for p in "$@"; do
|
||||
case "$p" in
|
||||
-t)
|
||||
# Skip, LLVM ranlib doesn't support
|
||||
;;
|
||||
*)
|
||||
args+=("$p")
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@prog@ "${args[@]}"
|
||||
@@ -719,7 +719,7 @@ rec {
|
||||
(name: value:
|
||||
{
|
||||
inherit value;
|
||||
name = lib.head (builtins.match "${builtins.storeDir}/[${nixHashChars}]+-(.*)\.drv" name);
|
||||
name = lib.head (builtins.match "${builtins.storeDir}/[${nixHashChars}]+-(.*)\\.drv" name);
|
||||
})
|
||||
derivations;
|
||||
# The syntax of output paths differs between outputs named `out`
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "alfaview";
|
||||
version = "9.18.1";
|
||||
version = "9.19.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://assets.alfaview.com/stable/linux/deb/${pname}_${version}.deb";
|
||||
hash = "sha256-O0lFDyIL+BJBRfPKsEm7+sdoyPBojgN3uVSe6e75HqI=";
|
||||
hash = "sha256-o0sB+JLwemUNRflp8cR0exc5QvCkpxIAVd/g4vwix6Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
Generated
+99
-142
@@ -166,7 +166,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_audio"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_session",
|
||||
@@ -182,7 +182,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_client_core"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_audio",
|
||||
"alvr_common",
|
||||
@@ -192,7 +192,7 @@ dependencies = [
|
||||
"android_logger",
|
||||
"app_dirs2",
|
||||
"bincode",
|
||||
"bindgen",
|
||||
"bindgen 0.70.1",
|
||||
"cc",
|
||||
"env_logger",
|
||||
"glow",
|
||||
@@ -217,7 +217,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_client_mock"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_client_core",
|
||||
"alvr_common",
|
||||
@@ -230,7 +230,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_client_openxr"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_client_core",
|
||||
"alvr_common",
|
||||
@@ -245,7 +245,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_common"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"backtrace",
|
||||
@@ -262,7 +262,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_dashboard"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_events",
|
||||
@@ -273,15 +273,10 @@ dependencies = [
|
||||
"alvr_session",
|
||||
"bincode",
|
||||
"chrono",
|
||||
"console_error_panic_hook",
|
||||
"cros-libva",
|
||||
"eframe",
|
||||
"env_logger",
|
||||
"ewebsock",
|
||||
"futures",
|
||||
"gloo-net",
|
||||
"ico",
|
||||
"instant",
|
||||
"nvml-wrapper",
|
||||
"rand",
|
||||
"serde",
|
||||
@@ -289,17 +284,15 @@ dependencies = [
|
||||
"settings-schema",
|
||||
"statrs",
|
||||
"sysinfo",
|
||||
"tungstenite 0.23.0",
|
||||
"tungstenite 0.24.0",
|
||||
"ureq",
|
||||
"wasm-bindgen-futures",
|
||||
"wasm-logger",
|
||||
"wgpu",
|
||||
"winres",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "alvr_events"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_packets",
|
||||
@@ -310,7 +303,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_filesystem"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"dirs",
|
||||
"once_cell",
|
||||
@@ -318,7 +311,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_gui_common"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"egui",
|
||||
@@ -326,7 +319,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_launcher"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_gui_common",
|
||||
@@ -346,7 +339,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_packets"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_session",
|
||||
@@ -356,7 +349,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_server_core"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_audio",
|
||||
"alvr_common",
|
||||
@@ -389,7 +382,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_server_io"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_events",
|
||||
@@ -405,7 +398,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_server_openvr"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_filesystem",
|
||||
@@ -413,7 +406,7 @@ dependencies = [
|
||||
"alvr_server_core",
|
||||
"alvr_server_io",
|
||||
"alvr_session",
|
||||
"bindgen",
|
||||
"bindgen 0.70.1",
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"walkdir",
|
||||
@@ -421,7 +414,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_session"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_filesystem",
|
||||
@@ -434,7 +427,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_sockets"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_session",
|
||||
@@ -447,7 +440,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_vrcompositor_wrapper"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_filesystem",
|
||||
@@ -457,11 +450,11 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_vulkan_layer"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_common",
|
||||
"alvr_filesystem",
|
||||
"bindgen",
|
||||
"bindgen 0.70.1",
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"walkdir",
|
||||
@@ -469,7 +462,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "alvr_xtask"
|
||||
version = "20.11.0"
|
||||
version = "20.11.1"
|
||||
dependencies = [
|
||||
"alvr_filesystem",
|
||||
"pico-args",
|
||||
@@ -1063,6 +1056,24 @@ dependencies = [
|
||||
"itertools",
|
||||
"lazy_static",
|
||||
"lazycell",
|
||||
"proc-macro2",
|
||||
"quote",
|
||||
"regex",
|
||||
"rustc-hash",
|
||||
"shlex",
|
||||
"syn 2.0.70",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "bindgen"
|
||||
version = "0.70.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f"
|
||||
dependencies = [
|
||||
"bitflags 2.6.0",
|
||||
"cexpr",
|
||||
"clang-sys",
|
||||
"itertools",
|
||||
"log",
|
||||
"prettyplease",
|
||||
"proc-macro2",
|
||||
@@ -1071,7 +1082,6 @@ dependencies = [
|
||||
"rustc-hash",
|
||||
"shlex",
|
||||
"syn 2.0.70",
|
||||
"which",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1440,16 +1450,6 @@ dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "console_error_panic_hook"
|
||||
version = "0.1.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"wasm-bindgen",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "constant_time_eq"
|
||||
version = "0.3.0"
|
||||
@@ -1531,7 +1531,7 @@ version = "0.2.15"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"bindgen 0.69.4",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -1593,16 +1593,35 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cros-libva"
|
||||
version = "0.0.6"
|
||||
version = "0.0.7"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0f75943ee30eb2f8b4f3beb8f047e69ecc1c91d098c344b34a0fdd8dd8b2614a"
|
||||
checksum = "1b1546af142fbf11a5cad3d1ee2ef64e4d7b69a28b244a79484024a1bc931c17"
|
||||
dependencies = [
|
||||
"bitflags 1.3.2",
|
||||
"bitflags 2.6.0",
|
||||
"log",
|
||||
"pkg-config",
|
||||
"thiserror",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-deque"
|
||||
version = "0.8.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d"
|
||||
dependencies = [
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.9.18"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e"
|
||||
dependencies = [
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.8.20"
|
||||
@@ -2086,21 +2105,6 @@ dependencies = [
|
||||
"pin-project-lite",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ewebsock"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6177769715c6ec5a324acee995183b22721ea23c58e49af14a828eadec85d120"
|
||||
dependencies = [
|
||||
"document-features",
|
||||
"js-sys",
|
||||
"log",
|
||||
"tungstenite 0.21.0",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "exec"
|
||||
version = "0.3.1"
|
||||
@@ -2418,9 +2422,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "glam"
|
||||
version = "0.28.0"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "779ae4bf7e8421cf91c0b3b64e7e8b40b862fba4d393f59150042de7c4965a94"
|
||||
checksum = "c28091a37a5d09b555cb6628fd954da299b536433834f5b8e59eba78e0cbbf8a"
|
||||
dependencies = [
|
||||
"serde",
|
||||
]
|
||||
@@ -2431,40 +2435,6 @@ version = "0.3.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b"
|
||||
|
||||
[[package]]
|
||||
name = "gloo-net"
|
||||
version = "0.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "43aaa242d1239a8822c15c645f02166398da4f8b5c4bae795c1f5b44e9eee173"
|
||||
dependencies = [
|
||||
"futures-channel",
|
||||
"futures-core",
|
||||
"futures-sink",
|
||||
"gloo-utils",
|
||||
"http 0.2.12",
|
||||
"js-sys",
|
||||
"pin-project",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"thiserror",
|
||||
"wasm-bindgen",
|
||||
"wasm-bindgen-futures",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gloo-utils"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0b5555354113b18c547c1d3a98fbf7fb32a9ff4f6fa112ce823a21641a0ba3aa"
|
||||
dependencies = [
|
||||
"js-sys",
|
||||
"serde",
|
||||
"serde_json",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "glow"
|
||||
version = "0.13.1"
|
||||
@@ -3023,9 +2993,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"js-sys",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -3268,7 +3235,7 @@ version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bf0d9716420364790e85cbb9d3ac2c950bde16a7dd36f3209b7dfdfc4a24d01f"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"bindgen 0.69.4",
|
||||
"cc",
|
||||
"system-deps",
|
||||
]
|
||||
@@ -4089,8 +4056,8 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "openxr"
|
||||
version = "0.19.0"
|
||||
source = "git+https://github.com/Ralith/openxrs#d8ea5553d52c4bbaefe2537b8d70b8752f73694d"
|
||||
version = "0.18.0"
|
||||
source = "git+https://github.com/Ralith/openxrs?rev=9270509d23dc774b43a8b7289e8adf69fcac6828#9270509d23dc774b43a8b7289e8adf69fcac6828"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"libloading 0.8.4",
|
||||
@@ -4100,8 +4067,8 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "openxr-sys"
|
||||
version = "0.11.0"
|
||||
source = "git+https://github.com/Ralith/openxrs#d8ea5553d52c4bbaefe2537b8d70b8752f73694d"
|
||||
version = "0.10.0"
|
||||
source = "git+https://github.com/Ralith/openxrs?rev=9270509d23dc774b43a8b7289e8adf69fcac6828#9270509d23dc774b43a8b7289e8adf69fcac6828"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
@@ -4275,7 +4242,7 @@ version = "0.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "849e188f90b1dda88fe2bfe1ad31fe5f158af2c98f80fb5d13726c44f3f01112"
|
||||
dependencies = [
|
||||
"bindgen",
|
||||
"bindgen 0.69.4",
|
||||
"libspa-sys",
|
||||
"system-deps",
|
||||
]
|
||||
@@ -4541,6 +4508,26 @@ version = "0.2.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3"
|
||||
|
||||
[[package]]
|
||||
name = "rayon"
|
||||
version = "1.10.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa"
|
||||
dependencies = [
|
||||
"either",
|
||||
"rayon-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rayon-core"
|
||||
version = "1.12.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2"
|
||||
dependencies = [
|
||||
"crossbeam-deque",
|
||||
"crossbeam-utils",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "redox_syscall"
|
||||
version = "0.3.5"
|
||||
@@ -5340,16 +5327,16 @@ checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394"
|
||||
|
||||
[[package]]
|
||||
name = "sysinfo"
|
||||
version = "0.30.13"
|
||||
version = "0.31.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3"
|
||||
checksum = "355dbe4f8799b304b05e1b0f05fc59b2a18d36645cf169607da45bde2f69a1be"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"core-foundation-sys",
|
||||
"libc",
|
||||
"memchr",
|
||||
"ntapi",
|
||||
"once_cell",
|
||||
"windows 0.52.0",
|
||||
"rayon",
|
||||
"windows 0.54.0",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
@@ -5794,28 +5781,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "tungstenite"
|
||||
version = "0.21.0"
|
||||
version = "0.24.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"bytes",
|
||||
"data-encoding",
|
||||
"http 1.1.0",
|
||||
"httparse",
|
||||
"log",
|
||||
"rand",
|
||||
"sha1",
|
||||
"thiserror",
|
||||
"url",
|
||||
"utf-8",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tungstenite"
|
||||
version = "0.23.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "6e2e2ce1e47ed2994fd43b04c8f618008d4cabdd5ee34027cf14f9d918edd9c8"
|
||||
checksum = "18e5b8366ee7a95b16d32197d0b2604b43a0be89dc5fac9f8e96ccafbaedda8a"
|
||||
dependencies = [
|
||||
"byteorder",
|
||||
"bytes",
|
||||
@@ -6075,17 +6043,6 @@ version = "0.2.92"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96"
|
||||
|
||||
[[package]]
|
||||
name = "wasm-logger"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "074649a66bb306c8f2068c9016395fa65d8e08d2affcbf95acf3c24c3ab19718"
|
||||
dependencies = [
|
||||
"log",
|
||||
"wasm-bindgen",
|
||||
"web-sys",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wasm-streams"
|
||||
version = "0.4.0"
|
||||
|
||||
@@ -40,20 +40,20 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "alvr";
|
||||
version = "20.11.0";
|
||||
version = "20.11.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "alvr-org";
|
||||
repo = "ALVR";
|
||||
rev = "refs/tags/v${version}";
|
||||
fetchSubmodules = true; #TODO devendor openvr
|
||||
hash = "sha256-zqeh9U0A/KHlRieq9Lf+7f04K3JG/vpE2gZ916ReXLc=";
|
||||
hash = "sha256-d4KldPii8W1HcfnMSD8Fn+IGO/a3r8747APPjRCnbe8=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
"openxr-0.19.0" = "sha256-bnMSjJh+zjLw4Pdxr7LLm6qYAJOK7hz5xORKZ2pVcGw=";
|
||||
"openxr-0.18.0" = "sha256-v8sY9PROrqzkpuq3laIn2hPaX+DY7Fbca6i/Xiacd1g=";
|
||||
"settings-schema-0.2.0" = "sha256-luEdAKDTq76dMeo5kA+QDTHpRMFUg3n0qvyQ7DkId0k=";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -34,11 +34,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "apt";
|
||||
version = "2.9.16";
|
||||
version = "2.9.17";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-9ncx162Jm4WZBYFPvtO03ic8/rhcGEUEPxR4x1LsnvQ=";
|
||||
hash = "sha256-MKD1u2blDmY1XqqBAJcZL5d9/rXCqle5xPWYcL57DQQ=";
|
||||
};
|
||||
|
||||
# cycle detection; lib can't be split
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
cmake,
|
||||
curl,
|
||||
curlpp,
|
||||
doctest,
|
||||
srcOnly,
|
||||
fetchFromGitHub,
|
||||
fetchurl,
|
||||
fmt,
|
||||
@@ -12,7 +12,6 @@
|
||||
qt5,
|
||||
spdlog,
|
||||
substituteAll,
|
||||
trompeloeil,
|
||||
buildDayZLauncher ? false,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
@@ -36,8 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
rev = "45664c4e9f05ff287731a9ff8b724d0c89fb6e77";
|
||||
hash = "sha256-qLD9zD6hbItDn6ZHHWBXrAWhySvqcs40xA5+C/5Fkhw=";
|
||||
};
|
||||
curlpp_src = curlpp.src;
|
||||
doctest_src = doctest;
|
||||
curlpp_src = srcOnly curlpp;
|
||||
fmt_src = fmt;
|
||||
nlohmann_json_src = nlohmann_json;
|
||||
pugixml_src = fetchFromGitHub {
|
||||
@@ -51,7 +49,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
url = "https://github.com/julianxhokaxhiu/SteamworksSDKCI/releases/download/1.53/SteamworksSDK-v1.53.0_x64.zip";
|
||||
hash = "sha256-6PQGaPsaxBg/MHVWw2ynYW6LaNSrE9Rd9Q9ZLKFGPFA=";
|
||||
};
|
||||
trompeloeil_src = trompeloeil;
|
||||
# Only required for testing?
|
||||
doctest_src = null;
|
||||
trompeloeil_src = null;
|
||||
})
|
||||
# game won't launch with steam integration anyways, disable it
|
||||
./disable_steam_integration.patch
|
||||
@@ -60,14 +60,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nativeBuildInputs = [
|
||||
qt5.wrapQtAppsHook
|
||||
cmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
spdlog
|
||||
curlpp.src
|
||||
curl
|
||||
qt5.qtbase
|
||||
qt5.qtsvg
|
||||
curlpp
|
||||
];
|
||||
|
||||
cmakeFlags = [ "-Wno-dev" ] ++ lib.optionals buildDayZLauncher [ "-DBUILD_DAYZ_LAUNCHER=ON" ];
|
||||
|
||||
@@ -44,7 +44,7 @@ rustPlatform.buildRustPackage rec {
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"'^(\d*\.\d*\.\d*)$'"
|
||||
"'^(\\d*\\.\\d*\\.\\d*)$'"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -171,7 +171,7 @@ py.pkgs.buildPythonApplication rec {
|
||||
# Excludes 1.x versions from the Github tags list
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"^(2\.(.*))"
|
||||
"^(2\\.(.*))"
|
||||
];
|
||||
};
|
||||
tests.version = testers.testVersion {
|
||||
|
||||
+1023
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,33 @@
|
||||
{
|
||||
lib,
|
||||
buildDotnetModule,
|
||||
dotnetCorePackages,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
buildDotnetModule rec {
|
||||
dotnet-sdk = dotnetCorePackages.sdk_8_0;
|
||||
dotnet-runtime = dotnetCorePackages.runtime_8_0;
|
||||
version = "1.3.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "microsoft";
|
||||
repo = "artifacts-credprovider";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-JbcoDs4c/+uKIgVWZkuo4jqd1hlqe+H949jNfkDwZls=";
|
||||
};
|
||||
pname = "azure-artifacts-credprovider";
|
||||
projectFile = "CredentialProvider.Microsoft/CredentialProvider.Microsoft.csproj";
|
||||
testProjectFile = "CredentialProvider.Microsoft.Tests/CredentialProvider.Microsoft.Tests.csproj";
|
||||
nugetDeps = ./deps.nix;
|
||||
passthru.updateScript = ./update.sh;
|
||||
patchPhase = ''
|
||||
sed -i 's|<TargetFrameworks>.*</TargetFrameworks>|<TargetFramework>net8.0</TargetFramework>|' Build.props
|
||||
'';
|
||||
meta = {
|
||||
homepage = "https://github.com/microsoft/artifacts-credprovider";
|
||||
description = "Azure Artifacts Credential Provider";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ anpin ];
|
||||
mainProgram = "CredentialProvider.Microsoft";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl gnused gawk nix-prefetch jq dotnet-sdk_8 nuget-to-nix
|
||||
|
||||
set -euo pipefail
|
||||
URL="https://github.com/microsoft/artifacts-credprovider"
|
||||
|
||||
ROOT="$(dirname "$(readlink -f "$0")")"
|
||||
NIX_DRV="$ROOT/package.nix"
|
||||
if [ ! -f "$NIX_DRV" ]; then
|
||||
echo "ERROR: cannot find package.nix in $ROOT"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TMP="$(mktemp -d)"
|
||||
clean_up() {
|
||||
rm -rf "$TMP"
|
||||
}
|
||||
trap clean_up EXIT SIGINT SIGTERM
|
||||
PACKAGES="$TMP/packages"
|
||||
SRC_RW="$TMP/src"
|
||||
|
||||
mkdir -p $SRC_RW
|
||||
mkdir -p $PACKAGES
|
||||
|
||||
|
||||
VER=$(curl -s "https://api.github.com/repos/microsoft/artifacts-credprovider/releases/latest" | jq -r .tag_name | grep -oP '\d+\.\d+\.\d+' )
|
||||
HASH=$(nix-hash --to-sri --type sha256 "$(nix-prefetch-git --url $URL --rev "v$VER" --quiet | jq -r .sha256)")
|
||||
|
||||
sed -i "s/version = \".*\"/version = \"$VER\"/" "$NIX_DRV"
|
||||
sed -i "s#sha256 = \"sha256-.\{44\}\"#sha256 = \"$HASH\"#" "$NIX_DRV"
|
||||
|
||||
nix-prefetch-git --url $URL --rev "v$VER" --out $SRC_RW --builder --quiet
|
||||
rm $SRC_RW/nuget.config
|
||||
dotnet restore "$SRC_RW/MicrosoftCredentialProvider.sln" --packages $PACKAGES -r:linux-x64
|
||||
nuget-to-nix $PACKAGES > deps.nix
|
||||
@@ -17,7 +17,6 @@
|
||||
nodejs_20,
|
||||
patchutils_0_4_2,
|
||||
pkg-config,
|
||||
python3,
|
||||
runCommand,
|
||||
rustc,
|
||||
rustPlatform,
|
||||
@@ -40,13 +39,13 @@ let
|
||||
in
|
||||
buildNpmPackage rec {
|
||||
pname = "bitwarden-desktop";
|
||||
version = "2024.11.1";
|
||||
version = "2024.12.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitwarden";
|
||||
repo = "clients";
|
||||
rev = "desktop-v${version}";
|
||||
hash = "sha256-4QTQgW8k3EMf07Xqs2B+VXQOUPzoOgaNvoC02x4zvu8=";
|
||||
hash = "sha256-1XzIrZOTcFEuY/WqPGcFESBAZOiFcHA4ZvGXhDM7a54=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -71,11 +70,10 @@ buildNpmPackage rec {
|
||||
"--legacy-peer-deps"
|
||||
];
|
||||
npmWorkspace = "apps/desktop";
|
||||
npmDepsHash = "sha256-YzhCyNMvfXGmgOpl3qWj1Pqd1hY8CJ9QLwQds5ZMnqg=";
|
||||
npmDepsHash = "sha256-EtIcqbubAYN9I9wbw17oHiVshd3GtQayFtdgqWP7Pgg=";
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
name = "${pname}-${version}";
|
||||
inherit src;
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
inherit pname version src;
|
||||
patches = map (
|
||||
patch:
|
||||
runCommand (builtins.baseNameOf patch) { nativeBuildInputs = [ patchutils_0_4_2 ]; } ''
|
||||
@@ -84,7 +82,7 @@ buildNpmPackage rec {
|
||||
) patches;
|
||||
patchFlags = [ "-p4" ];
|
||||
sourceRoot = "${src.name}/${cargoRoot}";
|
||||
hash = "sha256-aurjpVzWET30O+ysyE4ZzauMe8kHjOL169tfKUR1Vpg=";
|
||||
hash = "sha256-Fh6pbmFof/qIhVETtBA1fGlC45fuu1n7g9hosvmfHZc=";
|
||||
};
|
||||
cargoRoot = "apps/desktop/desktop_native";
|
||||
|
||||
@@ -97,7 +95,6 @@ buildNpmPackage rec {
|
||||
makeWrapper
|
||||
napi-rs-cli
|
||||
pkg-config
|
||||
(python3.withPackages (ps: with ps; [ setuptools ]))
|
||||
rustc
|
||||
rustPlatform.cargoCheckHook
|
||||
rustPlatform.cargoSetupHook
|
||||
|
||||
@@ -21,14 +21,14 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "blivet-gui";
|
||||
version = "2.5.0";
|
||||
version = "2.6.0";
|
||||
format = "setuptools";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "storaged-project";
|
||||
repo = "blivet-gui";
|
||||
rev = version;
|
||||
hash = "sha256-fKd2Vj8clZ6Q7bZipfN5umyMW2rBXMUnpAuDE70p67U=";
|
||||
tag = version;
|
||||
hash = "sha256-e9YdfFHmKXsbqkzs4++nNlvqm/p6lZmc01A+g+NtuDI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -16,16 +16,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "booster";
|
||||
version = "0.11";
|
||||
version = "0.12";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "anatol";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-+0pY4/f/qfIT1lLn2DXmJBZcDDEOil4H3zNY3911ACQ=";
|
||||
hash = "sha256-uHxPzuD3PxKAI2JOZd7lcLvcqYqk9gW9yeZgOS1Y7x4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-RmRY+HoNuijfcK8gNbOIyWCOa50BVJd3IZv2+Pc3FYw=";
|
||||
vendorHash = "sha256-uI6TvBtky7Bpt4SbbtwT3vdMYbI/Awy3wgPfOla1qMw=";
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace init/main.go --replace "/usr/bin/fsck" "${unixtools.fsck}/bin/fsck"
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cadaver";
|
||||
version = "0.24";
|
||||
version = "0.26";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://notroj.github.io/cadaver/cadaver-${version}.tar.gz";
|
||||
hash = "sha256-Rs/y8+vTLNMoNoEspHvMdTU/wr51fwk9qIwN2PEP1fY=";
|
||||
hash = "sha256-kjbkPN81BdnvBhhf2kMlKEAQXAwC2TcLbhB32GY1e1U=";
|
||||
};
|
||||
|
||||
configureFlags = [
|
||||
|
||||
@@ -63,17 +63,17 @@ stdenv.mkDerivation rec {
|
||||
# https://github.com/NixOS/nixpkgs/issues/214945 discusses this issue.
|
||||
#
|
||||
# As a temporary fix, we disabled these tests when using clang stdenv
|
||||
lib.optionals stdenv.cc.isClang [ "CIRCT :: Target/ExportSystemC/.*\.mlir" ]
|
||||
lib.optionals stdenv.cc.isClang [ "CIRCT :: Target/ExportSystemC/.*\\.mlir" ]
|
||||
# Disable some tests on x86_64-darwin
|
||||
++ lib.optionals (stdenv.hostPlatform.system == "x86_64-darwin") [
|
||||
# These test seem to pass on hydra (rosetta) but not on x86_64-darwin machines
|
||||
"CIRCT :: Target/ExportSMTLIB/.*\.mlir"
|
||||
"CIRCT :: circt-bmc/.*\.mlir"
|
||||
"CIRCT :: Target/ExportSMTLIB/.*\\.mlir"
|
||||
"CIRCT :: circt-bmc/.*\\.mlir"
|
||||
# These tests were having issues on rosetta
|
||||
"CIRCT :: Dialect/.*/Reduction/.*\.mlir"
|
||||
"CIRCT :: Dialect/SMT/.*\.mlir"
|
||||
"CIRCT :: circt-as-dis/.*\.mlir"
|
||||
"CIRCT :: circt-reduce/.*\.mlir"
|
||||
"CIRCT :: Dialect/.*/Reduction/.*\\.mlir"
|
||||
"CIRCT :: Dialect/SMT/.*\\.mlir"
|
||||
"CIRCT :: circt-as-dis/.*\\.mlir"
|
||||
"CIRCT :: circt-reduce/.*\\.mlir"
|
||||
"CIRCT :: circt-test/basic.mlir"
|
||||
];
|
||||
in
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
buildGo122Module,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
versionCheckHook,
|
||||
}:
|
||||
buildGo122Module rec {
|
||||
pname = "cloudpan189-go";
|
||||
version = "0.1.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tickstep";
|
||||
repo = "cloudpan189-go";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-CJCTfzcLw5e41RZXhgbJhZVOP4FDDYM74Oo9my/liZk=";
|
||||
};
|
||||
vendorHash = "sha256-6t4wJqUGJneR6Hv7Dotr4P9MTA1oQcCe/ujDojS0g8s=";
|
||||
|
||||
# Dirty way to fix dependency issue
|
||||
overrideModAttrs = _: {
|
||||
postInstall = ''
|
||||
sed -i '/go:linkname/d' $out/github.com/tickstep/library-go/expires/expires.go
|
||||
'';
|
||||
};
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
versionCheckProgram = "${placeholder "out"}/bin/${meta.mainProgram}";
|
||||
|
||||
postFixup = ''
|
||||
mv $out/bin/cloudpan189-go $out/bin/.cloudpan189-go-wrapped
|
||||
|
||||
cat <<EOF >$out/bin/cloudpan189-go
|
||||
#!/bin/sh
|
||||
export CLOUD189_CONFIG_DIR="\''${CLOUD189_CONFIG_DIR:-\''${HOME}/.config/cloudpan189-go}"
|
||||
mkdir -p \''${CLOUD189_CONFIG_DIR}
|
||||
exec $out/bin/.cloudpan189-go-wrapped "\$@"
|
||||
EOF
|
||||
|
||||
chmod +x $out/bin/cloudpan189-go
|
||||
'';
|
||||
|
||||
meta = {
|
||||
mainProgram = "cloudpan189-go";
|
||||
maintainers = with lib.maintainers; [ xddxdd ];
|
||||
description = "CLI for China Telecom 189 Cloud Drive service, implemented in Go";
|
||||
homepage = "https://github.com/tickstep/cloudpan189-go";
|
||||
license = lib.licenses.asl20;
|
||||
};
|
||||
}
|
||||
@@ -12,11 +12,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "corosync";
|
||||
version = "3.1.8";
|
||||
version = "3.1.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://build.clusterlabs.org/corosync/releases/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-cCNUT6O7NsALvKvZk1tyabQdiWc4oQjtMuqbnJsn7D0=";
|
||||
sha256 = "sha256-IDNUu93uGpezxQoHbq6JxjX0Bt1nTMrvyUu5CSrNlTU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper pkg-config ];
|
||||
|
||||
@@ -0,0 +1,112 @@
|
||||
From c8570f7811dda8eb4c6314c54976afa8ebe5ffbf Mon Sep 17 00:00:00 2001
|
||||
From: Leah Amelia Chen <hi@pluie.me>
|
||||
Date: Sun, 15 Dec 2024 20:58:33 +0200
|
||||
Subject: [PATCH] various POM fixes
|
||||
|
||||
This patch does a number of things:
|
||||
1. Remove the `git-commit-id-maven-plugin` and avoid needing to have a working Git repository and
|
||||
Git in order to compile;
|
||||
2. Remove `toolchains-maven-plugin` and avoid downloading Temurin;
|
||||
3. Patch the module path of the JLink plugin to avoid a build failure;
|
||||
4. Disable failing tests that can't be disabled via `-Dtest`, as they are within the `server` subproject.
|
||||
|
||||
diff --git a/app/pom.xml b/app/pom.xml
|
||||
index 5a0de98..5e511d9 100644
|
||||
--- a/app/pom.xml
|
||||
+++ b/app/pom.xml
|
||||
@@ -14,7 +14,7 @@
|
||||
<properties>
|
||||
<timestamp>${maven.build.timestamp}</timestamp>
|
||||
<maven.build.timestamp.format>yyyy-MM-dd-HH-mm</maven.build.timestamp.format>
|
||||
- <tarball.version>${project.version}-${timestamp}-${git.commit.id.abbrev}</tarball.version>
|
||||
+ <tarball.version>${project.version}</tarball.version>
|
||||
|
||||
<!-- Use native git instead of jGit to be able to build & release from worktrees (an older version of CrateDB) -->
|
||||
<!-- Open issue: https://github.com/git-commit-id/git-commit-id-maven-plugin/issues/215 -->
|
||||
@@ -72,29 +72,6 @@
|
||||
<sha256>9bf415bef68c39b3fb0a845ade2c86cb707d0457eba7badc6b9dd29ba7e773f0</sha256>
|
||||
</configuration>
|
||||
</plugin>
|
||||
- <plugin>
|
||||
- <groupId>io.github.git-commit-id</groupId>
|
||||
- <artifactId>git-commit-id-maven-plugin</artifactId>
|
||||
- <version>${versions.plugin.git-commit}</version>
|
||||
- <executions>
|
||||
- <execution>
|
||||
- <id>get-the-git-infos</id>
|
||||
- <goals>
|
||||
- <goal>revision</goal>
|
||||
- </goals>
|
||||
- <phase>initialize</phase>
|
||||
- </execution>
|
||||
- </executions>
|
||||
- <configuration>
|
||||
- <generateGitPropertiesFile>true</generateGitPropertiesFile>
|
||||
- <generateGitPropertiesFilename>${project.build.outputDirectory}/crate-build.properties</generateGitPropertiesFilename>
|
||||
- <includeOnlyProperties>
|
||||
- <includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
|
||||
- <includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty>
|
||||
- </includeOnlyProperties>
|
||||
- <commitIdGenerationMode>full</commitIdGenerationMode>
|
||||
- </configuration>
|
||||
- </plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
diff --git a/pom.xml b/pom.xml
|
||||
index 3c9910c..304aa90 100644
|
||||
--- a/pom.xml
|
||||
+++ b/pom.xml
|
||||
@@ -175,26 +175,6 @@
|
||||
</ruleSet>
|
||||
</configuration>
|
||||
</plugin>
|
||||
- <plugin>
|
||||
- <groupId>org.mvnsearch</groupId>
|
||||
- <artifactId>toolchains-maven-plugin</artifactId>
|
||||
- <version>${versions.plugin.toolchains}</version>
|
||||
- <executions>
|
||||
- <execution>
|
||||
- <goals>
|
||||
- <goal>toolchain</goal>
|
||||
- </goals>
|
||||
- </execution>
|
||||
- </executions>
|
||||
- <configuration>
|
||||
- <toolchains>
|
||||
- <jdk>
|
||||
- <version>${versions.jdk}</version>
|
||||
- <vendor>temurin</vendor>
|
||||
- </jdk>
|
||||
- </toolchains>
|
||||
- </configuration>
|
||||
- </plugin>
|
||||
<plugin>
|
||||
<groupId>org.jacoco</groupId>
|
||||
<artifactId>jacoco-maven-plugin</artifactId>
|
||||
@@ -242,6 +222,9 @@
|
||||
<version>${versions.plugin.jlink}</version>
|
||||
<extensions>true</extensions>
|
||||
<configuration>
|
||||
+ <modulePaths>
|
||||
+ <modulePath>@jdk@/lib/openjdk/jmods</modulePath>
|
||||
+ </modulePaths>
|
||||
<addModules>
|
||||
<addModule>java.base</addModule>
|
||||
<addModule>java.logging</addModule>
|
||||
diff --git a/server/pom.xml b/server/pom.xml
|
||||
index acc86cb..5297e01 100644
|
||||
--- a/server/pom.xml
|
||||
+++ b/server/pom.xml
|
||||
@@ -25,6 +25,11 @@
|
||||
<configuration>
|
||||
<!-- override setting from parent pom -->
|
||||
<skip>false</skip>
|
||||
+ <excludes>
|
||||
+ <!-- Failing tests -->
|
||||
+ <exclude>NodeStatsITest</exclude>
|
||||
+ <exclude>CopyIntegrationTest</exclude>
|
||||
+ </excludes>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
maven,
|
||||
fetchFromGitHub,
|
||||
replaceVars,
|
||||
openjdk23,
|
||||
libarchive,
|
||||
makeWrapper,
|
||||
}:
|
||||
let
|
||||
# Wants at least Java 22
|
||||
jdk = openjdk23;
|
||||
version = "5.9.5";
|
||||
in
|
||||
maven.buildMavenPackage {
|
||||
pname = "cratedb";
|
||||
inherit version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "crate";
|
||||
repo = "crate";
|
||||
tag = version;
|
||||
hash = "sha256-T72Cy/jU8l68Res85bcZysRB81IqUF4eqgRxW7TJ+6Q=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
libarchive
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
patches = [
|
||||
(replaceVars ./fix-poms.patch { inherit jdk; })
|
||||
];
|
||||
|
||||
mvnHash = "sha256-D5cVCx++99DJWX5UHgJydDDYCYmH1cKQ3EAKktFz+gE=";
|
||||
mvnJdk = jdk;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out
|
||||
|
||||
# Don't install the bundled JDK; symlink instead.
|
||||
# Fixing all the paths in the script is frankly way too much work.
|
||||
bsdtar -xf app/target/crate-${version}.tar.gz -C $out --exclude="*/jdk/*" --strip-components=1
|
||||
ln -s ${jdk} $out/jdk
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
# By default it wants to write to $out/data and $out/logs. Bad program.
|
||||
wrapProgram $out/bin/crate \
|
||||
--set CRATE_DISABLE_GC_LOGGING 1 \
|
||||
--add-flags '-Cpath.data="''${XDG_DATA_HOME:-$HOME/.local/share}/crate"' \
|
||||
--add-flags '-Cpath.logs="''${XDG_STATE_HOME:-$HOME/.local/state}/crate"'
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Distributed and scalable SQL database";
|
||||
longDescription = ''
|
||||
CrateDB is a distributed SQL database that makes it simple to store and analyze massive
|
||||
amounts of data in real-time.
|
||||
|
||||
CrateDB offers the benefits of an SQL database and the scalability and flexibility typically
|
||||
associated with NoSQL databases. Modest CrateDB clusters can ingest tens of thousands of records
|
||||
per second without breaking a sweat. You can run ad-hoc queries using standard SQL.
|
||||
CrateDB's blazing-fast distributed query execution engine parallelizes query workloads across
|
||||
the whole cluster.
|
||||
'';
|
||||
homepage = "https://cratedb.com/database";
|
||||
changelog = "https://cratedb.com/docs/crate/reference/en/latest/appendices/release-notes/${version}.html";
|
||||
license = with lib.licenses; [ asl20 ];
|
||||
platforms = with lib.platforms; unix ++ windows;
|
||||
# FIXME: Somehow dependencies are platform-dependent. Somehow.
|
||||
broken = stdenvNoCC.hostPlatform.system != "x86_64-linux";
|
||||
maintainers = with lib.maintainers; [ pluiedev ];
|
||||
mainProgram = "crate";
|
||||
};
|
||||
}
|
||||
@@ -10,11 +10,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "davfs2";
|
||||
version = "1.7.0";
|
||||
version = "1.7.1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://savannah/davfs2/davfs2-${finalAttrs.version}.tar.gz";
|
||||
sha256 = "sha256-JR23Wic4DMoTMLG5cXAMXl3MDJDlpHYiKF8BQO3+Oi8=";
|
||||
sha256 = "sha256-KY7dDGdzy+JY4VUqQxrK6msu7bcIeImnNdrviIX8saw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -3,13 +3,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "dqlite";
|
||||
version = "1.16.7";
|
||||
version = "1.18.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "canonical";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-XQvJO4sFKRKDVdtoXP2Ue80otDC0Ry6EB1Z0shetuhw=";
|
||||
hash = "sha256-sWA04CoVMR8380/PXSkMo/Ml2Gk1RNQxPC12CMVqxwE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook file pkg-config ];
|
||||
|
||||
@@ -156,7 +156,7 @@ let
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"rel\.(.*)"
|
||||
"rel\\.(.*)"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -3,25 +3,25 @@
|
||||
"alpha": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_linux_2.0.22.tar.xz"
|
||||
"factorio_linux_2.0.23.tar.xz"
|
||||
],
|
||||
"name": "factorio_alpha_x64-2.0.22.tar.xz",
|
||||
"name": "factorio_alpha_x64-2.0.23.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "469fb0bd5e6a30e9a282ca0b4522e1cfc514f5726b8e1b1f3b7b4bc1003d6ca3",
|
||||
"sha256": "3a3f27a5364d33896c8b35d352d0d2d6086b4ba98627eda71b26e57127309bfb",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.22/alpha/linux64",
|
||||
"version": "2.0.22"
|
||||
"url": "https://factorio.com/get-download/2.0.23/alpha/linux64",
|
||||
"version": "2.0.23"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio_linux_2.0.21.tar.xz"
|
||||
"factorio_linux_2.0.23.tar.xz"
|
||||
],
|
||||
"name": "factorio_alpha_x64-2.0.21.tar.xz",
|
||||
"name": "factorio_alpha_x64-2.0.23.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "275e0d78d0671da28cf1fbc8d07c99239600ba2fe475ea49ce93436258cf6901",
|
||||
"sha256": "3a3f27a5364d33896c8b35d352d0d2d6086b4ba98627eda71b26e57127309bfb",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.21/alpha/linux64",
|
||||
"version": "2.0.21"
|
||||
"url": "https://factorio.com/get-download/2.0.23/alpha/linux64",
|
||||
"version": "2.0.23"
|
||||
}
|
||||
},
|
||||
"demo": {
|
||||
@@ -51,51 +51,51 @@
|
||||
"expansion": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-space-age_linux_2.0.22.tar.xz"
|
||||
"factorio-space-age_linux_2.0.23.tar.xz"
|
||||
],
|
||||
"name": "factorio_expansion_x64-2.0.22.tar.xz",
|
||||
"name": "factorio_expansion_x64-2.0.23.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "67ae6c12897519e9d6851b045a5bf6f7fc15c08b4d927832959399492ab18dde",
|
||||
"sha256": "8c6bb2c3afd198b8d5e1042f2babcb2db2d55645d1e84d9cfbba77cd83ae9e6a",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.22/expansion/linux64",
|
||||
"version": "2.0.22"
|
||||
"url": "https://factorio.com/get-download/2.0.23/expansion/linux64",
|
||||
"version": "2.0.23"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-space-age_linux_2.0.21.tar.xz"
|
||||
"factorio-space-age_linux_2.0.23.tar.xz"
|
||||
],
|
||||
"name": "factorio_expansion_x64-2.0.21.tar.xz",
|
||||
"name": "factorio_expansion_x64-2.0.23.tar.xz",
|
||||
"needsAuth": true,
|
||||
"sha256": "55a55ae2bca596b8f4a2b8f72deb543d9b494d8f030f394efa4fd6d9bb0a9802",
|
||||
"sha256": "8c6bb2c3afd198b8d5e1042f2babcb2db2d55645d1e84d9cfbba77cd83ae9e6a",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.21/expansion/linux64",
|
||||
"version": "2.0.21"
|
||||
"url": "https://factorio.com/get-download/2.0.23/expansion/linux64",
|
||||
"version": "2.0.23"
|
||||
}
|
||||
},
|
||||
"headless": {
|
||||
"experimental": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-headless_linux_2.0.22.tar.xz",
|
||||
"factorio_headless_x64_2.0.22.tar.xz"
|
||||
"factorio-headless_linux_2.0.23.tar.xz",
|
||||
"factorio_headless_x64_2.0.23.tar.xz"
|
||||
],
|
||||
"name": "factorio_headless_x64-2.0.22.tar.xz",
|
||||
"name": "factorio_headless_x64-2.0.23.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "14c3eea7600fbe7f35bca52fe4c277e8f5e23b34c35ebebaa46c6752c750cb85",
|
||||
"sha256": "e819fc9ad6df061bf9d4bffc91988dd18d0e3982c8b1c22c0525d78bda3ef216",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.22/headless/linux64",
|
||||
"version": "2.0.22"
|
||||
"url": "https://factorio.com/get-download/2.0.23/headless/linux64",
|
||||
"version": "2.0.23"
|
||||
},
|
||||
"stable": {
|
||||
"candidateHashFilenames": [
|
||||
"factorio-headless_linux_2.0.21.tar.xz",
|
||||
"factorio_headless_x64_2.0.21.tar.xz"
|
||||
"factorio-headless_linux_2.0.23.tar.xz",
|
||||
"factorio_headless_x64_2.0.23.tar.xz"
|
||||
],
|
||||
"name": "factorio_headless_x64-2.0.21.tar.xz",
|
||||
"name": "factorio_headless_x64-2.0.23.tar.xz",
|
||||
"needsAuth": false,
|
||||
"sha256": "1d6d2785006d6a8d9d5fdcdaa7097a189ec35ba95f3521025dc4e046f7a1398e",
|
||||
"sha256": "e819fc9ad6df061bf9d4bffc91988dd18d0e3982c8b1c22c0525d78bda3ef216",
|
||||
"tarDirectory": "x64",
|
||||
"url": "https://factorio.com/get-download/2.0.21/headless/linux64",
|
||||
"version": "2.0.21"
|
||||
"url": "https://factorio.com/get-download/2.0.23/headless/linux64",
|
||||
"version": "2.0.23"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,25 +7,25 @@
|
||||
let
|
||||
# make install will use dconf to find desktop background file uri.
|
||||
# consider adding an args to allow specify pictures manually.
|
||||
# https://github.com/daniruiz/flat-remix-gnome/blob/20240922/Makefile#L38
|
||||
# https://github.com/daniruiz/flat-remix-gnome/blob/20241208/Makefile#L38
|
||||
fake-dconf = writeScriptBin "dconf" "echo -n";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "flat-remix-gnome";
|
||||
version = "20240922";
|
||||
version = "20241208";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "daniruiz";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-/Md1CbEDe+N8Nu0WPrIUkEudqMvEARmHD9NtgE7sPLQ=";
|
||||
hash = "sha256-pMxdx/D3M2DwEjrOZx/zY4zZjBUamo7+8/yvVOffxx0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ glib fake-dconf ];
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
# make install will back up this file, it will fail if the file doesn't exist.
|
||||
# https://github.com/daniruiz/flat-remix-gnome/blob/20240922/Makefile#L56
|
||||
# https://github.com/daniruiz/flat-remix-gnome/blob/20241208/Makefile#L56
|
||||
preInstall = ''
|
||||
mkdir -p $out/share/gnome-shell/
|
||||
touch $out/share/gnome-shell/gnome-shell-theme.gresource
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchurl,
|
||||
|
||||
autoPatchelfHook,
|
||||
wrapGAppsHook3,
|
||||
|
||||
dbus-glib,
|
||||
gtk3,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "fopnu";
|
||||
version = "1.67";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download2.fopnu.com/download/fopnu-${version}-1.x86_64.manualinstall.tar.gz";
|
||||
hash = "sha256-O8wmf+/moIZlxZfqozftWEABQR0qPbw41erCxfmV3Mc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
dbus-glib
|
||||
gtk3
|
||||
];
|
||||
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -D -m 0755 fopnu -t $out/bin
|
||||
install -D -m 0444 fopnu.desktop -t $out/share/applications
|
||||
install -D -m 0444 fopnu.png -t $out/share/icons/hicolor/48x48/apps
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "P2P file sharing system";
|
||||
homepage = "https://fopnu.com";
|
||||
license = licenses.unfree;
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
mainProgram = "fopnu";
|
||||
maintainers = with maintainers; [ paveloom ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
||||
@@ -21,14 +21,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "gearlever";
|
||||
version = "2.1.0";
|
||||
version = "2.3.2";
|
||||
pyproject = false; # Built with meson
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mijorus";
|
||||
repo = "gearlever";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-OpNzJwEjLni/vG1RtRSH29wovMRwKzJn+Vep1vZDEFM=";
|
||||
tag = version;
|
||||
hash = "sha256-w+tCOMDNm99cAtA9AmADBc6dP4y5KDDP8iiRZS+5upQ=";
|
||||
};
|
||||
|
||||
postPatch =
|
||||
@@ -47,6 +47,8 @@ python3Packages.buildPythonApplication rec {
|
||||
+ ''
|
||||
substituteInPlace src/AppDetails.py \
|
||||
--replace-fail "sandbox_sh(['arch'])" '"${stdenv.hostPlatform.uname.processor}"'
|
||||
substituteInPlace src/models/UpdateManager.py \
|
||||
--replace-fail "terminal.sandbox_sh(['arch'])" '"${stdenv.hostPlatform.uname.processor}"'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gobatmon";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ulinja";
|
||||
repo = "gobatmon";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-morcsU9RhY17XlaDC6J0uDRYiSYjnXquFjuOh7AEKkA=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-WUTGAYigUjuZLHO1YpVhFSWpvULDZfGMfOXZQqVYAfs=";
|
||||
|
||||
meta = {
|
||||
description = "Simple battery level monitor for Linux written in Go";
|
||||
homepage = "https://github.com/ulinja/gobatmon";
|
||||
license = lib.licenses.wtfpl;
|
||||
maintainers = with lib.maintainers; [ ulinja ];
|
||||
mainProgram = "gobatmon";
|
||||
downloadPage = "https://github.com/ulinja/gobatmon/releases/latest";
|
||||
changelog = "https://github.com/ulinja/gobatmon/blob/v${version}/CHANGELOG.md";
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
@@ -13,17 +13,18 @@
|
||||
slurp,
|
||||
wl-clipboard,
|
||||
bash,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "grimblast";
|
||||
version = "unstable-2024-01-11";
|
||||
version = "0.1-unstable-2024-12-01";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hyprwm";
|
||||
repo = "contrib";
|
||||
rev = "89c56351e48785070b60e224ea1717ac50c3befb";
|
||||
hash = "sha256-EjdQsk5VIQs7INBugbgX1I9Q3kPAOZSwkXXqEjZL0E0=";
|
||||
rev = "d7c55140f1785b8d9fef351f1cd2a4c9e1eaa466";
|
||||
hash = "sha256-sp14z0mrqrtmouz1+bU4Jh8/0xi+xwQHF2l7mhGSSVU=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
@@ -57,11 +58,16 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
}"
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Helper for screenshots within Hyprland, based on grimshot";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ donovanglover ];
|
||||
maintainers = with maintainers; [
|
||||
donovanglover
|
||||
khaneliman
|
||||
];
|
||||
mainProgram = "grimblast";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
, curl, writeShellScript, common-updater-scripts, xmlstarlet }:
|
||||
|
||||
let
|
||||
url = "https://app.hubstaff.com/download/8495-standard-linux-1-6-28-release/sh";
|
||||
version = "1.6.28-fafb0aba";
|
||||
sha256 = "sha256:1y757477hhyflk3da11fvmyyglwlp6hrii1qn3ycb0l81xyxg9s0";
|
||||
url = "https://app.hubstaff.com/download/8792-standard-linux-1-6-29-release/sh";
|
||||
version = "1.6.29-7f771670";
|
||||
sha256 = "sha256:09vdpsmaj26bmnbsyxp76g3677lzi8p86gz66qbdvxly6a4x1hq9";
|
||||
|
||||
rpath = lib.makeLibraryPath
|
||||
[ libX11 zlib libSM libICE libXext freetype libXrender fontconfig libXft
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
From 16ea1a197c4b154fcd481728fbea24a4722ba5d3 Mon Sep 17 00:00:00 2001
|
||||
From: Pavel Sobolev <contact@paveloom.dev>
|
||||
Date: Sat, 13 Jul 2024 18:44:36 +0300
|
||||
Subject: [PATCH] Add permissions to the output directory.
|
||||
|
||||
---
|
||||
build/build.go | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/build/build.go b/build/build.go
|
||||
index 3ee59ab..97932ed 100644
|
||||
--- a/build/build.go
|
||||
+++ b/build/build.go
|
||||
@@ -67,7 +67,7 @@ func Build(cloneDir string, outputDir string) error {
|
||||
log.Debug().TimeDiff("getRelevantFiles", time.Now(), getRelevantFilesTime).Send()
|
||||
bundleTime := time.Now()
|
||||
|
||||
- cp.Copy("views", outputDir)
|
||||
+ cp.Copy("views", outputDir, cp.Options{PermissionControl: cp.AddPermission(0200)})
|
||||
os.Mkdir(fmt.Sprintf("%s/debug", outputDir), os.ModePerm)
|
||||
os.Mkdir(fmt.Sprintf("%s/debug/Lib", outputDir), os.ModePerm)
|
||||
os.Mkdir(fmt.Sprintf("%s/debug/Protocols", outputDir), os.ModePerm)
|
||||
--
|
||||
2.45.2
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitea,
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "ios-safari-remote-debug";
|
||||
version = "unstable-2024-09-09";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.gay";
|
||||
owner = "besties";
|
||||
repo = "ios-safari-remote-debug";
|
||||
rev = "b3c69873997c08fce83c48a5ab42f5a2354efdf2";
|
||||
hash = "sha256-Hh/CeH0ba4uPMlEo+OZ3w36pTpsW6OLtYIE5v6dkUjo=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-O8Dr4UAISZmCUGao0cBnAx4dUJm6+u4Swiw0H5NVeeA=";
|
||||
|
||||
patches = [ ./add-permissions-to-the-output-directory.patch ];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace build/build.go \
|
||||
--replace-fail 'cp.Copy("' 'cp.Copy("${placeholder "out"}/share/${pname}/'
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
mkdir -p $out/share/${pname}
|
||||
cp -r injectedCode views $out/share/${pname}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Remote debugger for iOS Safari";
|
||||
homepage = "https://git.gay/besties/ios-safari-remote-debug";
|
||||
license = lib.licenses.agpl3Plus;
|
||||
mainProgram = "ios-safari-remote-debug";
|
||||
maintainers = with lib.maintainers; [ paveloom ];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
rustPlatform,
|
||||
pkg-config,
|
||||
hidapi,
|
||||
udev,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "leddy";
|
||||
version = "0.1.0-unstable-2024-10-15";
|
||||
src = fetchFromGitHub {
|
||||
owner = "XanClic";
|
||||
repo = pname;
|
||||
rev = "fd259425980df17bd761006a1ccef93e23bfdad6";
|
||||
hash = "sha256-7t+E47odtayw26AnhtkxIWr0TxDwruEjP3Af3ajmVAA=";
|
||||
};
|
||||
cargoHash = "sha256-99qPo5Nsu8pLMT5EIpQ/+F0o/00Y5gQ9T0z5+gxUcww=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [
|
||||
hidapi
|
||||
udev
|
||||
];
|
||||
doCheck = false; # no tests
|
||||
|
||||
meta = {
|
||||
description = "LED controller for the Fnatic miniStreak and Fnatic Streak keyboards";
|
||||
homepage = "https://github.com/XanClic/leddy";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = [ lib.maintainers.jmir ];
|
||||
mainProgram = "leddy";
|
||||
};
|
||||
}
|
||||
@@ -28,16 +28,19 @@
|
||||
, e2fsprogs
|
||||
, libnvme
|
||||
, keyutils
|
||||
, libatasmart
|
||||
, json-glib
|
||||
, nix-update-script
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "libblockdev";
|
||||
version = "3.1.1";
|
||||
version = "3.2.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "storaged-project";
|
||||
repo = "libblockdev";
|
||||
rev = "${finalAttrs.version}-1";
|
||||
hash = "sha256-WCMedMkaMMhZbB3iJu3c+CTT3AvOjzOSYP45J+NQEDQ=";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-85vfHHR6WqSPCW1QmD3HccIpOqNYrx1PDjTh297VA1A=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "dev" "devdoc" "python" ];
|
||||
@@ -70,8 +73,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
e2fsprogs
|
||||
glib
|
||||
gptfdisk
|
||||
json-glib
|
||||
keyutils
|
||||
kmod
|
||||
libatasmart
|
||||
libbytesize
|
||||
libndctl
|
||||
libnvme
|
||||
@@ -89,6 +94,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
${lib.makeBinPath [ thin-provisioning-tools ]}
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
changelog = "https://github.com/storaged-project/libblockdev/raw/${finalAttrs.src.rev}/NEWS.rst";
|
||||
description = "Library for manipulating block devices";
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "libowfat";
|
||||
version = "0.33";
|
||||
version = "0.34";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.fefe.de/libowfat/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-MR7Is/S3K7RC4yP7ATqY+Vb6dFVH8ryUVih7INAnzX0=";
|
||||
sha256 = "sha256-1DMNNzrJWBs5e8JKIq0ff11Yp/422dI5/jUs7/xdMEs=";
|
||||
};
|
||||
|
||||
# Fix for glibc 2.34 from Gentoo
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "likwid";
|
||||
version = "5.3.0";
|
||||
version = "5.4.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://ftp.fau.de/pub/likwid/likwid-${version}.tar.gz";
|
||||
hash = "sha256-wpDlVMQlMSSsKriwVuFO5NI5ZrjJ+/oQuoH3WuVDzk4=";
|
||||
hash = "sha256-DytnHGnKqZP+20gYezvcyUwiQA7ITJJv0ImNv/aKoD4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ perl ];
|
||||
|
||||
@@ -73,7 +73,7 @@ buildGoModule rec {
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
extraArgs = [ "--version-regex" "^v(9\.11\.[0-9]+)$" ];
|
||||
extraArgs = [ "--version-regex" "^v(9\\.11\\.[0-9]+)$" ];
|
||||
};
|
||||
tests.mattermost = nixosTests.mattermost;
|
||||
};
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "monit";
|
||||
version = "5.34.2";
|
||||
version = "5.34.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://mmonit.com/monit/dist/monit-${version}.tar.gz";
|
||||
sha256 = "sha256-KRyj2JjptCW20MF2hyj+zWwc9MJox52xX9omKFrVuDI=";
|
||||
sha256 = "sha256-Zp2Lld3sEk0URLpSZPZ/3q6OkOU7KSlxn0dQ/F/zumA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
|
||||
@@ -27,11 +27,11 @@ stdenv.mkDerivation rec {
|
||||
pname = "mstflint";
|
||||
|
||||
# if you update the version of this package, also update the input hash in mstflint_access!
|
||||
version = "4.29.0-1";
|
||||
version = "4.30.0-1";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/Mellanox/mstflint/releases/download/v${version}/mstflint-${version}.tar.gz";
|
||||
hash = "sha256-G9BIFG8f4Ek9R3CyRLAuMpgbScrtBo/ZaiJwAQMiBlQ=";
|
||||
hash = "sha256-8v0aeVy1ZGbzNdL71V1qm6sgEy0e3eb2F1DP8L3m2ns=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
cmake,
|
||||
coreutils,
|
||||
git,
|
||||
zlib,
|
||||
}:
|
||||
|
||||
let
|
||||
niimathTestsSrc = fetchFromGitHub {
|
||||
owner = "rordenlab";
|
||||
repo = "niimath_tests";
|
||||
rev = "e482edf54fb5bea6e08047ba731600d26925d493";
|
||||
hash = "sha256-FC9NHogt4Cmq7/9mao12LN7du9CoXVnonkwhafIpIQo=";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "niimath";
|
||||
version = "1.0.20240905";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rordenlab";
|
||||
repo = "niimath";
|
||||
rev = "refs/tags/v${finalAttrs.version}";
|
||||
hash = "sha256-3XgB4q0HXLo9rEQBzC+2dxN81r9n8kkj2OC5d+WFmEs=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
cp -r ${niimathTestsSrc} niimath_tests
|
||||
chmod -R +w niimath_tests
|
||||
patchShebangs niimath_tests/canonical_test.sh
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
git
|
||||
];
|
||||
|
||||
buildInputs = [ zlib ];
|
||||
|
||||
cmakeFlags = [ "-DZLIB_IMPLEMENTATION=System" ];
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = ''
|
||||
PATH=bin:$PATH ../niimath_tests/canonical_test.sh
|
||||
'';
|
||||
nativeCheckInputs = [ coreutils ];
|
||||
|
||||
meta = {
|
||||
description = "Open-source clone of fslmaths";
|
||||
homepage = "https://github.com/rordenlab/niimath";
|
||||
changelog = "https://github.com/rordenlab/niimath/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.bsd2;
|
||||
maintainers = with lib.maintainers; [ bcdarwin ];
|
||||
mainProgram = "niimath";
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
})
|
||||
@@ -101,6 +101,42 @@ ruff check --fix .
|
||||
ruff format .
|
||||
```
|
||||
|
||||
## Breaking changes
|
||||
|
||||
While `nixos-rebuild-ng` tries to be as much of a clone of the original as
|
||||
possible, there are still some breaking changes that were done in other to
|
||||
improve the user experience. If they break your workflow in some way that is
|
||||
not possible to fix, please open an issue and we can discuss a solution.
|
||||
|
||||
- For `--build-host` and `--target-host`, `nixos-rebuild-ng` does not allocate
|
||||
a pseudo-TTY via SSH (e.g.: `ssh -t`) anymore. The reason for this is because
|
||||
pseudo-TTY breaks some expectations from SSH, like it mangles stdout and
|
||||
stderr, and can
|
||||
[break terminal output](https://github.com/NixOS/nixpkgs/issues/336967) in
|
||||
some situations.
|
||||
The issue is that `sudo` needs a TTY to ask for password, otherwise it will
|
||||
fail. The solution for this is a new flag, `--ask-sudo-password`, that when
|
||||
used with `--target-host` (`--build-host` doesn't need `sudo`), will ask for
|
||||
the `sudo` password for the target host using Python's
|
||||
[getpass](https://docs.python.org/3/library/getpass.html) and forward it to
|
||||
every `sudo` request. Keep in mind that there is no check, so if you type
|
||||
your password wrong, it will fail during activation (this can be improved
|
||||
though)
|
||||
- When `--build-host` and `--target-host` is used together, we will use `nix
|
||||
copy` (or 2 `nix-copy-closure` if you're using Nix <2.18) instead of SSH'ing
|
||||
to build host and using `nix-copy-closure --to target-host`. The reason for
|
||||
this is documented in PR
|
||||
[#364698](https://github.com/NixOS/nixpkgs/pull/364698). If you do need the
|
||||
previous behavior, you can simulate it using `ssh build-host --
|
||||
nixos-rebuild-ng switch --target-host target-host`. If that is not the case,
|
||||
please open an issue
|
||||
- We do some additional validation of flags, like exiting with an error when
|
||||
`--build-host` or `--target-host` is used with `repl`, since the user could
|
||||
assume that the `repl` would be run remotely while it always run the local
|
||||
machine. `nixos-rebuild` silently ignored those flags, so this
|
||||
[may cause some issues](https://github.com/NixOS/nixpkgs/pull/363922) for
|
||||
wrappers
|
||||
|
||||
## Caveats
|
||||
|
||||
- Bugs in the profile manipulation can cause corruption of your profile that
|
||||
|
||||
@@ -19,6 +19,11 @@
|
||||
}:
|
||||
let
|
||||
executable = if withNgSuffix then "nixos-rebuild-ng" else "nixos-rebuild";
|
||||
# This version is kind of arbitrary, we use some features that were
|
||||
# implemented in newer versions of Nix, but not necessary 2.18.
|
||||
# However, Lix is a fork of Nix 2.18, so this looks like a good version
|
||||
# to cut specific functionality.
|
||||
withNix218 = lib.versionAtLeast nix.version "2.18";
|
||||
in
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "nixos-rebuild-ng";
|
||||
@@ -30,10 +35,6 @@ python3Packages.buildPythonApplication rec {
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = with python3Packages; [
|
||||
tabulate
|
||||
];
|
||||
|
||||
nativeBuildInputs = lib.optionals withShellFiles [
|
||||
installShellFiles
|
||||
python3Packages.shtab
|
||||
@@ -53,8 +54,9 @@ python3Packages.buildPythonApplication rec {
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace nixos_rebuild/__init__.py \
|
||||
substituteInPlace nixos_rebuild/constants.py \
|
||||
--subst-var-by executable ${executable} \
|
||||
--subst-var-by withNix218 ${lib.boolToString withNix218} \
|
||||
--subst-var-by withReexec ${lib.boolToString withReexec} \
|
||||
--subst-var-by withShellFiles ${lib.boolToString withShellFiles}
|
||||
|
||||
@@ -88,9 +90,6 @@ python3Packages.buildPythonApplication rec {
|
||||
mypy
|
||||
pytest
|
||||
ruff
|
||||
types-tabulate
|
||||
# dependencies
|
||||
tabulate
|
||||
]
|
||||
);
|
||||
in
|
||||
|
||||
@@ -9,23 +9,18 @@ from subprocess import CalledProcessError, run
|
||||
from typing import assert_never
|
||||
|
||||
from . import nix
|
||||
from .constants import EXECUTABLE, WITH_NIX_2_18, WITH_REEXEC, WITH_SHELL_FILES
|
||||
from .models import Action, BuildAttr, Flake, NRError, Profile
|
||||
from .process import Remote, cleanup_ssh
|
||||
from .utils import Args, LogFormatter
|
||||
from .utils import Args, LogFormatter, tabulate
|
||||
|
||||
logger = logging.getLogger()
|
||||
logger.setLevel(logging.INFO)
|
||||
|
||||
# Build-time flags
|
||||
# Strings to avoid breaking standalone (e.g.: `python -m nixos_rebuild`) usage
|
||||
EXECUTABLE = "@executable@"
|
||||
WITH_REEXEC = "@withReexec@"
|
||||
WITH_SHELL_FILES = "@withShellFiles@"
|
||||
|
||||
|
||||
def get_parser() -> tuple[argparse.ArgumentParser, dict[str, argparse.ArgumentParser]]:
|
||||
common_flags = argparse.ArgumentParser(add_help=False)
|
||||
common_flags.add_argument("--verbose", "-v", action="count", default=0)
|
||||
common_flags.add_argument("--verbose", "-v", action="count", dest="v", default=0)
|
||||
common_flags.add_argument("--max-jobs", "-j")
|
||||
common_flags.add_argument("--cores")
|
||||
common_flags.add_argument("--log-format")
|
||||
@@ -61,7 +56,13 @@ def get_parser() -> tuple[argparse.ArgumentParser, dict[str, argparse.ArgumentPa
|
||||
|
||||
copy_flags = argparse.ArgumentParser(add_help=False)
|
||||
copy_flags.add_argument(
|
||||
"--use-substitutes", "--substitute-on-destination", "-s", action="store_true"
|
||||
"--use-substitutes",
|
||||
"--substitute-on-destination",
|
||||
"-s",
|
||||
action="store_true",
|
||||
# `-s` is the destination since it has the same meaning in
|
||||
# `nix-copy-closure` and `nix copy`
|
||||
dest="s",
|
||||
)
|
||||
|
||||
sub_parsers = {
|
||||
@@ -80,6 +81,9 @@ def get_parser() -> tuple[argparse.ArgumentParser, dict[str, argparse.ArgumentPa
|
||||
allow_abbrev=False,
|
||||
)
|
||||
main_parser.add_argument("--help", "-h", action="store_true", help="Show manpage")
|
||||
main_parser.add_argument(
|
||||
"--debug", action="store_true", help="Enable debug logging"
|
||||
)
|
||||
main_parser.add_argument(
|
||||
"--file", "-f", help="Enable and build the NixOS system from the specified file"
|
||||
)
|
||||
@@ -187,7 +191,7 @@ def parse_args(
|
||||
}
|
||||
|
||||
if args.help or args.action is None:
|
||||
if WITH_SHELL_FILES == "true":
|
||||
if WITH_SHELL_FILES:
|
||||
r = run(["man", "8", EXECUTABLE], check=False)
|
||||
parser.exit(r.returncode)
|
||||
else:
|
||||
@@ -197,8 +201,8 @@ def parse_args(
|
||||
def parser_warn(msg: str) -> None:
|
||||
print(f"{parser.prog}: warning: {msg}", file=sys.stderr)
|
||||
|
||||
# This flag affects both nix and this script
|
||||
if args.verbose:
|
||||
# verbose affects both nix commands and this script, debug only this script
|
||||
if args.v or args.debug:
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/blob/master/pkgs/os-specific/linux/nixos-rebuild/nixos-rebuild.sh#L56
|
||||
@@ -236,6 +240,8 @@ def parse_args(
|
||||
Action.BUILD.value,
|
||||
Action.DRY_BUILD.value,
|
||||
Action.DRY_ACTIVATE.value,
|
||||
Action.BUILD_VM.value,
|
||||
Action.BUILD_VM_WITH_BOOTLOADER.value,
|
||||
):
|
||||
parser.error(
|
||||
f"--target-host/--build-host is not supported with '{args.action}'"
|
||||
@@ -281,6 +287,9 @@ def reexec(
|
||||
def execute(argv: list[str]) -> None:
|
||||
args, args_groups = parse_args(argv)
|
||||
|
||||
if not WITH_NIX_2_18:
|
||||
logger.warning("you're using Nix <2.18, some features will not work correctly")
|
||||
|
||||
atexit.register(cleanup_ssh)
|
||||
|
||||
common_flags = vars(args_groups["common_flags"])
|
||||
@@ -303,7 +312,7 @@ def execute(argv: list[str]) -> None:
|
||||
# Re-exec to a newer version of the script before building to ensure we get
|
||||
# the latest fixes
|
||||
if (
|
||||
WITH_REEXEC == "true"
|
||||
WITH_REEXEC
|
||||
and can_run
|
||||
and not args.fast
|
||||
and not os.environ.get("_NIXOS_REBUILD_REEXEC")
|
||||
@@ -330,13 +339,21 @@ def execute(argv: list[str]) -> None:
|
||||
| Action.BUILD
|
||||
| Action.DRY_BUILD
|
||||
| Action.DRY_ACTIVATE
|
||||
| Action.BUILD_VM
|
||||
| Action.BUILD_VM_WITH_BOOTLOADER
|
||||
):
|
||||
logger.info("building the system configuration...")
|
||||
|
||||
attr = "config.system.build.toplevel"
|
||||
dry_run = action == Action.DRY_BUILD
|
||||
no_link = action in (Action.SWITCH, Action.BOOT)
|
||||
rollback = bool(args.rollback)
|
||||
match action:
|
||||
case Action.BUILD_VM:
|
||||
attr = "config.system.build.vm"
|
||||
case Action.BUILD_VM_WITH_BOOTLOADER:
|
||||
attr = "config.system.build.vmWithBootLoader"
|
||||
case _:
|
||||
attr = "config.system.build.toplevel"
|
||||
|
||||
match (action, rollback, build_host, flake):
|
||||
case (Action.SWITCH | Action.BOOT, True, _, _):
|
||||
@@ -387,10 +404,14 @@ def execute(argv: list[str]) -> None:
|
||||
dry_run=dry_run,
|
||||
**build_flags,
|
||||
)
|
||||
case m:
|
||||
case never:
|
||||
# should never happen, but mypy is not smart enough to
|
||||
# handle this with assert_never
|
||||
raise NRError(f"invalid match for build: {m}")
|
||||
# https://github.com/python/mypy/issues/16650
|
||||
# https://github.com/python/mypy/issues/16722
|
||||
raise AssertionError(
|
||||
f"expected code to be unreachable, but got: {never}"
|
||||
)
|
||||
|
||||
if not rollback:
|
||||
nix.copy_closure(
|
||||
@@ -406,6 +427,7 @@ def execute(argv: list[str]) -> None:
|
||||
target_host=target_host,
|
||||
sudo=args.sudo,
|
||||
)
|
||||
|
||||
if action in (Action.SWITCH, Action.BOOT, Action.TEST, Action.DRY_ACTIVATE):
|
||||
nix.switch_to_configuration(
|
||||
path_to_config,
|
||||
@@ -415,23 +437,12 @@ def execute(argv: list[str]) -> None:
|
||||
specialisation=args.specialisation,
|
||||
install_bootloader=args.install_bootloader,
|
||||
)
|
||||
case Action.BUILD_VM | Action.BUILD_VM_WITH_BOOTLOADER:
|
||||
logger.info("building the system configuration...")
|
||||
attr = "vm" if action == Action.BUILD_VM else "vmWithBootLoader"
|
||||
if flake:
|
||||
path_to_config = nix.build_flake(
|
||||
f"config.system.build.{attr}",
|
||||
flake,
|
||||
**flake_build_flags,
|
||||
elif action in (Action.BUILD_VM, Action.BUILD_VM_WITH_BOOTLOADER):
|
||||
# If you get `not-found`, please open an issue
|
||||
vm_path = next(path_to_config.glob("bin/run-*-vm"), "not-found")
|
||||
print(
|
||||
f"Done. The virtual machine can be started by running '{vm_path}'"
|
||||
)
|
||||
else:
|
||||
path_to_config = nix.build(
|
||||
f"config.system.build.{attr}",
|
||||
build_attr,
|
||||
**build_flags,
|
||||
)
|
||||
vm_path = next(path_to_config.glob("bin/run-*-vm"), "./result/bin/run-*-vm")
|
||||
print(f"Done. The virtual machine can be started by running '{vm_path}'")
|
||||
case Action.EDIT:
|
||||
nix.edit(flake, **flake_build_flags)
|
||||
case Action.DRY_RUN:
|
||||
@@ -441,8 +452,6 @@ def execute(argv: list[str]) -> None:
|
||||
if args.json:
|
||||
print(json.dumps(generations, indent=2))
|
||||
else:
|
||||
from tabulate import tabulate
|
||||
|
||||
headers = {
|
||||
"generation": "Generation",
|
||||
"date": "Build-date",
|
||||
@@ -452,17 +461,7 @@ def execute(argv: list[str]) -> None:
|
||||
"specialisations": "Specialisation",
|
||||
"current": "Current",
|
||||
}
|
||||
# Not exactly the same format as legacy nixos-rebuild but close
|
||||
# enough
|
||||
table = tabulate(
|
||||
generations,
|
||||
headers=headers,
|
||||
tablefmt="plain",
|
||||
numalign="left",
|
||||
stralign="left",
|
||||
disable_numparse=True,
|
||||
)
|
||||
print(table)
|
||||
print(tabulate(generations, headers=headers))
|
||||
case Action.REPL:
|
||||
if flake:
|
||||
nix.repl_flake("toplevel", flake, **flake_build_flags)
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
# Build-time flags
|
||||
# Use strings to avoid breaking standalone (e.g.: `python -m nixos_rebuild`)
|
||||
# usage
|
||||
EXECUTABLE = "@executable@"
|
||||
# Use either `== "true"` if the default (e.g.: `python -m nixos_rebuld`) is
|
||||
# `False` or `!= "false"` if the default is `True`
|
||||
WITH_NIX_2_18 = "@withNix218@" != "false" # type: ignore
|
||||
WITH_REEXEC = "@withReexec@" == "true" # type: ignore
|
||||
WITH_SHELL_FILES = "@withShellFiles@" == "true" # type: ignore
|
||||
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
import os
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from datetime import datetime
|
||||
from importlib.resources import files
|
||||
from pathlib import Path
|
||||
@@ -7,6 +8,7 @@ from string import Template
|
||||
from subprocess import PIPE, CalledProcessError
|
||||
from typing import Final
|
||||
|
||||
from .constants import WITH_NIX_2_18
|
||||
from .models import (
|
||||
Action,
|
||||
BuildAttr,
|
||||
@@ -139,30 +141,56 @@ def copy_closure(
|
||||
"""Copy a nix closure to or from host to localhost.
|
||||
|
||||
Also supports copying a closure from a remote to another remote."""
|
||||
host = to_host or from_host
|
||||
if not host:
|
||||
return
|
||||
|
||||
sshopts = os.getenv("NIX_SSHOPTS", "")
|
||||
run_wrapper(
|
||||
[
|
||||
"nix-copy-closure",
|
||||
*dict_to_flags(copy_flags),
|
||||
"--to" if to_host else "--from",
|
||||
host.host,
|
||||
closure,
|
||||
],
|
||||
extra_env={
|
||||
# Using raw NIX_SSHOPTS here to avoid messing up with the passed
|
||||
# parameters, and we do not add the SSH_DEFAULT_OPTS in the remote
|
||||
# to remote case, otherwise it will fail because of ControlPath
|
||||
# will not exist in remote
|
||||
"NIX_SSHOPTS": sshopts
|
||||
if from_host and to_host
|
||||
else " ".join(filter(lambda x: x, [*SSH_DEFAULT_OPTS, sshopts]))
|
||||
},
|
||||
remote=from_host if to_host else None,
|
||||
)
|
||||
extra_env = {
|
||||
"NIX_SSHOPTS": " ".join(filter(lambda x: x, [*SSH_DEFAULT_OPTS, sshopts]))
|
||||
}
|
||||
|
||||
def nix_copy_closure(host: Remote, to: bool) -> None:
|
||||
run_wrapper(
|
||||
[
|
||||
"nix-copy-closure",
|
||||
*dict_to_flags(copy_flags),
|
||||
"--to" if to else "--from",
|
||||
host.host,
|
||||
closure,
|
||||
],
|
||||
extra_env=extra_env,
|
||||
)
|
||||
|
||||
def nix_copy(to_host: Remote, from_host: Remote) -> None:
|
||||
run_wrapper(
|
||||
[
|
||||
"nix",
|
||||
"copy",
|
||||
"--from",
|
||||
f"ssh://{from_host.host}",
|
||||
"--to",
|
||||
f"ssh://{to_host.host}",
|
||||
closure,
|
||||
],
|
||||
extra_env=extra_env,
|
||||
)
|
||||
|
||||
match (to_host, from_host):
|
||||
case (None, None):
|
||||
return
|
||||
case (Remote(_) as host, None) | (None, Remote(_) as host):
|
||||
nix_copy_closure(host, to=bool(to_host))
|
||||
case (Remote(_), Remote(_)):
|
||||
if WITH_NIX_2_18:
|
||||
# With newer Nix, use `nix copy` instead of `nix-copy-closure`
|
||||
# since it supports `--to` and `--from` at the same time
|
||||
# TODO: once we drop Nix 2.3 from nixpkgs, remove support for
|
||||
# `nix-copy-closure`
|
||||
nix_copy(to_host, from_host)
|
||||
else:
|
||||
# With older Nix, we need to copy from to local and local to
|
||||
# host. This means it is slower and need additional disk space
|
||||
# in local
|
||||
nix_copy_closure(from_host, to=False)
|
||||
nix_copy_closure(to_host, to=True)
|
||||
|
||||
|
||||
def edit(flake: Flake | None, **flake_flags: Args) -> None:
|
||||
@@ -218,7 +246,8 @@ def get_nixpkgs_rev(nixpkgs_path: Path | None) -> str | None:
|
||||
r = run_wrapper(
|
||||
["git", "-C", nixpkgs_path, "rev-parse", "--short", "HEAD"],
|
||||
check=False,
|
||||
stdout=PIPE,
|
||||
# https://github.com/NixOS/nixpkgs/issues/365222
|
||||
capture_output=True,
|
||||
)
|
||||
except FileNotFoundError:
|
||||
# Git is not included in the closure so we need to check
|
||||
@@ -237,68 +266,72 @@ def get_nixpkgs_rev(nixpkgs_path: Path | None) -> str | None:
|
||||
return None
|
||||
|
||||
|
||||
def _parse_generation_from_nix_store(path: Path, profile: Profile) -> Generation:
|
||||
entry_id = path.name.split("-")[1]
|
||||
current = path.name == profile.path.readlink().name
|
||||
timestamp = datetime.fromtimestamp(path.stat().st_ctime).strftime(
|
||||
"%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
|
||||
return Generation(
|
||||
id=int(entry_id),
|
||||
timestamp=timestamp,
|
||||
current=current,
|
||||
)
|
||||
|
||||
|
||||
def _parse_generation_from_nix_env(line: str) -> Generation:
|
||||
parts = line.split()
|
||||
|
||||
entry_id = parts[0]
|
||||
timestamp = f"{parts[1]} {parts[2]}"
|
||||
current = "(current)" in parts
|
||||
|
||||
return Generation(
|
||||
id=int(entry_id),
|
||||
timestamp=timestamp,
|
||||
current=current,
|
||||
)
|
||||
|
||||
|
||||
def get_generations(
|
||||
profile: Profile,
|
||||
target_host: Remote | None = None,
|
||||
using_nix_env: bool = False,
|
||||
sudo: bool = False,
|
||||
) -> list[Generation]:
|
||||
def get_generations(profile: Profile) -> list[Generation]:
|
||||
"""Get all NixOS generations from profile.
|
||||
|
||||
Includes generation ID (e.g.: 1, 2), timestamp (e.g.: when it was created)
|
||||
and if this is the current active profile or not.
|
||||
|
||||
If `lock_profile = True` this command will need root to run successfully.
|
||||
"""
|
||||
if not profile.path.exists():
|
||||
raise NRError(f"no profile '{profile.name}' found")
|
||||
|
||||
result = []
|
||||
if using_nix_env:
|
||||
# Using `nix-env --list-generations` needs root to lock the profile
|
||||
# TODO: do we actually need to lock profile for e.g.: rollback?
|
||||
# https://github.com/NixOS/nix/issues/5144
|
||||
r = run_wrapper(
|
||||
["nix-env", "-p", profile.path, "--list-generations"],
|
||||
stdout=PIPE,
|
||||
remote=target_host,
|
||||
sudo=sudo,
|
||||
def parse_path(path: Path, profile: Profile) -> Generation:
|
||||
entry_id = path.name.split("-")[1]
|
||||
current = path.name == profile.path.readlink().name
|
||||
timestamp = datetime.fromtimestamp(path.stat().st_ctime).strftime(
|
||||
"%Y-%m-%d %H:%M:%S"
|
||||
)
|
||||
for line in r.stdout.splitlines():
|
||||
result.append(_parse_generation_from_nix_env(line))
|
||||
else:
|
||||
assert not target_host, "target_host is not supported when using_nix_env=False"
|
||||
for p in profile.path.parent.glob("system-*-link"):
|
||||
result.append(_parse_generation_from_nix_store(p, profile))
|
||||
return sorted(result, key=lambda d: d.id)
|
||||
|
||||
return Generation(
|
||||
id=int(entry_id),
|
||||
timestamp=timestamp,
|
||||
current=current,
|
||||
)
|
||||
|
||||
return sorted(
|
||||
[parse_path(p, profile) for p in profile.path.parent.glob("system-*-link")],
|
||||
key=lambda d: d.id,
|
||||
)
|
||||
|
||||
|
||||
def get_generations_from_nix_env(
|
||||
profile: Profile,
|
||||
target_host: Remote | None = None,
|
||||
sudo: bool = False,
|
||||
) -> list[Generation]:
|
||||
"""Get all NixOS generations from profile with nix-env. Needs root.
|
||||
|
||||
Includes generation ID (e.g.: 1, 2), timestamp (e.g.: when it was created)
|
||||
and if this is the current active profile or not.
|
||||
"""
|
||||
if not profile.path.exists():
|
||||
raise NRError(f"no profile '{profile.name}' found")
|
||||
|
||||
# Using `nix-env --list-generations` needs root to lock the profile
|
||||
r = run_wrapper(
|
||||
["nix-env", "-p", profile.path, "--list-generations"],
|
||||
stdout=PIPE,
|
||||
remote=target_host,
|
||||
sudo=sudo,
|
||||
)
|
||||
|
||||
def parse_line(line: str) -> Generation:
|
||||
parts = line.split()
|
||||
|
||||
entry_id = parts[0]
|
||||
timestamp = f"{parts[1]} {parts[2]}"
|
||||
current = "(current)" in parts
|
||||
|
||||
return Generation(
|
||||
id=int(entry_id),
|
||||
timestamp=timestamp,
|
||||
current=current,
|
||||
)
|
||||
|
||||
return sorted(
|
||||
[parse_line(line) for line in r.stdout.splitlines()],
|
||||
key=lambda d: d.id,
|
||||
)
|
||||
|
||||
|
||||
def list_generations(profile: Profile) -> list[GenerationJson]:
|
||||
@@ -310,9 +343,8 @@ def list_generations(profile: Profile) -> list[GenerationJson]:
|
||||
Will be formatted in a way that is expected by the output of
|
||||
`nixos-rebuild list-generations --json`.
|
||||
"""
|
||||
generations = get_generations(profile)
|
||||
result = []
|
||||
for generation in reversed(generations):
|
||||
|
||||
def get_generation_info(generation: Generation) -> GenerationJson:
|
||||
generation_path = (
|
||||
profile.path.parent / f"{profile.path.name}-{generation.id}-link"
|
||||
)
|
||||
@@ -340,19 +372,24 @@ def list_generations(profile: Profile) -> list[GenerationJson]:
|
||||
logger.debug("could not get configuration revision: %s", ex)
|
||||
configuration_revision = "Unknown"
|
||||
|
||||
result.append(
|
||||
GenerationJson(
|
||||
generation=generation.id,
|
||||
date=generation.timestamp,
|
||||
nixosVersion=nixos_version,
|
||||
kernelVersion=kernel_version,
|
||||
configurationRevision=configuration_revision,
|
||||
specialisations=specialisations,
|
||||
current=generation.current,
|
||||
)
|
||||
return GenerationJson(
|
||||
generation=generation.id,
|
||||
date=generation.timestamp,
|
||||
nixosVersion=nixos_version,
|
||||
kernelVersion=kernel_version,
|
||||
configurationRevision=configuration_revision,
|
||||
specialisations=specialisations,
|
||||
current=generation.current,
|
||||
)
|
||||
|
||||
return result
|
||||
# This can be surprisingly slow, especially with lots of generations,
|
||||
# but it is basically IO work so we can run in parallel
|
||||
with ThreadPoolExecutor() as executor:
|
||||
return sorted(
|
||||
executor.map(get_generation_info, get_generations(profile)),
|
||||
key=lambda x: x["generation"],
|
||||
reverse=True,
|
||||
)
|
||||
|
||||
|
||||
def repl(attr: str, build_attr: BuildAttr, **nix_flags: Args) -> None:
|
||||
@@ -404,11 +441,8 @@ def rollback_temporary_profile(
|
||||
sudo: bool,
|
||||
) -> Path | None:
|
||||
"Rollback a temporary Nix profile, like one created by `nixos-rebuild test`."
|
||||
generations = get_generations(
|
||||
profile,
|
||||
target_host=target_host,
|
||||
using_nix_env=True,
|
||||
sudo=sudo,
|
||||
generations = get_generations_from_nix_env(
|
||||
profile, target_host=target_host, sudo=sudo
|
||||
)
|
||||
previous_gen_id = None
|
||||
for generation in generations:
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import logging
|
||||
from typing import TypeAlias, override
|
||||
from collections.abc import Mapping, Sequence
|
||||
from typing import Any, TypeAlias, assert_never, override
|
||||
|
||||
Args: TypeAlias = bool | str | list[str] | int | None
|
||||
|
||||
@@ -18,17 +19,22 @@ class LogFormatter(logging.Formatter):
|
||||
return formatter.format(record)
|
||||
|
||||
|
||||
def dict_to_flags(d: dict[str, Args]) -> list[str]:
|
||||
def dict_to_flags(d: Mapping[str, Args]) -> list[str]:
|
||||
flags = []
|
||||
for key, value in d.items():
|
||||
flag = f"--{'-'.join(key.split('_'))}"
|
||||
match value:
|
||||
case None | False | 0 | []:
|
||||
continue
|
||||
case True if len(key) == 1:
|
||||
flags.append(f"-{key}")
|
||||
case True:
|
||||
flags.append(flag)
|
||||
case int() if len(key) == 1:
|
||||
flags.append(f"-{key * value}")
|
||||
case int():
|
||||
flags.append(f"-{key[0] * value}")
|
||||
for i in range(value):
|
||||
flags.append(flag)
|
||||
case str():
|
||||
flags.append(flag)
|
||||
flags.append(value)
|
||||
@@ -36,4 +42,52 @@ def dict_to_flags(d: dict[str, Args]) -> list[str]:
|
||||
flags.append(flag)
|
||||
for v in value:
|
||||
flags.append(v)
|
||||
case _:
|
||||
assert_never(value)
|
||||
return flags
|
||||
|
||||
|
||||
def remap_dicts(
|
||||
dicts: Sequence[Mapping[str, Any]],
|
||||
mappings: Mapping[str, str],
|
||||
) -> list[dict[str, Any]]:
|
||||
return [{mappings.get(k, k): v for k, v in d.items()} for d in dicts]
|
||||
|
||||
|
||||
def tabulate(
|
||||
data: Sequence[Mapping[str, Any]],
|
||||
headers: Mapping[str, str] | None = None,
|
||||
) -> str:
|
||||
"""Convert a sequence of mappings in a tabular-style format for terminal.
|
||||
|
||||
It expects that all mappings (dicts) have the same keys as the first one,
|
||||
otherwise it will misbehave.
|
||||
"""
|
||||
if not data:
|
||||
return ""
|
||||
|
||||
if headers:
|
||||
data = remap_dicts(data, headers)
|
||||
|
||||
data_headers = list(data[0].keys())
|
||||
|
||||
column_widths = [
|
||||
max(
|
||||
len(str(header)),
|
||||
*(len(str(row.get(header, ""))) for row in data),
|
||||
)
|
||||
for header in data_headers
|
||||
]
|
||||
|
||||
def format_row(row: Mapping[str, Any]) -> str:
|
||||
s = (2 * " ").join(
|
||||
f"{str(row[header]).ljust(width)}"
|
||||
for header, width in zip(data_headers, column_widths)
|
||||
)
|
||||
return s.strip()
|
||||
|
||||
result = [format_row(dict(zip(data_headers, data_headers)))]
|
||||
for row in data:
|
||||
result.append(format_row(row))
|
||||
|
||||
return "\n".join(result)
|
||||
|
||||
@@ -67,12 +67,12 @@ def test_parse_args() -> None:
|
||||
]
|
||||
)
|
||||
assert nr.logger.level == logging.DEBUG
|
||||
assert r2.verbose == 3
|
||||
assert r2.v == 3
|
||||
assert r2.flake is False
|
||||
assert r2.action == "dry-build"
|
||||
assert r2.file == "foo"
|
||||
assert r2.attr == "bar"
|
||||
assert g2["common_flags"].verbose == 3
|
||||
assert g2["common_flags"].v == 3
|
||||
|
||||
|
||||
@patch.dict(nr.process.os.environ, {}, clear=True)
|
||||
@@ -109,7 +109,7 @@ def test_execute_nix_boot(mock_run: Any, tmp_path: Path) -> None:
|
||||
call(
|
||||
["git", "-C", nixpkgs_path, "rev-parse", "--short", "HEAD"],
|
||||
check=False,
|
||||
stdout=PIPE,
|
||||
capture_output=True,
|
||||
**DEFAULT_RUN_KWARGS,
|
||||
),
|
||||
call(
|
||||
|
||||
@@ -112,7 +112,6 @@ def test_remote_build(mock_run: Any, monkeypatch: Any) -> None:
|
||||
extra_env={
|
||||
"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh opts"])
|
||||
},
|
||||
remote=None,
|
||||
),
|
||||
call(
|
||||
["nix-store", "--realise", Path("/path/to/file"), "--build"],
|
||||
@@ -166,7 +165,6 @@ def test_remote_build_flake(mock_run: Any, monkeypatch: Any) -> None:
|
||||
extra_env={
|
||||
"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh opts"])
|
||||
},
|
||||
remote=None,
|
||||
),
|
||||
call(
|
||||
[
|
||||
@@ -185,37 +183,66 @@ def test_remote_build_flake(mock_run: Any, monkeypatch: Any) -> None:
|
||||
)
|
||||
|
||||
|
||||
@patch(get_qualified_name(n.run_wrapper, n), autospec=True)
|
||||
def test_copy_closure(mock_run: Any, monkeypatch: Any) -> None:
|
||||
def test_copy_closure(monkeypatch: Any) -> None:
|
||||
closure = Path("/path/to/closure")
|
||||
n.copy_closure(closure, None)
|
||||
mock_run.assert_not_called()
|
||||
with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run:
|
||||
n.copy_closure(closure, None)
|
||||
mock_run.assert_not_called()
|
||||
|
||||
target_host = m.Remote("user@target.host", [], None)
|
||||
build_host = m.Remote("user@build.host", [], None)
|
||||
|
||||
n.copy_closure(closure, target_host)
|
||||
mock_run.assert_called_with(
|
||||
["nix-copy-closure", "--to", "user@target.host", closure],
|
||||
extra_env={"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS)},
|
||||
remote=None,
|
||||
)
|
||||
with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run:
|
||||
n.copy_closure(closure, target_host)
|
||||
mock_run.assert_called_with(
|
||||
["nix-copy-closure", "--to", "user@target.host", closure],
|
||||
extra_env={"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS)},
|
||||
)
|
||||
|
||||
monkeypatch.setenv("NIX_SSHOPTS", "--ssh build-opt")
|
||||
n.copy_closure(closure, None, build_host)
|
||||
mock_run.assert_called_with(
|
||||
["nix-copy-closure", "--from", "user@build.host", closure],
|
||||
extra_env={"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh build-opt"])},
|
||||
remote=None,
|
||||
)
|
||||
with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run:
|
||||
n.copy_closure(closure, None, build_host)
|
||||
mock_run.assert_called_with(
|
||||
["nix-copy-closure", "--from", "user@build.host", closure],
|
||||
extra_env={
|
||||
"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh build-opt"])
|
||||
},
|
||||
)
|
||||
|
||||
monkeypatch.setenv("NIX_SSHOPTS", "--ssh build-target-opt")
|
||||
n.copy_closure(closure, target_host, build_host)
|
||||
mock_run.assert_called_with(
|
||||
["nix-copy-closure", "--to", "user@target.host", closure],
|
||||
remote=build_host,
|
||||
extra_env={"NIX_SSHOPTS": "--ssh build-target-opt"},
|
||||
)
|
||||
monkeypatch.setattr(n, "WITH_NIX_2_18", True)
|
||||
extra_env = {
|
||||
"NIX_SSHOPTS": " ".join(p.SSH_DEFAULT_OPTS + ["--ssh build-target-opt"])
|
||||
}
|
||||
with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run:
|
||||
n.copy_closure(closure, target_host, build_host)
|
||||
mock_run.assert_called_with(
|
||||
[
|
||||
"nix",
|
||||
"copy",
|
||||
"--from",
|
||||
"ssh://user@build.host",
|
||||
"--to",
|
||||
"ssh://user@target.host",
|
||||
closure,
|
||||
],
|
||||
extra_env=extra_env,
|
||||
)
|
||||
|
||||
monkeypatch.setattr(n, "WITH_NIX_2_18", False)
|
||||
with patch(get_qualified_name(n.run_wrapper, n), autospec=True) as mock_run:
|
||||
n.copy_closure(closure, target_host, build_host)
|
||||
mock_run.assert_has_calls(
|
||||
[
|
||||
call(
|
||||
["nix-copy-closure", "--from", "user@build.host", closure],
|
||||
extra_env=extra_env,
|
||||
),
|
||||
call(
|
||||
["nix-copy-closure", "--to", "user@target.host", closure],
|
||||
extra_env=extra_env,
|
||||
),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
@patch(get_qualified_name(n.run_wrapper, n), autospec=True)
|
||||
@@ -262,14 +289,14 @@ def test_get_nixpkgs_rev() -> None:
|
||||
mock_run.assert_called_with(
|
||||
["git", "-C", path, "rev-parse", "--short", "HEAD"],
|
||||
check=False,
|
||||
stdout=PIPE,
|
||||
capture_output=True,
|
||||
)
|
||||
|
||||
expected_calls = [
|
||||
call(
|
||||
["git", "-C", path, "rev-parse", "--short", "HEAD"],
|
||||
check=False,
|
||||
stdout=PIPE,
|
||||
capture_output=True,
|
||||
),
|
||||
call(
|
||||
["git", "-C", path, "diff", "--quiet"],
|
||||
@@ -300,7 +327,7 @@ def test_get_nixpkgs_rev() -> None:
|
||||
mock_run.assert_has_calls(expected_calls)
|
||||
|
||||
|
||||
def test_get_generations_from_nix_store(tmp_path: Path) -> None:
|
||||
def test_get_generations(tmp_path: Path) -> None:
|
||||
nixos_path = tmp_path / "nixos-system"
|
||||
nixos_path.mkdir()
|
||||
|
||||
@@ -310,20 +337,17 @@ def test_get_generations_from_nix_store(tmp_path: Path) -> None:
|
||||
(tmp_path / "system-3-link").symlink_to(nixos_path)
|
||||
(tmp_path / "system-2-link").symlink_to(nixos_path)
|
||||
|
||||
assert n.get_generations(
|
||||
m.Profile("system", tmp_path / "system"),
|
||||
using_nix_env=False,
|
||||
) == [
|
||||
assert n.get_generations(m.Profile("system", tmp_path / "system")) == [
|
||||
m.Generation(id=1, current=False, timestamp=ANY),
|
||||
m.Generation(id=2, current=True, timestamp=ANY),
|
||||
m.Generation(id=3, current=False, timestamp=ANY),
|
||||
]
|
||||
|
||||
|
||||
@patch(
|
||||
get_qualified_name(n.run_wrapper, n),
|
||||
autospec=True,
|
||||
return_value=CompletedProcess(
|
||||
def test_get_generations_from_nix_env(tmp_path: Path) -> None:
|
||||
path = tmp_path / "test"
|
||||
path.touch()
|
||||
return_value = CompletedProcess(
|
||||
[],
|
||||
0,
|
||||
stdout=textwrap.dedent("""\
|
||||
@@ -331,17 +355,40 @@ def test_get_generations_from_nix_store(tmp_path: Path) -> None:
|
||||
2083 2024-11-07 22:59:41
|
||||
2084 2024-11-07 23:54:17 (current)
|
||||
"""),
|
||||
),
|
||||
)
|
||||
def test_get_generations_from_nix_env(mock_run: Any, tmp_path: Path) -> None:
|
||||
path = tmp_path / "test"
|
||||
path.touch()
|
||||
)
|
||||
|
||||
assert n.get_generations(m.Profile("system", path), using_nix_env=True) == [
|
||||
m.Generation(id=2082, current=False, timestamp="2024-11-07 22:58:56"),
|
||||
m.Generation(id=2083, current=False, timestamp="2024-11-07 22:59:41"),
|
||||
m.Generation(id=2084, current=True, timestamp="2024-11-07 23:54:17"),
|
||||
]
|
||||
with patch(
|
||||
get_qualified_name(n.run_wrapper, n), autospec=True, return_value=return_value
|
||||
) as mock_run:
|
||||
assert n.get_generations_from_nix_env(m.Profile("system", path)) == [
|
||||
m.Generation(id=2082, current=False, timestamp="2024-11-07 22:58:56"),
|
||||
m.Generation(id=2083, current=False, timestamp="2024-11-07 22:59:41"),
|
||||
m.Generation(id=2084, current=True, timestamp="2024-11-07 23:54:17"),
|
||||
]
|
||||
mock_run.assert_called_with(
|
||||
["nix-env", "-p", path, "--list-generations"],
|
||||
stdout=PIPE,
|
||||
remote=None,
|
||||
sudo=False,
|
||||
)
|
||||
|
||||
remote = m.Remote("user@host", [], "password")
|
||||
with patch(
|
||||
get_qualified_name(n.run_wrapper, n), autospec=True, return_value=return_value
|
||||
) as mock_run:
|
||||
assert n.get_generations_from_nix_env(
|
||||
m.Profile("system", path), remote, True
|
||||
) == [
|
||||
m.Generation(id=2082, current=False, timestamp="2024-11-07 22:58:56"),
|
||||
m.Generation(id=2083, current=False, timestamp="2024-11-07 22:59:41"),
|
||||
m.Generation(id=2084, current=True, timestamp="2024-11-07 23:54:17"),
|
||||
]
|
||||
mock_run.assert_called_with(
|
||||
["nix-env", "-p", path, "--list-generations"],
|
||||
stdout=PIPE,
|
||||
remote=remote,
|
||||
sudo=True,
|
||||
)
|
||||
|
||||
|
||||
@patch(
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import textwrap
|
||||
|
||||
import nixos_rebuild.utils as u
|
||||
|
||||
|
||||
@@ -9,7 +11,9 @@ def test_dict_to_flags() -> None:
|
||||
"test_flag_3": "value",
|
||||
"test_flag_4": ["v1", "v2"],
|
||||
"test_flag_5": None,
|
||||
"verbose": 5,
|
||||
"t": True,
|
||||
"v": 5,
|
||||
"verbose": 2,
|
||||
}
|
||||
)
|
||||
assert r1 == [
|
||||
@@ -19,7 +23,29 @@ def test_dict_to_flags() -> None:
|
||||
"--test-flag-4",
|
||||
"v1",
|
||||
"v2",
|
||||
"-t",
|
||||
"-vvvvv",
|
||||
"--verbose",
|
||||
"--verbose",
|
||||
]
|
||||
r2 = u.dict_to_flags({"verbose": 0, "empty_list": []})
|
||||
assert r2 == []
|
||||
|
||||
|
||||
def test_remap_dicts() -> None:
|
||||
assert u.remap_dicts(
|
||||
[{"foo": 1, "bar": True}, {"qux": "keep"}],
|
||||
{"foo": "Foo", "bar": "Bar"},
|
||||
) == [{"Foo": 1, "Bar": True}, {"qux": "keep"}]
|
||||
|
||||
|
||||
def test_tabulate() -> None:
|
||||
assert u.tabulate([]) == ""
|
||||
assert u.tabulate([{}]) == "\n"
|
||||
assert u.tabulate(
|
||||
[{"foo": 12345, "bar": ["abc", "cde"]}, {"foo": 345, "bar": 456}],
|
||||
{"foo": "Foo", "bar": "Bar"},
|
||||
) == textwrap.dedent("""\
|
||||
Foo Bar
|
||||
12345 ['abc', 'cde']
|
||||
345 456""")
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "oksh";
|
||||
version = "7.5";
|
||||
version = "7.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ibara";
|
||||
repo = pname;
|
||||
rev = "${pname}-${version}";
|
||||
sha256 = "sha256-r75jjH1E7/36b0ebjsZK7rAuOHEyaIta5Bi8nB4zVjo=";
|
||||
hash = "sha256-iEV0ibEXwJioBaKN2Tuy0+SaVs8q0Ac4bImP8zhI7oI=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -30,11 +30,11 @@
|
||||
}:
|
||||
|
||||
let
|
||||
openrct2-version = "0.4.15";
|
||||
openrct2-version = "0.4.17";
|
||||
|
||||
# Those versions MUST match the pinned versions within the CMakeLists.txt
|
||||
# file. The REPLAYS repository from the CMakeLists.txt is not necessary.
|
||||
objects-version = "1.4.8";
|
||||
objects-version = "1.4.11";
|
||||
openmsx-version = "1.6";
|
||||
opensfx-version = "1.0.5";
|
||||
title-sequences-version = "0.4.14";
|
||||
@@ -43,14 +43,14 @@ let
|
||||
owner = "OpenRCT2";
|
||||
repo = "OpenRCT2";
|
||||
rev = "v${openrct2-version}";
|
||||
hash = "sha256-VumjJGAur+2A7n0pFcNM7brYaoeaVCPBtRGFIZmq5QY=";
|
||||
hash = "sha256-lyphYKPkS1DQj7OAvswI/zNMUZmvEevvtDar951AXwg=";
|
||||
};
|
||||
|
||||
objects-src = fetchFromGitHub {
|
||||
owner = "OpenRCT2";
|
||||
repo = "objects";
|
||||
rev = "v${objects-version}";
|
||||
hash = "sha256-A6iFaWda5qiFirGqOP6H9w0PP5Me8BRr2HXKZPHJImE=";
|
||||
hash = "sha256-V06lh3h3sCKmLat4OWSOmrzpiFlOu8HhaSQSqsfkjds=";
|
||||
};
|
||||
|
||||
openmsx-src = fetchFromGitHub {
|
||||
@@ -117,11 +117,6 @@ stdenv.mkDerivation {
|
||||
"-DDOWNLOAD_TITLE_SEQUENCES=OFF"
|
||||
];
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = toString [
|
||||
# Needed with GCC 12
|
||||
"-Wno-error=maybe-uninitialized"
|
||||
];
|
||||
|
||||
postUnpack = ''
|
||||
mkdir -p $sourceRoot/data/assetpack
|
||||
|
||||
@@ -146,8 +141,6 @@ stdenv.mkDerivation {
|
||||
+ (versionCheck "TITLE_SEQUENCE" title-sequences-version)
|
||||
);
|
||||
|
||||
preFixup = "ln -s $out/share/openrct2 $out/bin/data";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Open source re-implementation of RollerCoaster Tycoon 2 (original game required)";
|
||||
homepage = "https://openrct2.io/";
|
||||
|
||||
@@ -51,11 +51,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "opera";
|
||||
version = "114.0.5282.102";
|
||||
version = "115.0.5322.77";
|
||||
|
||||
src = fetchurl {
|
||||
url = "${mirror}/${version}/linux/${pname}-stable_${version}_amd64.deb";
|
||||
hash = "sha256-PBbozIdA+cfEzGIyL1P+25FZtrnd7ldctOtZYomKd/8=";
|
||||
hash = "sha256-mMXwshT15+5R2/jCSAutO4UVFGAV2Enc4IjvUeqyCCU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -17,13 +17,13 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "osmo-bsc";
|
||||
version = "1.12.1";
|
||||
version = "1.12.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "osmocom";
|
||||
repo = "osmo-bsc";
|
||||
rev = version;
|
||||
hash = "sha256-4ELOkxgtqV30r7xD1XcYXpscswvCQacJWUYcbfDNPhI=";
|
||||
hash = "sha256-V1URXatXYaItv1X5VAuWpaeTNJjK6qb9DqmecDm2PQ0=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -26,8 +26,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
makeFlags = [
|
||||
"PREFIX=$(out)"
|
||||
# prevent real build date which is impure
|
||||
"BUILD_DATE=\<unknown\>"
|
||||
"BUILD_COMMIT=\<unknown\>"
|
||||
"BUILD_DATE=\\<unknown\\>"
|
||||
"BUILD_COMMIT=\\<unknown\\>"
|
||||
];
|
||||
|
||||
# provide backward compatible PointerHolder, suppress deprecation warnings
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "passt";
|
||||
version = "2024_10_30.ee7d0b6";
|
||||
version = "2024_11_27.c0fbc7e";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://passt.top/passt/snapshot/passt-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-x5WIqtWBfVt7+u47bfT2g92ghhaIjYt2GW279+sbKdE=";
|
||||
hash = "sha256-S1UlQio4EtyzkJJ8e30+wwo6VFYfcscc6g/S1Qfgp18=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -1,29 +0,0 @@
|
||||
---
|
||||
persepolis/scripts/download.py | 10 +---------
|
||||
1 file changed, 1 insertion(+), 9 deletions(-)
|
||||
|
||||
diff --git a/persepolis/scripts/download.py b/persepolis/scripts/download.py
|
||||
index aaabb35..69676d3 100644
|
||||
--- a/persepolis/scripts/download.py
|
||||
+++ b/persepolis/scripts/download.py
|
||||
@@ -72,16 +72,8 @@ def startAria():
|
||||
|
||||
# in macintosh
|
||||
elif os_type == OS.OSX:
|
||||
- if aria2_path == "" or aria2_path == None or os.path.isfile(str(aria2_path)) == False:
|
||||
-
|
||||
- cwd = sys.argv[0]
|
||||
- current_directory = os.path.dirname(cwd)
|
||||
- aria2d = os.path.join(current_directory, 'aria2c')
|
||||
|
||||
- else:
|
||||
- aria2d = aria2_path
|
||||
-
|
||||
- subprocess.Popen([aria2d, '--no-conf',
|
||||
+ subprocess.Popen(['aria2c', '--no-conf',
|
||||
'--enable-rpc', '--rpc-listen-port=' + str(port),
|
||||
'--rpc-max-request-size=2M',
|
||||
'--rpc-listen-all', '--quiet=true'],
|
||||
--
|
||||
2.39.3 (Apple Git-145)
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
---
|
||||
persepolis/scripts/mainwindow.py | 2 +-
|
||||
persepolis/scripts/useful_tools.py | 2 +-
|
||||
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/persepolis/scripts/mainwindow.py b/persepolis/scripts/mainwindow.py
|
||||
index d21f3f4..a0e3674 100644
|
||||
--- a/persepolis/scripts/mainwindow.py
|
||||
+++ b/persepolis/scripts/mainwindow.py
|
||||
@@ -161,7 +161,7 @@ class CheckVersionsThread(QThread):
|
||||
|
||||
else:
|
||||
pipe = subprocess.Popen(
|
||||
- [ffmpeg_path, '-version'],
|
||||
+ ['ffmpeg', '-version'],
|
||||
stdout=subprocess.PIPE,
|
||||
stdin=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
diff --git a/persepolis/scripts/useful_tools.py b/persepolis/scripts/useful_tools.py
|
||||
index b780967..31733eb 100644
|
||||
--- a/persepolis/scripts/useful_tools.py
|
||||
+++ b/persepolis/scripts/useful_tools.py
|
||||
@@ -342,7 +342,7 @@ def muxer(parent, video_finder_dictionary):
|
||||
current_directory = os.path.dirname(cwd)
|
||||
ffmpeg_path = os.path.join(current_directory, 'ffmpeg')
|
||||
|
||||
- pipe = subprocess.Popen([ffmpeg_path, '-i', video_file_path,
|
||||
+ pipe = subprocess.Popen(['ffmpeg', '-i', video_file_path,
|
||||
'-i', audio_file_path,
|
||||
'-c', 'copy',
|
||||
'-shortest',
|
||||
--
|
||||
2.39.3 (Apple Git-145)
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
, qt5
|
||||
, python3
|
||||
, fetchFromGitHub
|
||||
, aria2
|
||||
, ffmpeg
|
||||
, libnotify
|
||||
, pulseaudio
|
||||
@@ -14,47 +13,34 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "persepolis";
|
||||
version = "4.0.1";
|
||||
version = "5.0.1";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "persepolisdm";
|
||||
repo = "persepolis";
|
||||
rev = "57dc9d438bb3f126070a17c7a3677c45ea4dd332";
|
||||
hash = "sha256-7OXAITFQJ2/aY0QmqlAo7if7cY7+T3j6PUjfJJV8Z2Q=";
|
||||
rev = "refs/tags/${version}";
|
||||
hash = "sha256-ffEXPkpHGwvVzUxO6sjAEKYbxRod7o8f7DWR5AN+SkA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Upstream does currently not allow building from source on macOS. These patches can likely
|
||||
# be removed if https://github.com/persepolisdm/persepolis/issues/943 is fixed upstream
|
||||
./0003-Search-PATH-for-aria2c-on-darwin.patch
|
||||
./0004-Search-PATH-for-ffmpeg-on-darwin.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# Ensure dependencies with hard-coded FHS dependencies are properly detected
|
||||
substituteInPlace check_dependencies.py --replace-fail "isdir(notifications_path)" "isdir('${sound-theme-freedesktop}/share/sounds/freedesktop')"
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/applications
|
||||
cp $src/xdg/com.github.persepolisdm.persepolis.desktop $out/share/applications
|
||||
'';
|
||||
|
||||
# prevent double wrapping
|
||||
dontWrapQtApps = true;
|
||||
nativeBuildInputs = [ meson ninja pkg-config qt5.wrapQtAppsHook ];
|
||||
|
||||
# feed args to wrapPythonApp
|
||||
makeWrapperArgs = [
|
||||
"--prefix PATH : ${lib.makeBinPath [ aria2 ffmpeg libnotify ]}"
|
||||
"--prefix PATH : ${lib.makeBinPath [ ffmpeg libnotify ]}"
|
||||
"\${qtWrapperArgs[@]}"
|
||||
];
|
||||
|
||||
# The presence of these dependencies is checked during setuptoolsCheckPhase,
|
||||
# but apart from that, they're not required during build, only runtime
|
||||
nativeCheckInputs = [
|
||||
aria2
|
||||
libnotify
|
||||
pulseaudio
|
||||
sound-theme-freedesktop
|
||||
@@ -74,7 +60,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
]);
|
||||
|
||||
meta = with lib; {
|
||||
description = "GUI for aria2";
|
||||
description = "Download manager GUI written in Python";
|
||||
mainProgram = "persepolis";
|
||||
homepage = "https://persepolisdm.github.io/";
|
||||
license = licenses.gpl3Plus;
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
flutter327,
|
||||
gst_all_1,
|
||||
}:
|
||||
|
||||
flutter327.buildFlutterApplication rec {
|
||||
pname = "pied";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Elleo";
|
||||
repo = "pied";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-I2p3GIb54r9r/phbKJsz/cFw1ECdwZ2RnCYVxjsHzg0=";
|
||||
};
|
||||
|
||||
pubspecLock = lib.importJSON ./pubspec.lock.json;
|
||||
patches = [ ./patches/add_piper_tts-path.patch ];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
buildInputs = [
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gst-plugins-bad
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
install -D flatpak/com.mikeasoft.pied.desktop -t $out/share/applications
|
||||
install -D flatpak/com.mikeasoft.pied.png -t $out/share/pixmaps
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "Piper text-to-speech voice manager for use with Speech Dispatcher";
|
||||
homepage = "https://github.com/Elleo/pied";
|
||||
changelog = "https://github.com/Elleo/pied/releases/tag/${src.tag}";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ genga898 ];
|
||||
mainProgram = "pied";
|
||||
badPlatforms = [
|
||||
# Silently fails in dartConfigHook
|
||||
lib.systems.inspect.patterns.isDarwin
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
diff --git a/lib/main.dart b/lib/main.dart
|
||||
index d677fc3..14c6fd9 100644
|
||||
--- a/lib/main.dart
|
||||
+++ b/lib/main.dart
|
||||
@@ -52,9 +52,8 @@ class _MainPageState extends State<MainPage> {
|
||||
|
||||
void checkForPiper() async {
|
||||
final Directory appDir = await getDataDir();
|
||||
- Directory piperDir = Directory(path.join(appDir.path, "piper"));
|
||||
setState(() {
|
||||
- piperPresent = piperDir.existsSync();
|
||||
+ piperPresent = true;
|
||||
if (piperPresent) {
|
||||
title = "Voice Selection";
|
||||
}
|
||||
diff --git a/lib/voice_selector.dart b/lib/voice_selector.dart
|
||||
index 33944ed..66949e3 100644
|
||||
--- a/lib/voice_selector.dart
|
||||
+++ b/lib/voice_selector.dart
|
||||
@@ -363,8 +363,7 @@ class _VoiceSelectorState extends State<VoiceSelector> {
|
||||
configString =
|
||||
configString.replaceAll(
|
||||
"PIPER_PATH",
|
||||
- path.join(appDir.path,
|
||||
- "piper", "piper"));
|
||||
+ "piper");
|
||||
configString =
|
||||
configString.replaceAll(
|
||||
"MODEL_PATH",
|
||||
@@ -0,0 +1,922 @@
|
||||
{
|
||||
"packages": {
|
||||
"archive": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "archive",
|
||||
"sha256": "cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.6.1"
|
||||
},
|
||||
"args": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "args",
|
||||
"sha256": "eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.4.2"
|
||||
},
|
||||
"async": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "async",
|
||||
"sha256": "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.11.0"
|
||||
},
|
||||
"audioplayers": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "audioplayers",
|
||||
"sha256": "c05c6147124cd63e725e861335a8b4d57300b80e6e92cea7c145c739223bbaef",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "5.2.1"
|
||||
},
|
||||
"audioplayers_android": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "audioplayers_android",
|
||||
"sha256": "b00e1a0e11365d88576320ec2d8c192bc21f1afb6c0e5995d1c57ae63156acb5",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "4.0.3"
|
||||
},
|
||||
"audioplayers_darwin": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "audioplayers_darwin",
|
||||
"sha256": "3034e99a6df8d101da0f5082dcca0a2a99db62ab1d4ddb3277bed3f6f81afe08",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "5.0.2"
|
||||
},
|
||||
"audioplayers_linux": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "audioplayers_linux",
|
||||
"sha256": "60787e73fefc4d2e0b9c02c69885402177e818e4e27ef087074cf27c02246c9e",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.0"
|
||||
},
|
||||
"audioplayers_platform_interface": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "audioplayers_platform_interface",
|
||||
"sha256": "365c547f1bb9e77d94dd1687903a668d8f7ac3409e48e6e6a3668a1ac2982adb",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "6.1.0"
|
||||
},
|
||||
"audioplayers_web": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "audioplayers_web",
|
||||
"sha256": "22cd0173e54d92bd9b2c80b1204eb1eb159ece87475ab58c9788a70ec43c2a62",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "4.1.0"
|
||||
},
|
||||
"audioplayers_windows": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "audioplayers_windows",
|
||||
"sha256": "9536812c9103563644ada2ef45ae523806b0745f7a78e89d1b5fb1951de90e1a",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.0"
|
||||
},
|
||||
"boolean_selector": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "boolean_selector",
|
||||
"sha256": "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.1"
|
||||
},
|
||||
"characters": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "characters",
|
||||
"sha256": "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.3.0"
|
||||
},
|
||||
"clock": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "clock",
|
||||
"sha256": "cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.1.1"
|
||||
},
|
||||
"collection": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "collection",
|
||||
"sha256": "ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.18.0"
|
||||
},
|
||||
"crypto": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "crypto",
|
||||
"sha256": "ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.0.3"
|
||||
},
|
||||
"cupertino_icons": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "cupertino_icons",
|
||||
"sha256": "d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.0.6"
|
||||
},
|
||||
"dbus": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "dbus",
|
||||
"sha256": "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.7.10"
|
||||
},
|
||||
"fake_async": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "fake_async",
|
||||
"sha256": "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.3.1"
|
||||
},
|
||||
"ffi": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "ffi",
|
||||
"sha256": "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.3"
|
||||
},
|
||||
"file": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "file",
|
||||
"sha256": "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "7.0.0"
|
||||
},
|
||||
"flutter": {
|
||||
"dependency": "direct main",
|
||||
"description": "flutter",
|
||||
"source": "sdk",
|
||||
"version": "0.0.0"
|
||||
},
|
||||
"flutter_highlight": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "flutter_highlight",
|
||||
"sha256": "7b96333867aa07e122e245c033b8ad622e4e3a42a1a2372cbb098a2541d8782c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.7.0"
|
||||
},
|
||||
"flutter_lints": {
|
||||
"dependency": "direct dev",
|
||||
"description": {
|
||||
"name": "flutter_lints",
|
||||
"sha256": "a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.0.3"
|
||||
},
|
||||
"flutter_local_notifications": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "flutter_local_notifications",
|
||||
"sha256": "6d11ea777496061e583623aaf31923f93a9409ef8fcaeeefdd6cd78bf4fe5bb3",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "16.1.0"
|
||||
},
|
||||
"flutter_local_notifications_linux": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "flutter_local_notifications_linux",
|
||||
"sha256": "33f741ef47b5f63cc7f78fe75eeeac7e19f171ff3c3df054d84c1e38bedb6a03",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "4.0.0+1"
|
||||
},
|
||||
"flutter_local_notifications_platform_interface": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "flutter_local_notifications_platform_interface",
|
||||
"sha256": "7cf643d6d5022f3baed0be777b0662cce5919c0a7b86e700299f22dc4ae660ef",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "7.0.0+1"
|
||||
},
|
||||
"flutter_test": {
|
||||
"dependency": "direct dev",
|
||||
"description": "flutter",
|
||||
"source": "sdk",
|
||||
"version": "0.0.0"
|
||||
},
|
||||
"flutter_web_plugins": {
|
||||
"dependency": "transitive",
|
||||
"description": "flutter",
|
||||
"source": "sdk",
|
||||
"version": "0.0.0"
|
||||
},
|
||||
"globbing": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "globbing",
|
||||
"sha256": "4f89cfaf6fa74c9c1740a96259da06bd45411ede56744e28017cc534a12b6e2d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.0.0"
|
||||
},
|
||||
"gtk": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "gtk",
|
||||
"sha256": "e8ce9ca4b1df106e4d72dad201d345ea1a036cc12c360f1a7d5a758f78ffa42c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.0"
|
||||
},
|
||||
"highlight": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "highlight",
|
||||
"sha256": "5353a83ffe3e3eca7df0abfb72dcf3fa66cc56b953728e7113ad4ad88497cf21",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.7.0"
|
||||
},
|
||||
"http": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "http",
|
||||
"sha256": "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.1.0"
|
||||
},
|
||||
"http_parser": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "http_parser",
|
||||
"sha256": "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "4.0.2"
|
||||
},
|
||||
"js": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "js",
|
||||
"sha256": "f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.6.7"
|
||||
},
|
||||
"leak_tracker": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "leak_tracker",
|
||||
"sha256": "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "10.0.5"
|
||||
},
|
||||
"leak_tracker_flutter_testing": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "leak_tracker_flutter_testing",
|
||||
"sha256": "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.0.5"
|
||||
},
|
||||
"leak_tracker_testing": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "leak_tracker_testing",
|
||||
"sha256": "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.0.1"
|
||||
},
|
||||
"lints": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "lints",
|
||||
"sha256": "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.1"
|
||||
},
|
||||
"markdown": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "markdown",
|
||||
"sha256": "acf35edccc0463a9d7384e437c015a3535772e09714cf60e07eeef3a15870dcd",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "7.1.1"
|
||||
},
|
||||
"markdown_widget": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "markdown_widget",
|
||||
"sha256": "b69334a1dd633c32d688735d771ebaf5490f713cd00917cb52b53c14c2c09d81",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.3.1"
|
||||
},
|
||||
"matcher": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "matcher",
|
||||
"sha256": "d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.12.16+1"
|
||||
},
|
||||
"material_color_utilities": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "material_color_utilities",
|
||||
"sha256": "f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.11.1"
|
||||
},
|
||||
"meta": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "meta",
|
||||
"sha256": "bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.15.0"
|
||||
},
|
||||
"path": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "path",
|
||||
"sha256": "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.9.0"
|
||||
},
|
||||
"path_provider": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "path_provider",
|
||||
"sha256": "a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.1"
|
||||
},
|
||||
"path_provider_android": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "path_provider_android",
|
||||
"sha256": "e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.2.1"
|
||||
},
|
||||
"path_provider_foundation": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "path_provider_foundation",
|
||||
"sha256": "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.3.1"
|
||||
},
|
||||
"path_provider_linux": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "path_provider_linux",
|
||||
"sha256": "f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.2.1"
|
||||
},
|
||||
"path_provider_platform_interface": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "path_provider_platform_interface",
|
||||
"sha256": "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.1"
|
||||
},
|
||||
"path_provider_windows": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "path_provider_windows",
|
||||
"sha256": "8bc9f22eee8690981c22aa7fc602f5c85b497a6fb2ceb35ee5a5e5ed85ad8170",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.2.1"
|
||||
},
|
||||
"petitparser": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "petitparser",
|
||||
"sha256": "cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "5.4.0"
|
||||
},
|
||||
"platform": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "platform",
|
||||
"sha256": "0a279f0707af40c890e80b1e9df8bb761694c074ba7e1d4ab1bc4b728e200b59",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.3"
|
||||
},
|
||||
"plugin_platform_interface": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "plugin_platform_interface",
|
||||
"sha256": "f4f88d4a900933e7267e2b353594774fc0d07fb072b47eedcd5b54e1ea3269f8",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.7"
|
||||
},
|
||||
"posix": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "posix",
|
||||
"sha256": "3ad26924254fd2354b0e2b95fc8b45ac392ad87434f8e64807b3a1ac077f2256",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "5.0.0"
|
||||
},
|
||||
"quiver": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "quiver",
|
||||
"sha256": "b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.2.1"
|
||||
},
|
||||
"scroll_to_index": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "scroll_to_index",
|
||||
"sha256": "b707546e7500d9f070d63e5acf74fd437ec7eeeb68d3412ef7b0afada0b4f176",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.0.1"
|
||||
},
|
||||
"shared_preferences": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "shared_preferences",
|
||||
"sha256": "746e5369a43170c25816cc472ee016d3a66bc13fcf430c0bc41ad7b4b2922051",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.3.2"
|
||||
},
|
||||
"shared_preferences_android": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "shared_preferences_android",
|
||||
"sha256": "3b9febd815c9ca29c9e3520d50ec32f49157711e143b7a4ca039eb87e8ade5ab",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.3.3"
|
||||
},
|
||||
"shared_preferences_foundation": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "shared_preferences_foundation",
|
||||
"sha256": "07e050c7cd39bad516f8d64c455f04508d09df104be326d8c02551590a0d513d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.5.3"
|
||||
},
|
||||
"shared_preferences_linux": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "shared_preferences_linux",
|
||||
"sha256": "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.4.1"
|
||||
},
|
||||
"shared_preferences_platform_interface": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "shared_preferences_platform_interface",
|
||||
"sha256": "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.4.1"
|
||||
},
|
||||
"shared_preferences_web": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "shared_preferences_web",
|
||||
"sha256": "d2ca4132d3946fec2184261726b355836a82c33d7d5b67af32692aff18a4684e",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.4.2"
|
||||
},
|
||||
"shared_preferences_windows": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "shared_preferences_windows",
|
||||
"sha256": "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.4.1"
|
||||
},
|
||||
"sky_engine": {
|
||||
"dependency": "transitive",
|
||||
"description": "flutter",
|
||||
"source": "sdk",
|
||||
"version": "0.0.99"
|
||||
},
|
||||
"source_span": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "source_span",
|
||||
"sha256": "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.10.0"
|
||||
},
|
||||
"sprintf": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "sprintf",
|
||||
"sha256": "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "7.0.0"
|
||||
},
|
||||
"stack_trace": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "stack_trace",
|
||||
"sha256": "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.11.1"
|
||||
},
|
||||
"stream_channel": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "stream_channel",
|
||||
"sha256": "ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.2"
|
||||
},
|
||||
"string_scanner": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "string_scanner",
|
||||
"sha256": "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.2.0"
|
||||
},
|
||||
"synchronized": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "synchronized",
|
||||
"sha256": "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.0"
|
||||
},
|
||||
"system_info2": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "system_info2",
|
||||
"sha256": "65206bbef475217008b5827374767550a5420ce70a04d2d7e94d1d2253f3efc9",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "4.0.0"
|
||||
},
|
||||
"term_glyph": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "term_glyph",
|
||||
"sha256": "a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.2.1"
|
||||
},
|
||||
"test_api": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "test_api",
|
||||
"sha256": "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.7.2"
|
||||
},
|
||||
"timezone": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "timezone",
|
||||
"sha256": "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.9.2"
|
||||
},
|
||||
"typed_data": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "typed_data",
|
||||
"sha256": "facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.3.2"
|
||||
},
|
||||
"url_launcher": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "url_launcher",
|
||||
"sha256": "47e208a6711459d813ba18af120d9663c20bdf6985d6ad39fe165d2538378d27",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "6.1.14"
|
||||
},
|
||||
"url_launcher_android": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_android",
|
||||
"sha256": "31222ffb0063171b526d3e569079cf1f8b294075ba323443fdc690842bfd4def",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "6.2.0"
|
||||
},
|
||||
"url_launcher_ios": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_ios",
|
||||
"sha256": "bba3373219b7abb6b5e0d071b0fe66dfbe005d07517a68e38d4fc3638f35c6d3",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "6.2.1"
|
||||
},
|
||||
"url_launcher_linux": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_linux",
|
||||
"sha256": "9f2d390e096fdbe1e6e6256f97851e51afc2d9c423d3432f1d6a02a8a9a8b9fd",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.0"
|
||||
},
|
||||
"url_launcher_macos": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_macos",
|
||||
"sha256": "b7244901ea3cf489c5335bdacda07264a6e960b1c1b1a9f91e4bc371d9e68234",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.0"
|
||||
},
|
||||
"url_launcher_platform_interface": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_platform_interface",
|
||||
"sha256": "980e8d9af422f477be6948bdfb68df8433be71f5743a188968b0c1b887807e50",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.2.0"
|
||||
},
|
||||
"url_launcher_web": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_web",
|
||||
"sha256": "ba140138558fcc3eead51a1c42e92a9fb074a1b1149ed3c73e66035b2ccd94f2",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.0.19"
|
||||
},
|
||||
"url_launcher_windows": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "url_launcher_windows",
|
||||
"sha256": "7754a1ad30ee896b265f8d14078b0513a4dba28d358eabb9d5f339886f4a1adc",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "3.1.0"
|
||||
},
|
||||
"uuid": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "uuid",
|
||||
"sha256": "df5a4d8f22ee4ccd77f8839ac7cb274ebc11ef9adcce8b92be14b797fe889921",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "4.2.1"
|
||||
},
|
||||
"vector_math": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "vector_math",
|
||||
"sha256": "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "2.1.4"
|
||||
},
|
||||
"visibility_detector": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "visibility_detector",
|
||||
"sha256": "dd5cc11e13494f432d15939c3aa8ae76844c42b723398643ce9addb88a5ed420",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.4.0+2"
|
||||
},
|
||||
"vm_service": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "vm_service",
|
||||
"sha256": "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "14.2.5"
|
||||
},
|
||||
"web": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "web",
|
||||
"sha256": "cd3543bd5798f6ad290ea73d210f423502e71900302dde696f8bff84bf89a1cb",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.1.0"
|
||||
},
|
||||
"win32": {
|
||||
"dependency": "direct overridden",
|
||||
"description": {
|
||||
"name": "win32",
|
||||
"sha256": "68d1e89a91ed61ad9c370f9f8b6effed9ae5e0ede22a270bdfa6daf79fc2290a",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "5.5.4"
|
||||
},
|
||||
"xdg_desktop_portal": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "xdg_desktop_portal",
|
||||
"sha256": "8a630ea1ebb7d1a9733d0cf6d159839f427d10322776de0c93e7951f62975c8d",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "0.1.12"
|
||||
},
|
||||
"xdg_directories": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "xdg_directories",
|
||||
"sha256": "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.0.3"
|
||||
},
|
||||
"xml": {
|
||||
"dependency": "transitive",
|
||||
"description": {
|
||||
"name": "xml",
|
||||
"sha256": "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "6.3.0"
|
||||
},
|
||||
"yaru": {
|
||||
"dependency": "direct main",
|
||||
"description": {
|
||||
"name": "yaru",
|
||||
"sha256": "037219db9ffe757eae0d929cb9dc1a8b27af9850dc6c0d89ecf597dc4f78a5b6",
|
||||
"url": "https://pub.dev"
|
||||
},
|
||||
"source": "hosted",
|
||||
"version": "1.2.0"
|
||||
}
|
||||
},
|
||||
"sdks": {
|
||||
"dart": ">=3.5.0 <4.0.0",
|
||||
"flutter": ">=3.24.0"
|
||||
}
|
||||
}
|
||||
@@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version-regex"
|
||||
"v(\d\.\d)"
|
||||
"v(\\d\\.\\d)"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
|
||||
makeWrapper,
|
||||
perl,
|
||||
strace,
|
||||
|
||||
testers,
|
||||
pvs-studio,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pvs-studio";
|
||||
version = "7.33.85330.89";
|
||||
|
||||
src =
|
||||
let
|
||||
system = stdenv.hostPlatform.system;
|
||||
selectSystem = attrs: attrs.${system} or (throw "Unsupported system: ${system}");
|
||||
in
|
||||
fetchzip {
|
||||
url = selectSystem {
|
||||
x86_64-darwin = "https://web.archive.org/web/20241115155106/https://cdn.pvs-studio.com/pvs-studio-7.33.85330.89-macos.tgz";
|
||||
x86_64-linux = "https://web.archive.org/web/20241115155538/https://cdn.pvs-studio.com/pvs-studio-7.33.85330.89-x86_64.tgz";
|
||||
};
|
||||
hash = selectSystem {
|
||||
x86_64-darwin = "sha256-jhfW+uBexzYzzf3JVqRYqtDjE5+OoT3RcuRPJEOEs18=";
|
||||
x86_64-linux = "sha256-rJQc8B2B7J0bcEI00auwIO/4PH2YMkuzSK/OyAnhdBA=";
|
||||
};
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
nativeRuntimeInputs = lib.makeBinPath [
|
||||
perl
|
||||
strace
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -D -m 0755 bin/* -t $out/bin
|
||||
install -D -m 0644 etc/bash_completion.d/* -t $out/etc/bash_completion.d
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
postFixup = ''
|
||||
wrapProgram "$out/bin/pvs-studio-analyzer" \
|
||||
--prefix PATH ":" ${nativeRuntimeInputs}
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
tests.version = testers.testVersion { package = pvs-studio; };
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Static analyzer for C and C++";
|
||||
homepage = "https://pvs-studio.com/en/pvs-studio";
|
||||
license = lib.licenses.unfreeRedistributable;
|
||||
platforms = [
|
||||
"x86_64-darwin"
|
||||
"x86_64-linux"
|
||||
];
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
maintainers = with lib.maintainers; [ paveloom ];
|
||||
};
|
||||
}
|
||||
@@ -8,11 +8,11 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "quisk";
|
||||
version = "4.2.39";
|
||||
version = "4.2.40";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-LE7VPKzpDycUNHpdmO43GqlHnF/gwr6H7LWq8DpcXdk=";
|
||||
hash = "sha256-0m6KtwXOH9ym9ZLhbHKmJvusy1GbTDN21DHykmOvG44=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
fetchFromGitea,
|
||||
gitUpdater,
|
||||
tk,
|
||||
tclPackages,
|
||||
tcl,
|
||||
@@ -17,9 +18,12 @@ tcl.mkTclDerivation rec {
|
||||
pname = "remind";
|
||||
version = "05.01.01";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dianne.skoll.ca/projects/remind/download/remind-${version}.tar.gz";
|
||||
hash = "sha256-906V9QdFHKJ1+uXv9zrFz9swfeVr/kxgkgKkGsscUY0=";
|
||||
src = fetchFromGitea {
|
||||
domain = "git.skoll.ca";
|
||||
owner = "Skollsoft-Public";
|
||||
repo = "Remind";
|
||||
rev = version;
|
||||
hash = "sha256-2qsJIdBsIttgofjB9Zd566I95mxkO7BTwUNPe50+bEY=";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = lib.optionals withGui [
|
||||
@@ -44,11 +48,14 @@ tcl.mkTclDerivation rec {
|
||||
"-DHAVE_UNSETENV"
|
||||
]);
|
||||
|
||||
passthru.updateScript = gitUpdater { };
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://dianne.skoll.ca/projects/remind/";
|
||||
description = "Sophisticated calendar and alarm program for the console";
|
||||
license = licenses.gpl2Only;
|
||||
maintainers = with maintainers; [
|
||||
afh
|
||||
raskin
|
||||
kovirobi
|
||||
];
|
||||
|
||||
@@ -16,7 +16,7 @@ renode.overrideAttrs (
|
||||
|
||||
passthru.updateScript =
|
||||
let
|
||||
versionRegex = "[0-9\.\+]+[^\+]*.";
|
||||
versionRegex = "[0-9\\.\\+]+[^\\+]*.";
|
||||
in
|
||||
writeScript "${finalAttrs.pname}-updater" ''
|
||||
#!/usr/bin/env nix-shell
|
||||
|
||||
@@ -1,32 +1,37 @@
|
||||
{ lib, stdenv, fetchurl, gmp4, ncurses, zlib, clang }:
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
autoPatchelfHook,
|
||||
makeWrapper,
|
||||
gmp,
|
||||
ncurses,
|
||||
zlib,
|
||||
readline,
|
||||
testers,
|
||||
}:
|
||||
|
||||
let
|
||||
libPath = lib.makeLibraryPath
|
||||
[ stdenv.cc.libc
|
||||
stdenv.cc.cc
|
||||
gmp4
|
||||
ncurses
|
||||
zlib
|
||||
] + ":${lib.getLib stdenv.cc.cc}/lib64";
|
||||
|
||||
url = "https://github.com/GaloisInc/saw-script/releases/download";
|
||||
|
||||
saw-bin =
|
||||
if stdenv.hostPlatform.system == "i686-linux"
|
||||
then fetchurl {
|
||||
url = url + "/v0.1.1-dev/saw-0.1.1-dev-2015-07-31-CentOS6-32.tar.gz";
|
||||
sha256 = "126iag5nnvndi78c921z7vjrjfwcspn1hlxwwhzmqm4rvbhhr9v9";
|
||||
}
|
||||
else fetchurl {
|
||||
url = url + "/v0.1.1-dev/saw-0.1.1-dev-2015-07-31-CentOS6-64.tar.gz";
|
||||
sha256 = "07gyf319v6ama6n1aj96403as04bixi8mbisfy7f7va689zklflr";
|
||||
};
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "saw-tools";
|
||||
version = "0.1.1-20150731";
|
||||
version = "1.2";
|
||||
|
||||
src = saw-bin;
|
||||
src = fetchurl {
|
||||
url = "https://github.com/GaloisInc/saw-script/releases/download/v${finalAttrs.version}/saw-${finalAttrs.version}-ubuntu-22.04-X64-with-solvers.tar.gz";
|
||||
hash = "sha256-A99BCiVV5Ep/PL7VSDNYcvr177Q+FKdDrxhFJLW/iU4=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
gmp
|
||||
ncurses
|
||||
readline
|
||||
stdenv.cc.libc
|
||||
zlib
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/lib $out/share
|
||||
@@ -34,26 +39,20 @@ stdenv.mkDerivation {
|
||||
mv bin $out/bin
|
||||
mv doc $out/share
|
||||
|
||||
ln -s ${ncurses.out}/lib/libtinfo.so.5 $out/lib/libtinfo.so.5
|
||||
ln -s ${stdenv.cc.libc}/lib/libpthread.so.0 $out/lib/libpthread.so.0
|
||||
|
||||
# Add a clang symlink for easy building with a suitable compiler.
|
||||
ln -s ${clang}/bin/clang $out/bin/saw-clang
|
||||
wrapProgram "$out/bin/saw" --prefix PATH : "$out/bin/"
|
||||
'';
|
||||
|
||||
fixupPhase = ''
|
||||
for x in bin/bcdump bin/extcore-info bin/jss bin/llvm-disasm bin/lss bin/saw; do
|
||||
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||
--set-rpath "$out/lib:${libPath}" $out/$x;
|
||||
done
|
||||
'';
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
command = "saw --version";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Tools for software verification and analysis";
|
||||
homepage = "https://saw.galois.com";
|
||||
homepage = "https://saw.galois.com";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = lib.licenses.bsd3;
|
||||
platforms = lib.platforms.linux;
|
||||
license = lib.licenses.bsd3;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
maintainers = [ lib.maintainers.thoughtpolice ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
pkg-config,
|
||||
imagemagick,
|
||||
fetchFromGitHub,
|
||||
SDL2,
|
||||
numactl,
|
||||
libvncserver,
|
||||
freetype,
|
||||
unstableGitUpdater,
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "shoreline";
|
||||
version = "0-unstable-2021-08-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TobleMiner";
|
||||
repo = "shoreline";
|
||||
rev = "05a2bbfb4559090727c51673e1fb47d20eac5672";
|
||||
hash = "sha256-fWzk1gM8vmqkM9hwl6Jnut2AAMQQ91hAYu41xgoI1Jk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
numactl
|
||||
libvncserver
|
||||
freetype
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install -m755 -D shoreline $out/bin/shoreline
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { hardcodeZeroVersion = true; };
|
||||
|
||||
meta = {
|
||||
description = "Very fast (200+ Gbit/s) pixelflut server written in C with full IPv6 support";
|
||||
homepage = "https://github.com/TobleMiner/shoreline";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ zebreus ];
|
||||
platforms = lib.platforms.linux;
|
||||
mainProgram = "shoreline";
|
||||
};
|
||||
}
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "siege";
|
||||
version = "4.1.6";
|
||||
version = "4.1.7";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.joedog.org/siege/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-MJ1Ym/yBm28V0uXoWRs8DG9pNiT1Bg7qwGek2ad1fek=";
|
||||
hash = "sha256-7BQM7dFZl5OD1g2+h6AVHCwSraeHkQlaj6hK5jW5MCY=";
|
||||
};
|
||||
|
||||
NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isLinux [
|
||||
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
undmg,
|
||||
appimageTools,
|
||||
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
pname = "sleek-todo";
|
||||
version = "2.0.14";
|
||||
|
||||
src =
|
||||
fetchurl
|
||||
{
|
||||
x86_64-darwin = {
|
||||
url = "https://github.com/ransome1/sleek/releases/download/v${version}/sleek-2.0.14-mac-x64.dmg";
|
||||
hash = "sha256-f5mMSRa+gAoakOy9TSZeALqCylGLd0nUJIh8o+LWAro=";
|
||||
};
|
||||
x86_64-linux = {
|
||||
url = "https://github.com/ransome1/sleek/releases/download/v${version}/sleek-2.0.14.AppImage";
|
||||
hash = "sha256-d2fLsCI7peuNBtjgHs1qumgPAF9eJeBYiIIffoSv9Jk=";
|
||||
};
|
||||
}
|
||||
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
|
||||
meta = {
|
||||
description = "Todo manager based on todo.txt syntax";
|
||||
homepage = "https://github.com/ransome1/sleek";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ ByteSudoer ];
|
||||
mainProgram = "sleek-todo";
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"x86_64-darwin"
|
||||
];
|
||||
};
|
||||
appimageContents = appimageTools.extract { inherit pname version src; };
|
||||
in
|
||||
if stdenv.hostPlatform.isDarwin then
|
||||
stdenv.mkDerivation {
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
src
|
||||
meta
|
||||
;
|
||||
|
||||
sourceRoot = ".";
|
||||
nativeBuildInputs = [ undmg ];
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
mkdir -p $out/Applications
|
||||
cp -r *.app $out/Applications/
|
||||
runHook postInstall
|
||||
'';
|
||||
}
|
||||
else
|
||||
appimageTools.wrapType2 {
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
src
|
||||
meta
|
||||
;
|
||||
|
||||
extraInstallCommands = ''
|
||||
mkdir -p $out/share/{applications,sleek}
|
||||
cp -a ${appimageContents}/{locales,resources} $out/share/sleek
|
||||
cp -a ${appimageContents}/usr/share/icons $out/share
|
||||
install -Dm 444 ${appimageContents}/sleek.desktop $out/share/applications
|
||||
substituteInPlace $out/share/applications/sleek.desktop \
|
||||
--replace-warn 'Exec=AppRun' 'Exec=${pname}'
|
||||
'';
|
||||
|
||||
}
|
||||
@@ -14,9 +14,9 @@
|
||||
}:
|
||||
stdenv.mkDerivation (self: {
|
||||
pname = "srm-cuarzo";
|
||||
version = "0.8.0-1";
|
||||
version = "0.10.0-1";
|
||||
rev = "v${self.version}";
|
||||
hash = "sha256-QQYn7TR2+6nZHOohjqEg6uMt4OBvfYD4+bFiDIaC7SU=";
|
||||
hash = "sha256-qkJVVoGU07wwcPsrIJi1gkl0uJaZM42kAX8PFQ68HDM=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
inherit (self) rev hash;
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
{
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
bash,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "steam-devices-udev-rules";
|
||||
version = "1.0.0.61-unstable-2024-05-22";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ValveSoftware";
|
||||
repo = "steam-devices";
|
||||
rev = "e2971e45063f6b327ccedbf18e168bda6749155c";
|
||||
hash = "sha256-kBqWw3TlCSWS7gJXgza2ghemypQ0AEg7NhWqAFnal04=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/lib/udev/rules.d/
|
||||
cp *.rules $out/lib/udev/rules.d/
|
||||
substituteInPlace $out/lib/udev/rules.d/*.rules --replace-warn "/bin/sh" "${bash}/bin/sh"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
|
||||
|
||||
meta = with lib; {
|
||||
description = "Udev rules list for gaming devices";
|
||||
homepage = "https://github.com/ValveSoftware/steam-devices";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ azuwis ];
|
||||
};
|
||||
}
|
||||
@@ -40,11 +40,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "suricata";
|
||||
version = "7.0.7";
|
||||
version = "7.0.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.openinfosecfoundation.org/download/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-JtCjYZTVMID8iwm5mbK1qDxASfQK0H72rmnHIlpyi4Y=";
|
||||
hash = "sha256-SSkoxiLhcL2cRdNTC8KxAzxVgtwYCFxDb86vtigp084=";
|
||||
};
|
||||
|
||||
nativeBuildInputs =
|
||||
|
||||
@@ -5,16 +5,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "swaysome";
|
||||
version = "2.1.1";
|
||||
version = "2.1.2";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "hyask";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
hash = "sha256-HRLMfpnqjDgkOIaH/7DxeYzoZn/0c0KUAmir8XIwesg=";
|
||||
hash = "sha256-2Q88/XgPN+byEo3e1yvwcwSQxPgPTtgy/rNc/Yduo3U=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-e5B90tIiXxuaRseok69EN4xuoRlCyiTVgEcAqvVg/dM=";
|
||||
cargoHash = "sha256-rGmQihmVGKOXgX2oEQiIagdyUwzOteJfh5jxfoeD5bs=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Helper to make sway behave more like awesomewm";
|
||||
|
||||
@@ -51,7 +51,7 @@ stdenv.mkDerivation {
|
||||
zcat < Teams_osx_app.pkg/Payload | cpio -i
|
||||
'';
|
||||
|
||||
sourceRoot = "Microsoft\ Teams.app";
|
||||
sourceRoot = "Microsoft\\ Teams.app";
|
||||
dontPatch = true;
|
||||
dontConfigure = true;
|
||||
dontBuild = true;
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "termius";
|
||||
version = "9.8.5";
|
||||
revision = "208";
|
||||
version = "9.9.0";
|
||||
revision = "211";
|
||||
|
||||
src = fetchurl {
|
||||
# find the latest version with
|
||||
@@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
|
||||
# and the sha512 with
|
||||
# curl -H 'X-Ubuntu-Series: 16' https://api.snapcraft.io/api/v1/snaps/details/termius-app | jq '.download_sha512' -r
|
||||
url = "https://api.snapcraft.io/api/v1/snaps/download/WkTBXwoX81rBe3s3OTt3EiiLKBx2QhuS_${revision}.snap";
|
||||
hash = "sha512-Kdw3TiVDX3vXxlNxBT2Lhg0QMjO712XVFF7RqaYVZ//iirk+DLGgkefMJC5sN/Y0Fc1Vciw0AazpXxbtkL8n2Q==";
|
||||
hash = "sha512-7oaVWe0H4y3tiSD8Cgj14fEaJQj3ekoczJjv5JvrU5I9ylRoe8XHNqD0MwOYFIpICyyKfoj0UonyVgggGLUq5A==";
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "throttled";
|
||||
version = "0.10.0";
|
||||
version = "0.11";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "erpalma";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-0MsPp6y4r/uZB2SplKV+SAiJoxIs2jgOQmQoQQ2ZKwI=";
|
||||
sha256 = "sha256-+3ktDkr5hvOfHcch4+mjgJqcuw24UgWTkJqTyDQumyk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user