Merge master into staging-next

This commit is contained in:
github-actions[bot]
2024-12-15 22:47:48 +00:00
committed by GitHub
151 changed files with 5059 additions and 953 deletions
+19
View File
@@ -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}
+1 -1
View File
@@ -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
+2
View File
@@ -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
+1
View File
@@ -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
+5 -1
View File
@@ -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
'';
};
};
+73
View File
@@ -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; };
};
}
+1
View File
@@ -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 {};
+19
View File
@@ -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/")
'';
}
)
+6 -4
View File
@@ -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 ];
+2 -2
View File
@@ -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 {
+2 -2
View File
@@ -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`
+2 -2
View File
@@ -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 = [
+99 -142
View File
@@ -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"
+3 -3
View File
@@ -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=";
};
};
+2 -2
View File
@@ -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" ];
+1 -1
View File
@@ -44,7 +44,7 @@ rustPlatform.buildRustPackage rec {
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"'^(\d*\.\d*\.\d*)$'"
"'^(\\d*\\.\\d*\\.\\d*)$'"
];
};
};
+1 -1
View File
@@ -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 {
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
View File
@@ -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
+3 -3
View File
@@ -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 = ''
+3 -3
View File
@@ -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"
+2 -2
View File
@@ -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 = [
+7 -7
View File
@@ -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;
};
}
+2 -2
View File
@@ -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 ];
+112
View File
@@ -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>
+81
View File
@@ -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";
};
}
+2 -2
View File
@@ -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 = [
+2 -2
View File
@@ -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 ];
+1 -1
View File
@@ -156,7 +156,7 @@ let
updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"rel\.(.*)"
"rel\\.(.*)"
];
};
+32 -32
View File
@@ -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"
}
}
}
+4 -4
View File
@@ -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
+54
View File
@@ -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" ];
};
}
+5 -3
View File
@@ -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 = [
+30
View File
@@ -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;
};
}
+10 -4
View File
@@ -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";
};
})
+3 -3
View File
@@ -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 ];
};
}
+35
View File
@@ -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";
};
}
+10 -3
View File
@@ -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 -2
View File
@@ -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
+2 -2
View File
@@ -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 ];
+1 -1
View File
@@ -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;
};
+2 -2
View File
@@ -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 =
+2 -2
View File
@@ -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 = [
+60
View File
@@ -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
+7 -8
View File
@@ -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""")
+2 -2
View File
@@ -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;
+4 -11
View File
@@ -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/";
+2 -2
View File
@@ -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 = [
+2 -2
View File
@@ -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 = ''
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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)
+5 -19
View File
@@ -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;
+47
View File
@@ -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",
+922
View File
@@ -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"
}
}
+1 -1
View File
@@ -80,7 +80,7 @@ stdenv.mkDerivation rec {
passthru.updateScript = nix-update-script {
extraArgs = [
"--version-regex"
"v(\d\.\d)"
"v(\\d\\.\\d)"
];
};
+70
View File
@@ -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 ];
};
}
+2 -2
View File
@@ -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 = [
+11 -4
View File
@@ -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
];
+1 -1
View File
@@ -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
+40 -41
View File
@@ -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 ];
};
}
})
+49
View File
@@ -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";
};
}
+2 -2
View File
@@ -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 [
+79
View File
@@ -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}'
'';
}
+2 -2
View File
@@ -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 ];
};
}
+2 -2
View File
@@ -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 =
+3 -3
View File
@@ -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";
+1 -1
View File
@@ -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;
+3 -3
View File
@@ -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 -2
View File
@@ -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