mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-07-21 16:11:22 +00:00
Merge master into staging-next
This commit is contained in:
@@ -27106,6 +27106,12 @@
|
||||
githubId = 99486674;
|
||||
name = "山下";
|
||||
};
|
||||
yanek = {
|
||||
name = "Noé Ksiazek";
|
||||
email = "noe.ksiazek@pm.me";
|
||||
github = "yanek";
|
||||
githubId = 5952366;
|
||||
};
|
||||
yanganto = {
|
||||
name = "Antonio Yang";
|
||||
email = "yanganto@gmail.com";
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- [gtklock](https://github.com/jovanlanik/gtklock), a GTK-based lockscreen for Wayland. Available as [programs.gtklock](#opt-programs.gtklock.enable).
|
||||
- [Chrysalis](https://github.com/keyboardio/Chrysalis), a graphical configurator for Kaleidoscope-powered keyboards. Available as [programs.chrysalis](#opt-programs.chrysalis.enable).
|
||||
|
||||
- [FileBrowser](https://filebrowser.org/), a web application for managing and sharing files. Available as [services.filebrowser](#opt-services.filebrowser.enable).
|
||||
|
||||
|
||||
@@ -180,6 +180,7 @@
|
||||
./programs/cdemu.nix
|
||||
./programs/cfs-zen-tweaks.nix
|
||||
./programs/chromium.nix
|
||||
./programs/chrysalis.nix
|
||||
./programs/clash-verge.nix
|
||||
./programs/cnping.nix
|
||||
./programs/command-not-found/command-not-found.nix
|
||||
@@ -261,6 +262,7 @@
|
||||
./programs/nano.nix
|
||||
./programs/nautilus-open-any-terminal.nix
|
||||
./programs/nbd.nix
|
||||
./programs/nekoray.nix
|
||||
./programs/neovim.nix
|
||||
./programs/nethoscope.nix
|
||||
./programs/nexttrace.nix
|
||||
|
||||
25
nixos/modules/programs/chrysalis.nix
Normal file
25
nixos/modules/programs/chrysalis.nix
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.programs.chrysalis;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
programs.chrysalis = {
|
||||
enable = lib.mkEnableOption "Chrysalis";
|
||||
package = lib.mkPackageOption pkgs "Chrysalis" { default = "chrysalis"; };
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
services.udev.packages = [ cfg.package ];
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ atalii ];
|
||||
}
|
||||
90
nixos/modules/programs/nekoray.nix
Normal file
90
nixos/modules/programs/nekoray.nix
Normal file
@@ -0,0 +1,90 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.programs.nekoray;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
programs.nekoray = {
|
||||
enable = lib.mkEnableOption "nekoray, a GUI proxy configuration manager";
|
||||
|
||||
package = lib.mkPackageOption pkgs "nekoray" { };
|
||||
|
||||
tunMode = {
|
||||
enable = lib.mkEnableOption "TUN mode of nekoray";
|
||||
|
||||
setuid = lib.mkEnableOption ''
|
||||
setting suid bit for nekobox_core to run as root, which is less
|
||||
secure than default setcap method but closer to upstream assumptions.
|
||||
Enable this if you find the default setcap method configured in
|
||||
this module doesn't work for you
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
security.wrappers.nekobox_core = lib.mkIf cfg.tunMode.enable {
|
||||
source = "${cfg.package}/share/nekoray/nekobox_core";
|
||||
owner = "root";
|
||||
group = "root";
|
||||
setuid = lib.mkIf cfg.tunMode.setuid true;
|
||||
# Taken from https://github.com/SagerNet/sing-box/blob/dev-next/release/config/sing-box.service
|
||||
capabilities = lib.mkIf (
|
||||
!cfg.tunMode.setuid
|
||||
) "cap_net_admin,cap_net_raw,cap_net_bind_service,cap_sys_ptrace,cap_dac_read_search+ep";
|
||||
};
|
||||
|
||||
# avoid resolvectl password prompt popping up three times
|
||||
# https://github.com/SagerNet/sing-tun/blob/0686f8c4f210f4e7039c352d42d762252f9d9cf5/tun_linux.go#L1062
|
||||
# We use a hack here to determine whether the requested process is nekobox_core
|
||||
# Detect whether its capabilities contain at least `net_admin` and `net_raw`.
|
||||
# This does not reduce security, as we can already bypass `resolved` with them.
|
||||
# Alternatives to consider:
|
||||
# 1. Use suid to execute as a specific user, and check username with polkit.
|
||||
# However, NixOS module doesn't let us to set setuid and capabilities at the
|
||||
# same time, and it's tricky to make both work together because of some security
|
||||
# considerations in the kernel.
|
||||
# 2. Check cmdline to get executable path. This is insecure because the process can
|
||||
# change its own cmdline. `/proc/<pid>/exe` is reliable but kernel forbids
|
||||
# checking that entry of process from different users, and polkit runs `spawn`
|
||||
# as an unprivileged user.
|
||||
# 3. Put nekobox_core into a systemd service, and let polkit check service name.
|
||||
# This is the most secure and convenient way but requires heavy modification
|
||||
# to nekoray source code. Would be good to let upstream support that eventually.
|
||||
security.polkit.extraConfig =
|
||||
lib.mkIf (cfg.tunMode.enable && (!cfg.tunMode.setuid) && config.services.resolved.enable)
|
||||
''
|
||||
polkit.addRule(function(action, subject) {
|
||||
const allowedActionIds = [
|
||||
"org.freedesktop.resolve1.set-domains",
|
||||
"org.freedesktop.resolve1.set-default-route",
|
||||
"org.freedesktop.resolve1.set-dns-servers"
|
||||
];
|
||||
|
||||
if (allowedActionIds.indexOf(action.id) !== -1) {
|
||||
try {
|
||||
var parentPid = polkit.spawn(["${lib.getExe' pkgs.procps "ps"}", "-o", "ppid=", subject.pid]).trim();
|
||||
var parentCap = polkit.spawn(["${lib.getExe' pkgs.libcap "getpcaps"}", parentPid]).trim();
|
||||
if (parentCap.includes("cap_net_admin") && parentCap.includes("cap_net_raw")) {
|
||||
return polkit.Result.YES;
|
||||
} else {
|
||||
return polkit.Result.NOT_HANDLED;
|
||||
}
|
||||
} catch (e) {
|
||||
return polkit.Result.NOT_HANDLED;
|
||||
}
|
||||
}
|
||||
})
|
||||
'';
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ aleksana ];
|
||||
}
|
||||
@@ -167,7 +167,7 @@ let
|
||||
presets.recentlyAddedImages
|
||||
]
|
||||
'';
|
||||
apply = type: if builtins.isFunction type then (type uiPresets) else type;
|
||||
apply = type: if lib.isFunction type then (type uiPresets) else type;
|
||||
};
|
||||
blobs_path = mkOption {
|
||||
type = types.path;
|
||||
@@ -324,47 +324,47 @@ let
|
||||
'';
|
||||
apply =
|
||||
srcs:
|
||||
optionalString (srcs != [ ]) (
|
||||
pkgs.runCommand "stash-${kind}"
|
||||
{
|
||||
inherit srcs;
|
||||
nativeBuildInputs = [ pkgs.yq-go ];
|
||||
preferLocalBuild = true;
|
||||
}
|
||||
''
|
||||
find $srcs -mindepth 1 -name '*.yml' | while read plugin_file; do
|
||||
grep -q "^#pkgignore" "$plugin_file" && continue
|
||||
pkgs.runCommand "stash-${kind}"
|
||||
{
|
||||
inherit srcs;
|
||||
nativeBuildInputs = [ pkgs.yq-go ];
|
||||
preferLocalBuild = true;
|
||||
}
|
||||
''
|
||||
mkdir -p $out
|
||||
touch $out/.keep
|
||||
find $srcs -mindepth 1 -name '*.yml' | while read plugin_file; do
|
||||
grep -q "^#pkgignore" "$plugin_file" && continue
|
||||
|
||||
plugin_dir=$(dirname $plugin_file)
|
||||
out_path=$out/$(basename $plugin_dir)
|
||||
mkdir -p $out_path
|
||||
ls $plugin_dir | xargs -I{} ln -sf "$plugin_dir/{}" $out_path
|
||||
plugin_dir=$(dirname $plugin_file)
|
||||
out_path=$out/$(basename $plugin_dir)
|
||||
mkdir -p $out_path
|
||||
ls $plugin_dir | xargs -I{} ln -sf "$plugin_dir/{}" $out_path
|
||||
|
||||
env \
|
||||
plugin_id=$(basename $plugin_file .yml) \
|
||||
plugin_name="$(yq '.name' $plugin_file)" \
|
||||
plugin_description="$(yq '.description' $plugin_file)" \
|
||||
plugin_version="$(yq '.version' $plugin_file)" \
|
||||
plugin_files="$(find -L $out_path -mindepth 1 -type f -printf "%P\n")" \
|
||||
yq -n '
|
||||
.id = strenv(plugin_id) |
|
||||
.name = strenv(plugin_name) |
|
||||
(
|
||||
strenv(plugin_description) as $desc |
|
||||
with(select($desc == "null"); .metadata = {}) |
|
||||
with(select($desc != "null"); .metadata.description = $desc)
|
||||
) |
|
||||
(
|
||||
strenv(plugin_version) as $ver |
|
||||
with(select($ver == "null"); .version = "Unknown") |
|
||||
with(select($ver != "null"); .version = $ver)
|
||||
) |
|
||||
.date = (now | format_datetime("2006-01-02 15:04:05")) |
|
||||
.files = (strenv(plugin_files) | split("\n"))
|
||||
' > $out_path/manifest
|
||||
done
|
||||
''
|
||||
);
|
||||
env \
|
||||
plugin_id=$(basename $plugin_file .yml) \
|
||||
plugin_name="$(yq '.name' $plugin_file)" \
|
||||
plugin_description="$(yq '.description' $plugin_file)" \
|
||||
plugin_version="$(yq '.version' $plugin_file)" \
|
||||
plugin_files="$(find -L $out_path -mindepth 1 -type f -printf "%P\n")" \
|
||||
yq -n '
|
||||
.id = strenv(plugin_id) |
|
||||
.name = strenv(plugin_name) |
|
||||
(
|
||||
strenv(plugin_description) as $desc |
|
||||
with(select($desc == "null"); .metadata = {}) |
|
||||
with(select($desc != "null"); .metadata.description = $desc)
|
||||
) |
|
||||
(
|
||||
strenv(plugin_version) as $ver |
|
||||
with(select($ver == "null"); .version = "Unknown") |
|
||||
with(select($ver != "null"); .version = $ver)
|
||||
) |
|
||||
.date = (now | format_datetime("2006-01-02 15:04:05")) |
|
||||
.files = (strenv(plugin_files) | split("\n"))
|
||||
' > $out_path/manifest
|
||||
done
|
||||
'';
|
||||
};
|
||||
in
|
||||
{
|
||||
@@ -512,7 +512,7 @@ in
|
||||
ExecStartPre = pkgs.writers.writeBash "stash-setup.bash" (
|
||||
''
|
||||
install -d ${cfg.settings.generated}
|
||||
if [[ ! -z "${toString cfg.mutableSettings}" || ! -f ${cfg.dataDir}/config.yml ]]; then
|
||||
if [[ -z "${toString cfg.mutableSettings}" || ! -f ${cfg.dataDir}/config.yml ]]; then
|
||||
env \
|
||||
password=$(< ${cfg.passwordFile}) \
|
||||
jwtSecretKeyFile=$(< ${cfg.jwtSecretKeyFile}) \
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "fbneo";
|
||||
version = "0-unstable-2025-05-19";
|
||||
version = "0-unstable-2025-05-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "fbneo";
|
||||
rev = "d2cf158e9ba82fc7dfec592452e6113121665c19";
|
||||
hash = "sha256-dO1R0iIXEo2lrMSOJXlZBw2yXBfyB/1yFfRPYEEAojo=";
|
||||
rev = "60d812a5a25b7f6cc7df2842264b67847e51122b";
|
||||
hash = "sha256-4HJZXsgUp0do7T0bwPPuuyoN7XIII3DSzk6LsLqZQeQ=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "puae";
|
||||
version = "0-unstable-2025-05-14";
|
||||
version = "0-unstable-2025-05-24";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "libretro-uae";
|
||||
rev = "fad7beb42c90a1a04829d465bed951a69cd36f8b";
|
||||
hash = "sha256-pO45/IvgT2q5k0sBhSNZ6srJx4h2lYSjG/mKFJesGbc=";
|
||||
rev = "f1c248602abb58e7c570feec3f59f4677407b252";
|
||||
hash = "sha256-CmdMeAntu+uFp1HowBz3UgMiqFbRrNuMyevTlKxga/M=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -1,88 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
fetchurl,
|
||||
pkg-config,
|
||||
cmake,
|
||||
python3,
|
||||
mkDerivation,
|
||||
libX11,
|
||||
libXrandr,
|
||||
qtbase,
|
||||
qtwebchannel,
|
||||
qtwebengine,
|
||||
qtx11extras,
|
||||
libvdpau,
|
||||
SDL2,
|
||||
mpv,
|
||||
libGL,
|
||||
}:
|
||||
let
|
||||
# During compilation, a CMake bundle is downloaded from `artifacts.plex.tv`,
|
||||
# which then downloads a handful of web client-related files. To enable
|
||||
# sandboxed builds, we manually download them and save them so these files
|
||||
# are fetched ahead-of-time instead of during the CMake build. To update
|
||||
# plex-media-player use the update.sh script, so the versions and hashes
|
||||
# for these files are also updated!
|
||||
depSrcs = import ./deps.nix { inherit fetchurl; };
|
||||
in
|
||||
mkDerivation rec {
|
||||
pname = "plex-media-player";
|
||||
version = "2.58.1";
|
||||
vsnHash = "ae73e074";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "plexinc";
|
||||
repo = "plex-media-player";
|
||||
rev = "v${version}-${vsnHash}";
|
||||
sha256 = "1q20fdp5d0blb0q6p2357bwdc2g65cadkgdp4w533ij2nyaxydjd";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
cmake
|
||||
python3
|
||||
];
|
||||
buildInputs = [
|
||||
libX11
|
||||
libXrandr
|
||||
qtbase
|
||||
qtwebchannel
|
||||
qtwebengine
|
||||
qtx11extras
|
||||
libvdpau
|
||||
SDL2
|
||||
mpv
|
||||
libGL
|
||||
];
|
||||
|
||||
preConfigure = with depSrcs; ''
|
||||
mkdir -p build/dependencies
|
||||
ln -s ${webClient} build/dependencies/buildid-${webClientBuildId}.cmake
|
||||
ln -s ${webClientDesktopHash} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1
|
||||
ln -s ${webClientDesktop} build/dependencies/web-client-desktop-${webClientDesktopBuildId}.tar.xz
|
||||
ln -s ${webClientTvHash} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz.sha1
|
||||
ln -s ${webClientTv} build/dependencies/web-client-tv-${webClientTvBuildId}.tar.xz
|
||||
'';
|
||||
|
||||
cmakeBuildType = "RelWithDebInfo";
|
||||
|
||||
cmakeFlags = [ "-DQTROOT=${qtbase}" ];
|
||||
|
||||
# plexmediaplayer currently segfaults under wayland
|
||||
qtWrapperArgs = [
|
||||
"--set"
|
||||
"QT_QPA_PLATFORM"
|
||||
"xcb"
|
||||
];
|
||||
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Streaming media player for Plex";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ b4dm4n ];
|
||||
homepage = "https://plex.tv";
|
||||
mainProgram = "plexmediaplayer";
|
||||
};
|
||||
}
|
||||
28
pkgs/applications/video/plex-media-player/deps.nix
generated
28
pkgs/applications/video/plex-media-player/deps.nix
generated
@@ -1,28 +0,0 @@
|
||||
{ fetchurl }:
|
||||
|
||||
rec {
|
||||
webClientBuildId = "183-045db5be50e175";
|
||||
webClientDesktopBuildId = "4.29.2-e50e175";
|
||||
webClientTvBuildId = "4.29.6-045db5b";
|
||||
|
||||
webClient = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake";
|
||||
sha256 = "1xsacy1xb8a9rfdrd7lvx7n3hd0cf2c3mgmg9wl18jvwnqxyac83";
|
||||
};
|
||||
webClientDesktopHash = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1";
|
||||
sha256 = "07spxyhrg45ppa2zjn3ri4qvi6qimlmq6wmh492r3jkrwd71rxgf";
|
||||
};
|
||||
webClientDesktop = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz";
|
||||
sha256 = "1zll79hpgx8fghx228li9qairfd637yf8rhvjzdgpq4dvn21fv65";
|
||||
};
|
||||
webClientTvHash = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1";
|
||||
sha256 = "1zzfw2g76wqrxrx9kck5q79if78z91wn3awj703kz9sgxi4bkjsk";
|
||||
};
|
||||
webClientTv = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz";
|
||||
sha256 = "1f1zvrr3c0w37gvl78blg9rgxxi64nc4iv5vd87qbysfh1vpsjz0";
|
||||
};
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl common-updater-scripts nix-prefetch-scripts jq
|
||||
|
||||
set -xeuo pipefail
|
||||
|
||||
nixpkgs="$(git rev-parse --show-toplevel)"
|
||||
|
||||
oldVersion="$(nix-instantiate --eval -E "with import $nixpkgs {}; plex-media-player.version or (builtins.parseDrvName plex-media-player.name).version" | tr -d '"')"
|
||||
latestTag="$(curl -s https://api.github.com/repos/plexinc/plex-media-player/tags | jq -r '.[] | .name' | sort --version-sort | tail -1)"
|
||||
latestVersion="$(expr $latestTag : 'v\(.*\)-.*')"
|
||||
latestHash="$(expr $latestTag : 'v.*-\(.*\)')"
|
||||
|
||||
if [ ! "$oldVersion" = "$latestVersion" ]; then
|
||||
# update default.nix with the new version and hash
|
||||
expectedHash=$(nix-prefetch-git --url https://github.com/plexinc/plex-media-player.git --rev $latestTag --quiet | jq -r '.sha256')
|
||||
update-source-version plex-media-player --version-key=vsnHash "${latestHash}" 0000
|
||||
update-source-version plex-media-player "${latestVersion}" $expectedHash
|
||||
|
||||
# extract the webClientBuildId from the source folder
|
||||
src="$(nix-build --no-out-link $nixpkgs -A plex-media-player.src)"
|
||||
webClientBuildId="$(grep 'set(WEB_CLIENT_BUILD_ID' $src/CMakeModules/WebClient.cmake | cut -d' ' -f2 | tr -d ')')"
|
||||
|
||||
# retreive the included cmake file and hash
|
||||
{ read -r webClientBuildIdHash; read -r webClientBuildIdPath; } < \
|
||||
<(nix-prefetch-url --print-path "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/buildid.cmake")
|
||||
webClientDesktopBuildId="$(grep 'set(DESKTOP_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
|
||||
webClientTvBuildId="$(grep 'set(TV_VERSION' $webClientBuildIdPath | cut -d' ' -f2 | tr -d ')')"
|
||||
|
||||
# get the hashes for the other files
|
||||
webClientDesktopHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz.sha1")"
|
||||
webClientDesktop="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-desktop-${webClientDesktopBuildId}.tar.xz")"
|
||||
webClientTvHash="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz.sha1")"
|
||||
webClientTv="$(nix-prefetch-url "https://artifacts.plex.tv/web-client-pmp/${webClientBuildId}/web-client-tv-${webClientTvBuildId}.tar.xz")"
|
||||
|
||||
# update deps.nix
|
||||
cat > $nixpkgs/pkgs/applications/video/plex-media-player/deps.nix <<EOF
|
||||
{ fetchurl }:
|
||||
|
||||
rec {
|
||||
webClientBuildId = "${webClientBuildId}";
|
||||
webClientDesktopBuildId = "${webClientDesktopBuildId}";
|
||||
webClientTvBuildId = "${webClientTvBuildId}";
|
||||
|
||||
webClient = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/buildid.cmake";
|
||||
sha256 = "${webClientBuildIdHash}";
|
||||
};
|
||||
webClientDesktopHash = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz.sha1";
|
||||
sha256 = "${webClientDesktopHash}";
|
||||
};
|
||||
webClientDesktop = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-desktop-\${webClientDesktopBuildId}.tar.xz";
|
||||
sha256 = "${webClientDesktop}";
|
||||
};
|
||||
webClientTvHash = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz.sha1";
|
||||
sha256 = "${webClientTvHash}";
|
||||
};
|
||||
webClientTv = fetchurl {
|
||||
url = "https://artifacts.plex.tv/web-client-pmp/\${webClientBuildId}/web-client-tv-\${webClientTvBuildId}.tar.xz";
|
||||
sha256 = "${webClientTv}";
|
||||
};
|
||||
}
|
||||
EOF
|
||||
|
||||
git add "$nixpkgs"/pkgs/applications/video/plex-media-player/{default,deps}.nix
|
||||
git commit -m "plex-media-player: ${oldVersion} -> ${latestVersion}"
|
||||
else
|
||||
echo "plex-media-player is already up-to-date"
|
||||
fi
|
||||
@@ -18,14 +18,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "binary";
|
||||
version = "5.2";
|
||||
version = "5.3";
|
||||
pyproject = false;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fizzyizzy05";
|
||||
repo = "binary";
|
||||
tag = version;
|
||||
hash = "sha256-0pVQMPwy/XXJl2fHQ/gIi+e/cJY87CA9G+GPkdYFQBc=";
|
||||
hash = "sha256-kJLEDE/jHKc/VDGa0lcm4eM7nEMam0fbEW8YJVfc7OY=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
39
pkgs/by-name/cl/cloudprober/package.nix
Normal file
39
pkgs/by-name/cl/cloudprober/package.nix
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "cloudprober";
|
||||
version = "0.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloudprober";
|
||||
repo = "cloudprober";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-t32mALyxtapPSzf/pNG0MGS2jjq0Dwm31qQZAlZI5zE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-u/glcoLlNXDEWFblnuvRHK9mUNCXTsfcWR+FDsJeOOA=";
|
||||
|
||||
checkFlags =
|
||||
let
|
||||
# Skip tests that require network access
|
||||
skippedTests = [
|
||||
"TestSaveProbesConfig"
|
||||
"TestRunProbeRealICMP"
|
||||
"TestMultipleTargetsMultipleRequests"
|
||||
];
|
||||
in
|
||||
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
|
||||
|
||||
meta = {
|
||||
description = "Monitor availability and performance of various components of your system";
|
||||
homepage = "https://cloudprober.org/";
|
||||
changelog = "https://github.com/cloudprober/cloudprober/releases/tag/v${version}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ xgwq ];
|
||||
mainProgram = "cloudprober";
|
||||
};
|
||||
}
|
||||
@@ -72,7 +72,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
vulkan-tools
|
||||
];
|
||||
|
||||
qrWrapperArgs = [
|
||||
qtWrapperArgs = [
|
||||
"--prefix PATH : ${lib.makeBinPath finalAttrs.runtimeInputs}"
|
||||
];
|
||||
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "dae";
|
||||
version = "0.9.0";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "daeuniverse";
|
||||
repo = "dae";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-yW3GDflTd9I4RreWtLQE92aP7BnswJHx44jmTZ81kP8=";
|
||||
hash = "sha256-RpbWZEoGrCq3Py0hu6YDie6ErDTLS3oabqScPzhCtm0=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
vendorHash = "sha256-nThkNyH6TUcFej9IGJ/jME0dGK517d5vJueNU7x86o8=";
|
||||
vendorHash = "sha256-u2DCHmX7vRNWIQ2Ir3UrxPGduggEqoUr1rnkDfwsT0I=";
|
||||
|
||||
proxyVendor = true;
|
||||
|
||||
|
||||
52
pkgs/by-name/en/enroot/package.nix
Normal file
52
pkgs/by-name/en/enroot/package.nix
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
flock,
|
||||
gitUpdater,
|
||||
bashInteractive,
|
||||
lib,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "enroot";
|
||||
version = "3.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "NVIDIA";
|
||||
repo = "enroot";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Sw4kfsb0Gi21At2pU8lt5wIfCih7VZ7Zf9/62xBKKRU=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace-fail 'git submodule update' 'echo git submodule update'
|
||||
'';
|
||||
|
||||
makeTarget = "install";
|
||||
makeFlags = [
|
||||
"DESTDIR=${placeholder "out"}"
|
||||
"prefix=/"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
flock
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
bashInteractive
|
||||
];
|
||||
|
||||
passthru.updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
|
||||
meta = {
|
||||
description = "Simple yet powerful tool to turn traditional container/OS images into unprivileged sandboxes";
|
||||
license = lib.licenses.asl20;
|
||||
homepage = "https://github.com/NVIDIA/enroot";
|
||||
changelog = "https://github.com/NVIDIA/enroot/releases/tag/v${finalAttrs.version}";
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = [ lib.maintainers.lucasew ];
|
||||
mainProgram = "enroot";
|
||||
};
|
||||
})
|
||||
2566
pkgs/by-name/je/jellytui/Cargo.lock
generated
Normal file
2566
pkgs/by-name/je/jellytui/Cargo.lock
generated
Normal file
File diff suppressed because it is too large
Load Diff
51
pkgs/by-name/je/jellytui/package.nix
Normal file
51
pkgs/by-name/je/jellytui/package.nix
Normal file
@@ -0,0 +1,51 @@
|
||||
{
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
pkg-config,
|
||||
mpv,
|
||||
openssl,
|
||||
makeWrapper,
|
||||
}:
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "jellytui";
|
||||
version = "0.1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tyrantlink";
|
||||
repo = "jellytui";
|
||||
rev = "7b10490261672d750af2e3483b88f7daf017afb6";
|
||||
hash = "sha256-cMSZDSN2qnTeKL3ZcNVRtS45Xa1kEcps9WpWuWruX/0=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
makeWrapper
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
mpv
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
ln -s ${./Cargo.lock} Cargo.lock
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapProgram $out/bin/jellytui \
|
||||
--prefix PATH : ${lib.makeBinPath [ mpv ]}
|
||||
'';
|
||||
|
||||
meta = {
|
||||
description = "TUI client for Jellyfin, using mpv";
|
||||
homepage = "https://github.com/tyrantlink/jellytui";
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [ yanek ];
|
||||
mainProgram = "jellytui";
|
||||
};
|
||||
}
|
||||
@@ -8,7 +8,6 @@
|
||||
zstd,
|
||||
installShellFiles,
|
||||
versionCheckHook,
|
||||
testers,
|
||||
pie ? stdenv.hostPlatform.isDarwin,
|
||||
}:
|
||||
|
||||
@@ -38,14 +37,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
installManPage ncdu.1
|
||||
'';
|
||||
|
||||
nativeInstallCheckInputs = [
|
||||
versionCheckHook
|
||||
];
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "--version";
|
||||
doInstallCheck = true;
|
||||
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
};
|
||||
passthru.updateScript = ./update.sh;
|
||||
|
||||
meta = {
|
||||
homepage = "https://dev.yorhel.nl/ncdu";
|
||||
@@ -55,6 +51,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
maintainers = with lib.maintainers; [
|
||||
pSub
|
||||
rodrgz
|
||||
defelo
|
||||
];
|
||||
inherit (zig_0_14.meta) platforms;
|
||||
mainProgram = "ncdu";
|
||||
5
pkgs/by-name/nc/ncdu/update.sh
Executable file
5
pkgs/by-name/nc/ncdu/update.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p common-updater-scripts coreutils gnused nix-update
|
||||
|
||||
version=$(list-git-tags --url=https://g.blicky.net/ncdu.git | tail -1 | sed 's/^v//')
|
||||
nix-update --version="$version" ncdu
|
||||
43
pkgs/by-name/ne/nekoray/core-also-check-capabilities.patch
Normal file
43
pkgs/by-name/ne/nekoray/core-also-check-capabilities.patch
Normal file
@@ -0,0 +1,43 @@
|
||||
diff --git a/server.go b/server.go
|
||||
index c2a6be0..8aeca1c 100644
|
||||
--- a/server.go
|
||||
+++ b/server.go
|
||||
@@ -11,6 +11,7 @@ import (
|
||||
E "github.com/sagernet/sing/common/exceptions"
|
||||
"github.com/sagernet/sing/common/metadata"
|
||||
"github.com/sagernet/sing/service"
|
||||
+ "golang.org/x/sys/unix"
|
||||
"log"
|
||||
"nekobox_core/gen"
|
||||
"nekobox_core/internal/boxbox"
|
||||
@@ -359,13 +360,25 @@ func (s *server) CompileGeoSiteToSrs(ctx context.Context, in *gen.CompileGeoSite
|
||||
}
|
||||
|
||||
func (s *server) IsPrivileged(ctx context.Context, _ *gen.EmptyReq) (*gen.IsPrivilegedResponse, error) {
|
||||
- if runtime.GOOS == "windows" {
|
||||
- return &gen.IsPrivilegedResponse{
|
||||
- HasPrivilege: false,
|
||||
- }, nil
|
||||
+ ret := false
|
||||
+ if runtime.GOOS == "windows" || os.Geteuid() == 0 {
|
||||
+ ret = true
|
||||
+ } else if runtime.GOOS == "linux" {
|
||||
+ caps := unix.CapUserHeader{
|
||||
+ Version: unix.LINUX_CAPABILITY_VERSION_3,
|
||||
+ Pid: 0, // current
|
||||
+ }
|
||||
+ var data [2]unix.CapUserData
|
||||
+ err := unix.Capget(&caps, &data[0])
|
||||
+ if err != nil {
|
||||
+ ret = false
|
||||
+ } else {
|
||||
+ // CAP_NET_ADMIN = 12
|
||||
+ ret = (data[0].Effective & (1 << unix.CAP_NET_ADMIN)) != 0
|
||||
+ }
|
||||
}
|
||||
|
||||
- return &gen.IsPrivilegedResponse{HasPrivilege: os.Geteuid() == 0}, nil
|
||||
+ return &gen.IsPrivilegedResponse{HasPrivilege: ret}, nil
|
||||
}
|
||||
|
||||
func (s *server) SpeedTest(ctx context.Context, in *gen.SpeedTestRequest) (*gen.SpeedTestResponse, error) {
|
||||
47
pkgs/by-name/ne/nekoray/nixos-disable-setuid-request.patch
Normal file
47
pkgs/by-name/ne/nekoray/nixos-disable-setuid-request.patch
Normal file
@@ -0,0 +1,47 @@
|
||||
diff --git a/src/global/NekoGui.cpp b/src/global/NekoGui.cpp
|
||||
index 7943d7a..5bb20cc 100644
|
||||
--- a/src/global/NekoGui.cpp
|
||||
+++ b/src/global/NekoGui.cpp
|
||||
@@ -355,6 +355,12 @@ namespace NekoGui {
|
||||
// System Utils
|
||||
|
||||
QString FindNekoBoxCoreRealPath() {
|
||||
+ // find in PATH first
|
||||
+ QString path = QStandardPaths::findExecutable("nekobox_core");
|
||||
+ if (!path.isEmpty()) {
|
||||
+ return path;
|
||||
+ }
|
||||
+
|
||||
auto fn = QApplication::applicationDirPath() + "/nekobox_core";
|
||||
auto fi = QFileInfo(fn);
|
||||
if (fi.isSymLink()) return fi.symLinkTarget();
|
||||
diff --git a/src/ui/mainwindow.cpp b/src/ui/mainwindow.cpp
|
||||
index 9aa46b2..ba7137a 100644
|
||||
--- a/src/ui/mainwindow.cpp
|
||||
+++ b/src/ui/mainwindow.cpp
|
||||
@@ -125,8 +125,7 @@ MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWi
|
||||
NekoGui::dataStore->core_port = MkPort();
|
||||
if (NekoGui::dataStore->core_port <= 0) NekoGui::dataStore->core_port = 19810;
|
||||
|
||||
- auto core_path = QApplication::applicationDirPath() + "/";
|
||||
- core_path += "nekobox_core";
|
||||
+ auto core_path = NekoGui::FindNekoBoxCoreRealPath();
|
||||
|
||||
QStringList args;
|
||||
args.push_back("nekobox");
|
||||
@@ -844,6 +843,15 @@ bool MainWindow::get_elevated_permissions(int reason) {
|
||||
return true;
|
||||
}
|
||||
if (NekoGui::IsAdmin()) return true;
|
||||
+ QMessageBox::critical(
|
||||
+ GetMessageBoxParent(),
|
||||
+ tr("Unable to elevate privileges when installed with Nix"),
|
||||
+ tr("Due to the read-only property of Nix store, we cannot set suid for nekobox_core. If you are using NixOS, please set `programs.nekoray.tunMode.enable` option to elevate privileges."),
|
||||
+ QMessageBox::Ok
|
||||
+ );
|
||||
+ return false;
|
||||
+ // The following code isn't effective, preserve to avoid merge conflict
|
||||
+
|
||||
#ifdef Q_OS_LINUX
|
||||
if (!Linux_HavePkexec()) {
|
||||
MessageBoxWarning(software_name, "Please install \"pkexec\" first.");
|
||||
@@ -60,6 +60,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# we already package those two files in nixpkgs
|
||||
# we can't place file at that location using our builder so we must change the search directory to be relative to the built executable
|
||||
./search-for-geodata-in-install-location.patch
|
||||
|
||||
# disable suid request as it cannot be applied to nekobox_core in nix store
|
||||
# and prompt users to use NixOS module instead. And use nekobox_core from PATH
|
||||
# to make use of security wrappers
|
||||
./nixos-disable-setuid-request.patch
|
||||
];
|
||||
|
||||
installPhase = ''
|
||||
@@ -99,6 +104,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
inherit (finalAttrs) version src;
|
||||
sourceRoot = "${finalAttrs.src.name}/core/server";
|
||||
|
||||
patches = [
|
||||
# also check cap_net_admin so we don't have to set suid
|
||||
./core-also-check-capabilities.patch
|
||||
];
|
||||
|
||||
vendorHash = "sha256-hZiEIJ4/TcLUfT+pkqs6WfzjqppSTjKXEtQC+DS26Ug=";
|
||||
|
||||
# ldflags and tags are taken from script/build_go.sh
|
||||
@@ -127,7 +137,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
homepage = "https://github.com/Mahdi-zarei/nekoray";
|
||||
license = lib.licenses.gpl3Plus;
|
||||
mainProgram = "nekoray";
|
||||
maintainers = with lib.maintainers; [ tomasajt ];
|
||||
maintainers = with lib.maintainers; [
|
||||
tomasajt
|
||||
aleksana
|
||||
];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "opnborg";
|
||||
version = "0.1.68";
|
||||
version = "0.1.71";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "paepckehh";
|
||||
repo = "opnborg";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-fES3YlJu8Zy1CLNEkzWW0KAhy3dZj1JXAT8y9tRjyEA=";
|
||||
hash = "sha256-hLdPS9LkDdncUsuNY8Bnqxgf0V9unObP2cVHcElCp1Q=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-u1LZvLAKYd1TQlZkYxgztOm1g94N4orMe6Y1Ab1to5Y=";
|
||||
vendorHash = "sha256-U4arzJwQoHfdSAe2/giDJ1qDXQl8exSWGMHjwocQ4DE=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
From 31e8aae418a1af681e389f27d3ad57b5fd7e1ba8 Mon Sep 17 00:00:00 2001
|
||||
From: Marcin Serwin <marcin@serwin.dev>
|
||||
Date: Sun, 25 May 2025 01:16:37 +0200
|
||||
Subject: [PATCH] Emit correct pkg-config file if paths are absolute
|
||||
|
||||
CMAKE_INSTALL_INCLUDEDIR and CMAKE_INSTALL_LIBDIR may be defined to be
|
||||
absolute paths. In this situation they should not be appended to the
|
||||
prefix.
|
||||
|
||||
Signed-off-by: Marcin Serwin <marcin@serwin.dev>
|
||||
---
|
||||
CMakeLists.txt | 15 +++++++++++++--
|
||||
1 file changed, 13 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 2e84761..f2219e0 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -107,6 +107,17 @@ file(RELATIVE_PATH plutosvg_pc_prefix_relative
|
||||
set(plutosvg_pc_cflags "")
|
||||
set(plutosvg_pc_libs_private "")
|
||||
set(plutosvg_pc_requires "")
|
||||
+set(plutosvg_pc_requires "")
|
||||
+if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+ set(plutosvg_pc_includedir "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+else()
|
||||
+ set(plutosvg_pc_includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
+endif()
|
||||
+if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
|
||||
+ set(plutosvg_pc_libdir "${CMAKE_INSTALL_LIBDIR}")
|
||||
+else()
|
||||
+ set(plutosvg_pc_libdir "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
|
||||
+endif()
|
||||
|
||||
if(MATH_LIBRARY)
|
||||
string(APPEND plutosvg_pc_libs_private " -lm")
|
||||
@@ -123,8 +134,8 @@ endif()
|
||||
|
||||
string(CONFIGURE [[
|
||||
prefix=${pcfiledir}/@plutosvg_pc_prefix_relative@
|
||||
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
-libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+includedir=@plutosvg_pc_includedir@
|
||||
+libdir=@plutosvg_pc_libdir@
|
||||
|
||||
Name: PlutoSVG
|
||||
Description: Tiny SVG rendering library in C
|
||||
--
|
||||
2.49.0
|
||||
|
||||
56
pkgs/by-name/pl/plutosvg/package.nix
Normal file
56
pkgs/by-name/pl/plutosvg/package.nix
Normal file
@@ -0,0 +1,56 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
validatePkgConfig,
|
||||
testers,
|
||||
cmake,
|
||||
ninja,
|
||||
plutovg,
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "plutosvg";
|
||||
version = "0.0.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sammycage";
|
||||
repo = "plutosvg";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-4JLk4+O9Tf8CGxMP0aDN70ak/8teZH3GWBWlrIkPQm4=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
];
|
||||
|
||||
patches = [
|
||||
# https://github.com/sammycage/plutosvg/pull/29
|
||||
./0001-Emit-correct-pkg-config-file-if-paths-are-absolute.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
ninja
|
||||
validatePkgConfig
|
||||
];
|
||||
propagatedBuildInputs = [
|
||||
plutovg
|
||||
];
|
||||
|
||||
cmakeFlags = [ (lib.cmakeBool "BUILD_SHARED_LIBS" (!stdenv.hostPlatform.isStatic)) ];
|
||||
|
||||
passthru.tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/sammycage/plutosvg";
|
||||
changelog = "https://github.com/sammycage/plutosvg/releases/tag/${finalAttrs.src.tag}";
|
||||
description = "Tiny SVG rendering library in C";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ marcin-serwin ];
|
||||
pkgConfigModules = [ "plutosvg" ];
|
||||
};
|
||||
})
|
||||
@@ -13,13 +13,13 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "proksi";
|
||||
version = "0.5.3-unstable-2025-05-19";
|
||||
version = "0.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "luizfonseca";
|
||||
repo = "proksi";
|
||||
rev = "4e31e5223dd4a8e3b955fbfa6c895c94c834e5aa";
|
||||
hash = "sha256-7NeRU+VJf2HvT7PRmryhE8u56/PoKvKtGGuZTCujGNQ=";
|
||||
tag = "proksi-v${finalAttrs.version}";
|
||||
hash = "sha256-5IXtMtyKbx7re6CA61AnQ85k/SMdkjZo/ySnNoD2DDo=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
'';
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-jypYyXN9caTax+11shkJJfEEPtoq4RILWjffm/3ymzE=";
|
||||
cargoHash = "sha256-yjbtP+FlDaJXPhCu1UyaDolpzy+BUejU8nVVSVsKCzE=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
@@ -61,17 +61,8 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "--version";
|
||||
doInstallCheck = true;
|
||||
# remove after updating to the next stable version
|
||||
preVersionCheck = ''
|
||||
export version=0.5.3
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
extraArgs = [
|
||||
"--version=branch"
|
||||
"--version-regex=proksi-v(.*)"
|
||||
];
|
||||
};
|
||||
passthru.updateScript = nix-update-script { extraArgs = [ "--version-regex=proksi-v(.*)" ]; };
|
||||
|
||||
meta = {
|
||||
description = "Batteries-included CDN, reverse proxy and Load Balancer using Cloudflare Pingora";
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "restic-rest-server";
|
||||
version = "0.13.0";
|
||||
version = "0.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "restic";
|
||||
repo = "rest-server";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-o55y+g9XklKghVK1c6MTRI8EHLplTv5YKUWGRyyvmtk=";
|
||||
hash = "sha256-cWnZ91mrllhTlCLb+BoJMXqUON2wOWCqVShg+NKU7gs=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-MBkh61vFogf0su/mP3b2J8t/LTtfVzLlpa9MSzAq6Tw=";
|
||||
vendorHash = "sha256-Fg8dDqehART535LYEOLazQntUAKxv9nmBN1RByW4OYE=";
|
||||
|
||||
passthru.tests.restic = nixosTests.restic-rest-server;
|
||||
|
||||
@@ -13,19 +13,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "swww";
|
||||
version = "0.10.0-unstable-2025-05-27";
|
||||
version = "0.10.1";
|
||||
|
||||
# Fixes build for locating wayland.xml, go back to regular tagged releases at next version bump
|
||||
# https://codeberg.org/LGFae/waybackend/issues/2
|
||||
src = fetchFromGitHub {
|
||||
owner = "LGFae";
|
||||
repo = "swww";
|
||||
rev = "800619eb70c0f4293a5b449103f55a0a3cfe2963";
|
||||
hash = "sha256-zkw1r2mmICkplgXTyN6GckTy0XEBAEoz4H1VQuP8eMU=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-HEocjIsij9k4NjcmI8YRW6yzrYh+i3XN9YkRTr5fzDE=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-L2mbQJ0dAiB8+NOATnrPhVrjHvE5zjA1frhPbLUJ3sI=";
|
||||
cargoHash = "sha256-muWY99OtzG0AumbKpYoxNSjhXHYmkiwElVUdp2zE8a0=";
|
||||
|
||||
buildInputs = [
|
||||
lz4
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "veracrypt";
|
||||
version = "1.26.20";
|
||||
version = "1.26.24";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://launchpad.net/veracrypt/trunk/${finalAttrs.version}/+download/VeraCrypt_${finalAttrs.version}_Source.tar.bz2";
|
||||
hash = "sha256-qhVmQPigzEPuPe3aO8g3lR3HRPLEvdhaXfZAZ4IosRY=";
|
||||
hash = "sha256-f1wgr0KTd6tW97UsqGiTa5kj14T0YG2piGw2KXiQPng=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchPypi,
|
||||
fetchFromGitHub,
|
||||
gitUpdater,
|
||||
google-api-core,
|
||||
google-auth,
|
||||
grpc-google-iam-v1,
|
||||
@@ -11,23 +12,23 @@
|
||||
protobuf,
|
||||
pytest-asyncio,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "google-cloud-iam";
|
||||
version = "2.18.3";
|
||||
version = "2.19.0";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
|
||||
src = fetchPypi {
|
||||
pname = "google_cloud_iam";
|
||||
inherit version;
|
||||
hash = "sha256-JlStzDhOHRigXFxO5V+MWxZcsjt0ECzNS8JV1ITFCnk=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "googleapis";
|
||||
repo = "google-cloud-python";
|
||||
tag = "google-cloud-iam-v${version}";
|
||||
hash = "sha256-E1LISOLQcXqUMTTPLR+lwkR6gF1fuGGB44j38cIK/Z4=";
|
||||
};
|
||||
|
||||
sourceRoot = "${src.name}/packages/google-cloud-iam";
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
@@ -55,11 +56,18 @@ buildPythonPackage rec {
|
||||
"google.cloud.iam_credentials_v1"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
passthru.updateScript = gitUpdater {
|
||||
rev-prefix = "google-cloud-iam-v";
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "IAM Service Account Credentials API client library";
|
||||
homepage = "https://github.com/googleapis/google-cloud-python/tree/main/packages/google-cloud-iam";
|
||||
changelog = "https://github.com/googleapis/google-cloud-python/blob/google-cloud-iam-v${version}/packages/google-cloud-iam/CHANGELOG.md";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ austinbutler ];
|
||||
changelog = "https://github.com/googleapis/google-cloud-python/blob/${src.tag}/packages/google-cloud-iam/CHANGELOG.md";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [
|
||||
austinbutler
|
||||
sarahec
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -3,32 +3,38 @@
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "pkginfo2";
|
||||
version = "30.0.0";
|
||||
format = "setuptools";
|
||||
|
||||
disabled = pythonOlder "3.7";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nexB";
|
||||
repo = "pkginfo2";
|
||||
rev = "v${version}";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-E9EyaN3ncf/34vvvhRe0rwV28VrjqJo79YFgXq2lKWU=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
nativeCheckInputs = [ pytestCheckHook ];
|
||||
|
||||
pythonImportsCheck = [ "pkginfo2" ];
|
||||
|
||||
disabledTests = [
|
||||
# AssertionError
|
||||
"test_ctor_w_path"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Query metadatdata from sdists, bdists or installed packages";
|
||||
mainProgram = "pkginfo2";
|
||||
homepage = "https://github.com/nexB/pkginfo2";
|
||||
changelog = "https://github.com/aboutcode-org/pkginfo2/releases/tag/${src.tag}";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ fab ];
|
||||
mainProgram = "pkginfo2";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "rtl8821ce";
|
||||
version = "0-unstable-2025-05-02";
|
||||
version = "0-unstable-2025-05-31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tomaspinho";
|
||||
repo = "rtl8821ce";
|
||||
rev = "6208d1dd190b7cb60bbbf760505bcb1c250518c2";
|
||||
hash = "sha256-d2KWiUxx3/rZvobOzvK5nyGdovovOf8g2MaEd2QW+Pc=";
|
||||
rev = "66c015af7738039a2045b6da755875e126d3fe73";
|
||||
hash = "sha256-JU8ge2QpoR6nJe5G93iTEP7WOU6tLb4NJ1QrkEYUXRA=";
|
||||
};
|
||||
|
||||
hardeningDisable = [ "pic" ];
|
||||
|
||||
@@ -27,6 +27,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"format"
|
||||
];
|
||||
|
||||
patches = [
|
||||
# https://github.com/lwfinger/rtl8852au/pull/115
|
||||
./fix-build-for-kernels-6.13-6.14.patch
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace ./Makefile \
|
||||
--replace-fail /sbin/depmod \# \
|
||||
@@ -55,13 +60,18 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
nuke-refs $out/lib/modules/*/kernel/net/wireless/*.ko
|
||||
'';
|
||||
|
||||
# GCC 14 makes this an error by default
|
||||
env.NIX_CFLAGS_COMPILE = "-Wno-designated-init";
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Driver for Realtek 802.11ac, rtl8852au, provides the 8852au mod";
|
||||
homepage = "https://github.com/lwfinger/rtl8852au";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = platforms.linux;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
# FIX: error: invalid initializer
|
||||
broken = kernel.kernelOlder "6" && kernel.isHardened;
|
||||
maintainers = with maintainers; [ lonyelon ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
From c65ed43f42656aecf43e7ea80c58d204c3c67aca Mon Sep 17 00:00:00 2001
|
||||
From: Soham Nandy <soham.nandy2006@gmail.com>
|
||||
Date: Fri, 28 Mar 2025 17:24:55 +0530
|
||||
Subject: [PATCH 1/2] rtl8852au(fix): remove MODULE_IMPORT and net_device for
|
||||
kernel versions over 6.13
|
||||
|
||||
---
|
||||
os_dep/linux/ioctl_cfg80211.c | 3 +++
|
||||
os_dep/osdep_service_linux.c | 4 ++++
|
||||
2 files changed, 7 insertions(+)
|
||||
|
||||
diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
index 2b79c97..277dffb 100755
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -6350,6 +6350,9 @@ static void rtw_get_chbwoff_from_cfg80211_chan_def(
|
||||
|
||||
static int cfg80211_rtw_set_monitor_channel(struct wiphy *wiphy
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6, 13, 0))
|
||||
+ , struct net_device *dev
|
||||
+#endif
|
||||
, struct cfg80211_chan_def *chandef
|
||||
#else
|
||||
, struct ieee80211_channel *chan
|
||||
diff --git a/os_dep/osdep_service_linux.c b/os_dep/osdep_service_linux.c
|
||||
index fe47c3b..8fdbcfc 100644
|
||||
--- a/os_dep/osdep_service_linux.c
|
||||
+++ b/os_dep/osdep_service_linux.c
|
||||
@@ -390,7 +390,9 @@ static int openFile(struct file **fpp, const char *path, int flag, int mode)
|
||||
struct file *fp;
|
||||
|
||||
#if defined(MODULE_IMPORT_NS)
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0))
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
fp = filp_open(path, flag, mode);
|
||||
@@ -508,7 +510,9 @@ static int isFileReadable(const char *path, u32 *sz)
|
||||
char buf;
|
||||
|
||||
#if defined(MODULE_IMPORT_NS)
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 10, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(6, 13, 0))
|
||||
MODULE_IMPORT_NS(VFS_internal_I_am_really_a_filesystem_and_am_NOT_a_driver);
|
||||
+#endif
|
||||
#endif
|
||||
|
||||
fp = filp_open(path, O_RDONLY, 0);
|
||||
|
||||
From 91d168fc5aa818b4e85aa5b2b43d7f25470e925c Mon Sep 17 00:00:00 2001
|
||||
From: Soham Nandy <soham.nandy2006@gmail.com>
|
||||
Date: Mon, 7 Apr 2025 10:25:03 +0530
|
||||
Subject: [PATCH 2/2] rtl8852au(fix): get_tx_power callback by adding link_id
|
||||
parameter
|
||||
|
||||
kernel versions >6.14 cfg80211_ops was updated to include an unsigned
|
||||
int link_id parameter.
|
||||
---
|
||||
os_dep/linux/ioctl_cfg80211.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c
|
||||
index 277dffb..3d7620e 100755
|
||||
--- a/os_dep/linux/ioctl_cfg80211.c
|
||||
+++ b/os_dep/linux/ioctl_cfg80211.c
|
||||
@@ -4454,6 +4454,10 @@ static int cfg80211_rtw_set_txpower(struct wiphy *wiphy,
|
||||
static int cfg80211_rtw_get_txpower(struct wiphy *wiphy,
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 8, 0))
|
||||
struct wireless_dev *wdev,
|
||||
+
|
||||
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(6,14,0))
|
||||
+ unsigned int link_id,
|
||||
+#endif
|
||||
#endif
|
||||
int *dbm)
|
||||
{
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildFishPlugin rec {
|
||||
pname = "forgit";
|
||||
version = "25.05.0";
|
||||
version = "25.06.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wfxr";
|
||||
repo = "forgit";
|
||||
rev = version;
|
||||
hash = "sha256-U+MtgunPEmo/kv/lQI2BBi2WUBgt3wFkaUdfRzJWoGQ=";
|
||||
hash = "sha256-D1we3pOPXNsK8KgEaRBAmD5eH1i2ud4zX1GwYbOyZvY=";
|
||||
};
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -1504,6 +1504,7 @@ mapAliases {
|
||||
pipewire-media-session = throw "pipewire-media-session is no longer maintained and has been removed. Please use Wireplumber instead.";
|
||||
platypus = throw "platypus is unmaintained and has not merged Python3 support"; # Added 2025-03-20
|
||||
pleroma-otp = throw "'pleroma-otp' has been renamed to/replaced by 'pleroma'"; # Converted to throw 2024-10-17
|
||||
plex-media-player = throw "'plex-media-player' has been discontinued, the new official client is available as 'plex-desktop'"; # Added 2025-05-28
|
||||
plots = throw "'plots' has been replaced by 'gnome-graphs'"; # Added 2025-02-05
|
||||
pltScheme = racket; # just to be sure
|
||||
poac = cabinpkg; # Added 2025-01-22
|
||||
|
||||
@@ -10883,8 +10883,6 @@ with pkgs;
|
||||
|
||||
restic = callPackage ../tools/backup/restic { };
|
||||
|
||||
restic-rest-server = callPackage ../tools/backup/restic/rest-server.nix { };
|
||||
|
||||
rethinkdb = callPackage ../servers/nosql/rethinkdb {
|
||||
stdenv = clangStdenv;
|
||||
libtool = cctools;
|
||||
@@ -13540,9 +13538,7 @@ with pkgs;
|
||||
|
||||
mythtv = libsForQt5.callPackage ../applications/video/mythtv { };
|
||||
|
||||
ncdu = callPackage ../tools/misc/ncdu { };
|
||||
|
||||
ncdu_1 = callPackage ../tools/misc/ncdu/1.nix { };
|
||||
ncdu_1 = callPackage ../by-name/nc/ncdu/1.nix { };
|
||||
|
||||
notepadqq = libsForQt5.callPackage ../applications/editors/notepadqq { };
|
||||
|
||||
@@ -13687,8 +13683,6 @@ with pkgs;
|
||||
|
||||
plexamp = callPackage ../applications/audio/plexamp { };
|
||||
|
||||
plex-media-player = libsForQt5.callPackage ../applications/video/plex-media-player { };
|
||||
|
||||
plex-mpv-shim = python3Packages.callPackage ../applications/video/plex-mpv-shim { };
|
||||
|
||||
plover = recurseIntoAttrs (libsForQt5.callPackage ../applications/misc/plover { });
|
||||
|
||||
Reference in New Issue
Block a user