Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2025-12-15 18:06:50 +00:00
committed by GitHub
93 changed files with 2203 additions and 988 deletions
@@ -354,7 +354,7 @@ stdenv.mkDerivation (finalAttrs: {
pnpmDeps = pnpm.fetchDeps {
inherit (finalAttrs) pname version src;
fetcherVersion = 2;
fetcherVersion = 3;
hash = "...";
};
})
@@ -501,6 +501,7 @@ Changes can include workarounds or bug fixes to existing PNPM issues.
- 1: Initial version, nothing special
- 2: [Ensure consistent permissions](https://github.com/NixOS/nixpkgs/pull/422975)
- 3: [Build a reproducible tarball](https://github.com/NixOS/nixpkgs/pull/469950)
### Yarn {#javascript-yarn}
+258 -114
View File
@@ -12,46 +12,85 @@ let
gid = config.ids.gids.mpd;
cfg = config.services.mpd;
credentialsPlaceholder = (
creds:
let
placeholders = (
lib.imap0 (
i: c: ''password "{{password-${toString i}}}@${lib.concatStringsSep "," c.permissions}"''
) creds
);
in
lib.concatStringsSep "\n" placeholders
);
mpdConf = pkgs.writeText "mpd.conf" ''
# This file was automatically generated by NixOS. Edit mpd's configuration
# via NixOS' configuration.nix, as this file will be rewritten upon mpd's
# restart.
music_directory "${cfg.musicDirectory}"
playlist_directory "${cfg.playlistDirectory}"
${lib.optionalString (cfg.dbFile != null) ''
db_file "${cfg.dbFile}"
''}
state_file "${cfg.dataDir}/state"
sticker_file "${cfg.dataDir}/sticker.sql"
${lib.optionalString (
cfg.network.listenAddress != "any"
) ''bind_to_address "${cfg.network.listenAddress}"''}
${lib.optionalString (cfg.network.port != 6600) ''port "${toString cfg.network.port}"''}
${lib.optionalString (cfg.fluidsynth) ''
decoder {
plugin "fluidsynth"
soundfont "${pkgs.soundfont-fluid}/share/soundfonts/FluidR3_GM2-2.sf2"
}
''}
${lib.optionalString (cfg.credentials != [ ]) (credentialsPlaceholder cfg.credentials)}
${cfg.extraConfig}
'';
mkKeyValue =
a:
lib.mapAttrsToList (
k: v:
k
+ " "
+ (
if builtins.isBool v then
# Mainly for https://mpd.readthedocs.io/en/stable/user.html#zeroconf
"\"" + (lib.boolToYesNo v) + "\""
else
"\"" + (toString v) + "\""
)
) a;
nonBlockSettings = lib.filterAttrs (n: v: !(builtins.isAttrs v || builtins.isList v)) cfg.settings;
pureBlockSettings = builtins.removeAttrs cfg.settings (builtins.attrNames nonBlockSettings);
blocks =
pureBlockSettings
// lib.optionalAttrs cfg.fluidsynth {
decoder = (pureBlockSettings.decoder or [ ]) ++ [
{
plugin = "fluidsynth";
soundfont = "${pkgs.soundfont-fluid}/share/soundfonts/FluidR3_GM2-2.sf2";
}
];
};
processSingleBlock =
n: v:
[
(n + " {")
]
# Add indentation, for better readability
++ (map (l: " " + l) (mkKeyValue v))
++ [ "}" ];
mpdConf = pkgs.writeTextFile {
name = "mpd.conf";
text = ''
# This file was automatically generated by NixOS. Edit mpd's configuration
# via NixOS' configuration.nix, as this file will be rewritten upon mpd's
# restart.
''
+ lib.concatStringsSep "\n" (
mkKeyValue (
{
state_file = "${cfg.dataDir}/state";
sticker_file = "${cfg.dataDir}/sticker.sql";
}
// nonBlockSettings
)
++ lib.flatten (
lib.mapAttrsToList (
n: v: if builtins.isList v then (map (b: processSingleBlock n b) v) else (processSingleBlock n v)
) blocks
)
++ lib.imap0 (
i: a: "password \"{{password-${toString i}}}@${lib.concatStringsSep "," a.permissions}\""
) cfg.credentials
);
derivationArgs = {
expectScript = ''
spawn ${lib.getExe pkgs.buildPackages.mpd} --no-daemon "$env(out)"
expect {
"exception: Error in \"$env(out)\"" {
puts "Config file invalid\n"
exit 1
}
"exception:" {
exit 0
}
}
'';
passAsFile = [
"expectScript"
];
};
checkPhase = ''
${lib.getExe pkgs.buildPackages.expect} -f "$expectScriptPath"
'';
};
in
{
@@ -80,39 +119,16 @@ in
'';
};
musicDirectory = lib.mkOption {
type = with lib.types; either path (strMatching "(http|https|nfs|smb)://.+");
default = "${cfg.dataDir}/music";
defaultText = lib.literalExpression ''"''${dataDir}/music"'';
description = ''
The directory or NFS/SMB network share where MPD reads music from. If left
as the default value this directory will automatically be created before
the MPD server starts, otherwise the sysadmin is responsible for ensuring
the directory exists with appropriate ownership and permissions.
'';
user = lib.mkOption {
type = lib.types.str;
default = name;
description = "User account under which MPD runs.";
};
playlistDirectory = lib.mkOption {
type = lib.types.path;
default = "${cfg.dataDir}/playlists";
defaultText = lib.literalExpression ''"''${dataDir}/playlists"'';
description = ''
The directory where MPD stores playlists. If left as the default value
this directory will automatically be created before the MPD server starts,
otherwise the sysadmin is responsible for ensuring the directory exists
with appropriate ownership and permissions.
'';
};
extraConfig = lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
Extra directives added to to the end of MPD's configuration file,
mpd.conf. Basic configuration like file location and uid/gid
is added automatically to the beginning of the file. For available
options see {manpage}`mpd.conf(5)`.
'';
group = lib.mkOption {
type = lib.types.str;
default = name;
description = "Group account under which MPD runs.";
};
dataDir = lib.mkOption {
@@ -126,48 +142,135 @@ in
'';
};
user = lib.mkOption {
type = lib.types.str;
default = name;
description = "User account under which MPD runs.";
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Open ports in the firewall for mpd.";
};
group = lib.mkOption {
type = lib.types.str;
default = name;
description = "Group account under which MPD runs.";
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType =
let
inherit (lib.types)
oneOf
attrsOf
listOf
str
int
bool
path
;
atomType = oneOf [
str
int
bool
path
];
in
attrsOf (oneOf [
atomType
(listOf (attrsOf atomType))
]);
options = {
music_directory = lib.mkOption {
type = with lib.types; either path (strMatching "([a-z]+)://.+");
default = "${cfg.dataDir}/music";
defaultText = lib.literalExpression ''"''${dataDir}/music"'';
description = ''
The directory or URI where MPD reads music from. If left
as the default value this directory will automatically be created before
the MPD server starts, otherwise the sysadmin is responsible for ensuring
the directory exists with appropriate ownership and permissions.
'';
};
network = {
playlist_directory = lib.mkOption {
type = lib.types.path;
default = "${cfg.dataDir}/playlists";
defaultText = lib.literalExpression ''"''${dataDir}/playlists"'';
description = ''
The directory where MPD stores playlists. If left as the default value
this directory will automatically be created before the MPD server starts,
otherwise the sysadmin is responsible for ensuring the directory exists
with appropriate ownership and permissions.
'';
};
listenAddress = lib.mkOption {
type = lib.types.str;
default = "127.0.0.1";
example = "any";
description = ''
The address for the daemon to listen on.
Use `any` to listen on all addresses.
'';
bind_to_address = lib.mkOption {
type = lib.types.str;
default = "127.0.0.1";
example = "any";
description = ''
The address for the daemon to listen on.
Use `any` to listen on all addresses.
'';
};
port = lib.mkOption {
type = lib.types.port;
default = 6600;
description = ''
This setting is the TCP port that is desired for the daemon to get assigned
to.
'';
};
db_file = lib.mkOption {
type = lib.types.path;
default = "${cfg.dataDir}/tag_cache";
defaultText = lib.literalExpression ''"''${dataDir}/tag_cache"'';
description = ''
The path to MPD's database.
'';
};
};
};
port = lib.mkOption {
type = lib.types.port;
default = 6600;
description = ''
This setting is the TCP port that is desired for the daemon to get assigned
to.
'';
};
};
dbFile = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = "${cfg.dataDir}/tag_cache";
defaultText = lib.literalExpression ''"''${dataDir}/tag_cache"'';
default = { };
description = ''
The path to MPD's database. If set to `null` the
parameter is omitted from the configuration.
Configuration for MPD. MPD supports key-value like blocks for settings
like `audio_output` and `neighbor`. Some of these blocks can be
specified multiple times, so the following configuration:
```txt
audio_output {
device "iec958:CARD=Intel,DEV=0"
mixer_control "PCM"
name "My specific ALSA output"
type "alsa"
}
audio_output {
mixer_type "null"
name "ALSA Null"
type "alsa"
}
audio_output {
name "The Pulse"
type "pulse"
}
```
Can be inserted with:
```nix
audio_output = [
{
type = "alsa";
name = "My specific ALSA output";
device = "iec958:CARD=Intel,DEV=0";
mixer_control = "PCM";
}
{
type = "alsa";
name = "ALSA Null";
mixer_type = "null";
}
{
type = "pulse";
name = "The Pulse";
}
];
```
'';
};
@@ -226,7 +329,7 @@ in
type = lib.types.bool;
default = false;
description = ''
If set, add fluidsynth soundfont and configure the plugin.
If set, add fluidsynth soundfont `decoder` block.
'';
};
};
@@ -235,8 +338,47 @@ in
###### implementation
imports = [
(lib.mkRenamedOptionModule
[ "services" "mpd" "musicDirectory" ]
[ "services" "mpd" "settings" "music_directory" ]
)
(lib.mkRenamedOptionModule
[ "services" "mpd" "playlistDirectory" ]
[ "services" "mpd" "settings" "playlist_directory" ]
)
(lib.mkRenamedOptionModule [ "services" "mpd" "dbFile" ] [ "services" "mpd" "settings" "db_file" ])
(lib.mkRenamedOptionModule
[ "services" "mpd" "network" "listenAddress" ]
[ "services" "mpd" "settings" "bind_to_address" ]
)
(lib.mkRenamedOptionModule
[ "services" "mpd" "network" "port" ]
[ "services" "mpd" "settings" "port" ]
)
(lib.mkRemovedOptionModule
[
"services"
"mpd"
"extraConfig"
]
"services.mpd.extraConfig was replaced by the declarative services.mpd.settings option, per RFC42."
)
];
config = lib.mkIf cfg.enable {
warnings =
lib.optional
(
!(builtins.elem cfg.bind_to_address [
"localhost"
"127.0.0.1"
])
&& !cfg.openFirewall
)
"Using '${cfg.bind_to_address}' as services.mpd.settings.bind_to_address without enabling services.mpd.openFirewall, might prevent you from accessing MPD from other clients.";
# install mpd units
systemd.packages = [ pkgs.mpd ];
@@ -245,12 +387,12 @@ in
listenStreams = [
"" # Note: this is needed to override the upstream unit
(
if pkgs.lib.hasPrefix "/" cfg.network.listenAddress then
cfg.network.listenAddress
if pkgs.lib.hasPrefix "/" cfg.settings.bind_to_address then
cfg.settings.bind_to_address
else
"${
lib.optionalString (cfg.network.listenAddress != "any") "${cfg.network.listenAddress}:"
}${toString cfg.network.port}"
lib.optionalString (cfg.settings.bind_to_address != "any") "${cfg.settings.bind_to_address}:"
}${toString cfg.settings.port}"
)
];
};
@@ -282,17 +424,19 @@ in
StateDirectory =
[ ]
++ lib.optionals (cfg.dataDir == "/var/lib/${name}") [ name ]
++ lib.optionals (cfg.playlistDirectory == "/var/lib/${name}/playlists") [
++ lib.optionals (cfg.settings.playlist_directory == "/var/lib/${name}/playlists") [
name
"${name}/playlists"
]
++ lib.optionals (cfg.musicDirectory == "/var/lib/${name}/music") [
++ lib.optionals (cfg.settings.music_directory == "/var/lib/${name}/music") [
name
"${name}/music"
];
};
};
networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall [ cfg.settings.port ];
users.users = lib.optionalAttrs (cfg.user == name) {
${name} = {
inherit uid;
+5 -6
View File
@@ -8,7 +8,6 @@
let
cfg = config.services.mpdscribble;
mpdCfg = config.services.mpd;
mpdOpt = options.services.mpd;
endpointUrls = {
"last.fm" = "http://post.audioscrobbler.com";
@@ -114,11 +113,11 @@ in
host = lib.mkOption {
default = (
if mpdCfg.network.listenAddress != "any" then mpdCfg.network.listenAddress else "localhost"
if mpdCfg.settings.bind_to_address != "any" then mpdCfg.settings.bind_to_address else "localhost"
);
defaultText = lib.literalExpression ''
if config.${mpdOpt.network.listenAddress} != "any"
then config.${mpdOpt.network.listenAddress}
if config.services.mpd.settings.bind_to_address != "any"
then config.services.mpd.settings.bind_to_address
else "localhost"
'';
type = lib.types.str;
@@ -148,8 +147,8 @@ in
};
port = lib.mkOption {
default = mpdCfg.network.port;
defaultText = lib.literalExpression "config.${mpdOpt.network.port}";
default = mpdCfg.settings.port;
defaultText = lib.literalExpression "config.services.mpd.settings.port";
type = lib.types.port;
description = ''
Port for the mpdscribble daemon to search for a mpd daemon on.
+2 -2
View File
@@ -33,8 +33,8 @@ in
port = lib.mkOption {
type = lib.types.port;
default = config.services.mpd.network.port;
defaultText = lib.literalExpression "config.services.mpd.network.port";
default = config.services.mpd.settings.port;
defaultText = lib.literalExpression "config.services.mpd.settings.port";
description = "The port where MPD is listening.";
example = 6600;
};
@@ -176,6 +176,7 @@ in
]
++ lib.optional (cfg.configDir != null) "d '${cfg.configDir}' - ${cfg.user} ${cfg.group} - -"
++ lib.optionals cfg.analysis.enable [
"d '${cfg.stateDir}/tools' - ${cfg.user} ${cfg.group} - -"
"d '${cfg.stateDir}/tools/klipper_estimator' - ${cfg.user} ${cfg.group} - -"
"L+ '${cfg.stateDir}/tools/klipper_estimator/klipper_estimator_linux' - - - - ${lib.getExe pkgs.klipper-estimator}"
];
@@ -245,6 +245,7 @@ in
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@chown"
"@system-service"
"~@privileged"
];
+14 -5
View File
@@ -63,19 +63,28 @@
# On New Event page
machine.succeed("xdotool mousemove 500 230 click 1")
machine.sleep(2)
machine.send_chars("foobar")
machine.send_chars("Poke")
machine.sleep(2) # make sure they're actually in there
machine.succeed("xdotool mousemove 1000 40 click 1")
machine.sleep(10) # Give the app some time to save the event
# Can't consistently OCR for "Agenda". Just restart it.
machine.succeed("pgrep -afx lomiri-calendar-app >&2")
machine.succeed("pkill -efx lomiri-calendar-app >&2")
machine.wait_until_fails("pgrep -afx lomiri-calendar-app >&2")
machine.succeed("lomiri-calendar-app >&2 &")
machine.sleep(10)
machine.send_key("alt-f10")
machine.sleep(2)
machine.wait_for_text("Agenda")
machine.screenshot("lomiri-calendar_eventadded")
# Back on main page
# Event was created, does it have the correct name?
machine.wait_for_text("foobar")
machine.wait_for_text("Poke")
machine.screenshot("lomiri-calendar_works")
machine.succeed("pkill -f lomiri-calendar-app")
machine.succeed("pgrep -afx lomiri-calendar-app >&2")
machine.succeed("pkill -efx lomiri-calendar-app >&2")
machine.wait_until_fails("pgrep -afx lomiri-calendar-app >&2")
with subtest("lomiri calendar localisation works"):
machine.succeed("env LANG=de_DE.UTF-8 lomiri-calendar-app >&2 &")
+3 -3
View File
@@ -145,12 +145,12 @@ in
with subtest("lomiri music plays music"):
machine.succeed("xdotool mousemove 30 720 click 1") # Skip intro
machine.sleep(2)
machine.wait_for_text("Albums")
machine.wait_for_window("Albums")
machine.succeed("xdotool mousemove 25 45 click 1") # Open categories
machine.sleep(2)
machine.succeed("xdotool mousemove 25 240 click 1") # Switch to Tracks category
machine.sleep(2)
machine.wait_for_text("Tracks") # Written in larger text now, easier for OCR
machine.wait_for_window("Tracks")
machine.screenshot("lomiri-music_listing")
# Ensure pause colours isn't present already
@@ -192,7 +192,7 @@ in
machine.sleep(10)
machine.send_key("alt-f10")
machine.sleep(2)
machine.wait_for_text("Titel")
machine.wait_for_window("Titel")
machine.screenshot("lomiri-music_localised")
'';
}
+32 -34
View File
@@ -1,28 +1,18 @@
{ pkgs, lib, ... }:
let
track = pkgs.fetchurl {
# Sourced from http://freemusicarchive.org/music/Blue_Wave_Theory/Surf_Music_Month_Challenge/Skyhawk_Beach_fade_in
# Sourced from https://freemusicarchive.org/music/Jazz_at_Mladost_Club/Jazz_Night/Blue_bossa/
name = "Blue_Wave_Theory-Skyhawk_Beach.mp3";
url = "https://freemusicarchive.org/file/music/ccCommunity/Blue_Wave_Theory/Surf_Music_Month_Challenge/Blue_Wave_Theory_-_04_-_Skyhawk_Beach.mp3";
hash = "sha256-91VDWwrcP6Cw4rk72VHvZ8RGfRBrpRE8xo/02dcJhHc=";
name = "Blue bossa - Jazz at Miadost Club.mp3";
url = "https://files.freemusicarchive.org/storage-freemusicarchive-org/music/no_curator/Jazz_at_Mladost_Club/Jazz_Night/Jazz_at_Mladost_Club_-_07_-_Blue_bossa.mp3?download=1&name=Jazz%20at%20Mladost%20Club%20-%20Blue%20bossa.mp3";
hash = "sha256-cAG4nBuc97J3ZJc9cm/6vWTgnPL/Hfkar7cA3+89rto=";
meta.license = lib.licenses.cc-by-sa-40;
};
defaultCfg = rec {
defaultMpdCfg = {
user = "mpd";
group = "mpd";
dataDir = "/var/lib/mpd";
musicDirectory = "${dataDir}/music";
};
defaultMpdCfg = {
inherit (defaultCfg)
dataDir
musicDirectory
user
group
;
enable = true;
};
@@ -30,7 +20,7 @@ let
{
user,
group,
musicDirectory,
dataDir,
}:
{
description = "Sets up the music file(s) for MPD to use.";
@@ -38,7 +28,7 @@ let
after = [ "mpd.service" ];
wantedBy = [ "default.target" ];
script = ''
cp ${track} ${musicDirectory}
cp ${track} ${dataDir}/music
'';
serviceConfig = {
User = user;
@@ -57,7 +47,10 @@ in
{
name = "mpd";
meta = {
maintainers = with lib.maintainers; [ emmanuelrosa ];
maintainers = with lib.maintainers; [
emmanuelrosa
doronbehar
];
};
nodes = {
@@ -68,18 +61,20 @@ in
lib.mkMerge [
(mkServer {
mpd = defaultMpdCfg // {
network.listenAddress = "any";
extraConfig = ''
audio_output {
type "alsa"
name "ALSA"
mixer_type "null"
}
'';
settings = {
bind_to_address = "any";
audio_output = [
{
type = "alsa";
name = "ALSA";
mixer_type = "null";
}
];
};
openFirewall = true;
};
musicService = musicService { inherit (defaultMpdCfg) user group musicDirectory; };
musicService = musicService { inherit (defaultMpdCfg) user group dataDir; };
})
{ networking.firewall.allowedTCPPorts = [ 6600 ]; }
];
serverPulseAudio =
@@ -87,15 +82,15 @@ in
lib.mkMerge [
(mkServer {
mpd = defaultMpdCfg // {
extraConfig = ''
audio_output {
type "pulse"
name "The Pulse"
settings.audio_output = [
{
type = "pulse";
name = "The Pulse";
}
'';
];
};
musicService = musicService { inherit (defaultMpdCfg) user group musicDirectory; };
musicService = musicService { inherit (defaultMpdCfg) user group dataDir; };
})
{
services.pulseaudio = {
@@ -144,5 +139,8 @@ in
# The PulseAudio-based server is configured not to accept external client connections
# to perform the following test:
client.fail(f"{mpc} -h serverPulseAudio status")
# For inspecting these files
serverALSA.copy_from_vm("/run/mpd/mpd.conf", "ALSA")
serverPulseAudio.copy_from_vm("/run/mpd/mpd.conf", "PulseAudio")
'';
}
@@ -1,14 +1,13 @@
{ lib, vscode-utils }:
let
inherit (vscode-utils) buildVscodeMarketplaceExtension;
in
buildVscodeMarketplaceExtension {
{
lib,
vscode-utils,
}:
vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "vscode-wakatime";
publisher = "WakaTime";
version = "25.3.2";
hash = "sha256-xX1vejS8zoidcI6fnp7vvtSw4rMHIe2IF4JQJB5hvqs=";
version = "25.4.0";
hash = "sha256-furuRhQPcK9r4G878WKD9BiQuiwRbn+pJpNWAbpIgOw=";
};
meta = {
@@ -16,27 +16,116 @@ version skew policy.
> Upgrade the server nodes first, one at a time. Once all servers have been upgraded, you may then
> upgrade agent nodes.
## Release Channels
## Release Maintenance
This section describes how new RKE2 releases are published in nixpkgs.
Before contributing new RKE2 packages or updating existing packages, make sure that
- New packages build (e.g. `nix-build -A rke2_1_34`)
- All tests pass (e.g. `nix-build -A rke2_1_34.tests`)
- You respect the nixpkgs [contributing guidelines](/CONTRIBUTING.md)
### Release Channels
RKE2 has two named release channels, i.e. `stable` and `latest`. Additionally, there exists a
release channel tied to each Kubernetes minor version, e.g. `v1.32`.
Nixpkgs follows active minor version release channels (typically 4 at a time) and sets aliases for
`rke2_stable` and `rke2_latest` accordingly.
Patch releases should be backported to the latest stable release branch; however, new minor
versions are not backported.
`rke2_stable` and `rke2_latest` accordingly. The [update-script](./update-script.sh) takes care of
updating the aliases automatically.
For further information visit the
[RKE2 release channels documentation](https://docs.rke2.io/upgrades/manual_upgrade?_highlight=manua#release-channels).
## EOL Versions
### Patch Releases
Approximately every 4 months a minor RKE2 version reaches EOL. EOL versions should be removed from
`nixpkgs-unstable`, preferably by throwing with an explanatory message in
`pkgs/top-level/aliases.nix`. With stable releases, however, it isn't expected that packages will be
removed. Instead we set `meta.knownVulnerabilities` for stable EOL packages, like it is also done
for EOL JDKs, browser engines, Node.js versions, etc.
Updates to existing packages should be performed by the update script. In order to update an RKE2
package, you call the update script and pass it the minor version of the package you want to update.
For further information on the RKE2 lifecycle, see the
[SUSE Product Support Lifecycle page](https://www.suse.com/lifecycle#rke2).
For example, to update `rke2_1_34`:
```
./pkgs/applications/networking/cluster/rke2/update-script.sh 34
```
Patch releases for packages that are also available on the latest stable release channel should be
backported. The backport PR can be created automatically by adding the `backport release-XX.XX`
label on the update PR.
### Minor Releases
Every minor release gets a dedicated package in nixpkgs. For example, you would release `rke2_1_35`
by doing the following:
1. Copy the version information of an existing release, its contents will be updated by the update
script later on
- `cp -r ./pkgs/applications/networking/cluster/rke2/1_34 ./pkgs/applications/networking/cluster/rke2/1_35`
2. Add a new package block to [default.nix](./default.nix), you can copy an existing block from a
previous release and update the version numbers
- `rke2_1_35 = ...`
3. Run the update script for the new package
- `./pkgs/applications/networking/cluster/rke2/update-script.sh 35`
New minor versions are **not** backported to stable release channels.
### Final Patch Releases (EOL)
RKE2 follows Kubernetes' release schedule. In general, there is a final patch release with which a
minor version enters end-of-life. See Kubernetes'
[non-active branch history](https://kubernetes.io/releases/patch-releases/#non-active-branch-history)
for further information. Approximately every 4 months a minor RKE2 version reaches EOL.
Due to the delay between Kubernetes releases and RKE2 releases, the final patch version for RKE2 may
be released slightly after the EOL date. Usually this is nothing to worry about.
#### Handling EOL on unstable
EOL packages are removed from unstable. The final patch version should not be released on unstable,
if it has entered end-of-life already.
In order to remove a versioned RKE2 package, create a PR achieving the following:
1. Remove the versioned folder containing the version files
- `rm -r ./pkgs/applications/networking/cluster/rke2/1_34`
2. Remove the package block from [default.nix](../default.nix) (`rke2_1_34 = ...`)
3. Remove the package reference from
[pkgs/top-level/all-packages.nix](/pkgs/top-level/all-packages.nix)
4. Add a deprecation notice in [pkgs/top-level/aliases.nix](/pkgs/top-level/aliases.nix)
- Such as
`rke2_1_34 = throw "'rke2_1_34' has been removed from nixpkgs as it has reached end of life"; # Added 2026-10-27`
#### Handling EOL on stable
EOL packages should **not** be removed from a stable release branch. Instead we mark stable EOL
packages as vulnerable due to EOL, like it is also done for EOL JDKs, browser engines, Node.js
versions, etc.
In order to mark a versioned RKE2 package as vulnerable, override `meta.knownVulnerabilities` on the
respective package block.
```nix
{
rke2_1_34 =
(common (
(import ./1_34/versions.nix)
// {
updateScript = [
./update-script.sh
"34"
];
}
) extraArgs).overrideAttrs
{
meta.knownVulnerabilities = [ "rke2_1_34 has reached end-of-life on 2026-10-27" ];
};
}
```
> [!NOTE]
> Remember to add "Not-cherry-picked-because: <reason>" in the commit message for commits on stable
> that are not cherry picked.
#### Additional Resources
- [RKE2 Product Support Lifecycle page](https://www.suse.com/lifecycle#rke2)
@@ -9,7 +9,7 @@ makeScopeWithSplicing' {
mkLinphoneDerivation = self.mk-linphone-derivation;
linphoneSdkVersion = "5.4.67";
linphoneSdkHash = "sha256-QM4EVm7VJeOTt5Dc4DFAJOrGphCRcGniN0Tnfl4zab8=";
linphoneSdkHash = "sha256-YG+GF6En1r8AYoIj7E5hqPcmXidMmO0ZKVx/YC5w55I=";
};
f =
self:
+1 -1
View File
@@ -109,7 +109,7 @@ tryHashedMirrors() {
set -o noglob
urls2=
for url in $urls; do
for url in "${urls[@]}"; do
if test "${url:0:9}" != "mirror://"; then
urls2="$urls2 $url"
else
+6 -3
View File
@@ -10,6 +10,7 @@
xdg-user-dirs,
keybinder3,
libnotify,
gst_all_1,
}:
let
@@ -17,11 +18,11 @@ let
rec {
x86_64-linux = {
urlSuffix = "linux-x86_64.tar.gz";
hash = "sha256-HXBRWQfdhlKmOOULdRELrGcxVVhKV+PvgtRHW1yU6+I=";
hash = "sha256-87mauW50ccOaPyK04O4I7+0bsvxVrdFxhi/Muc53wDY=";
};
x86_64-darwin = {
urlSuffix = "macos-universal.zip";
hash = "sha256-Mv4HfG93+NpbMAhDwcXZ260APL+sbYM6C+DqGZr6ogU=";
hash = "sha256-a1WhOQ8NU3/aGAdaw8o3y7ckRdBsNgLZZ2nOrMsQdOA=";
};
aarch64-darwin = x86_64-darwin;
}
@@ -30,7 +31,7 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "appflowy";
version = "0.10.4";
version = "0.10.6";
src = fetchzip {
url = "https://github.com/AppFlowy-IO/appflowy/releases/download/${finalAttrs.version}/AppFlowy-${finalAttrs.version}-${dist.urlSuffix}";
@@ -48,6 +49,8 @@ stdenvNoCC.mkDerivation (finalAttrs: {
gtk3
keybinder3
libnotify
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
];
dontBuild = true;
@@ -1,12 +1,12 @@
{
lib,
stdenv,
buildGoModule,
buildGo124Module,
fetchFromGitHub,
go-task,
}:
buildGoModule rec {
buildGo124Module rec {
pname = "arduino-create-agent";
version = "1.7.0";
+4 -4
View File
@@ -18,16 +18,16 @@
}:
rustPlatform.buildRustPackage rec {
pname = "asusctl";
version = "6.1.17";
version = "6.2.0";
src = fetchFromGitLab {
owner = "asus-linux";
repo = "asusctl";
tag = version;
hash = "sha256-rNLQYCE7NZAel2fr5VoAMlm7QkH1KrySKdEn2+WMPo8=";
hash = "sha256-frQbfCdK7bD6IAUa+MAOaRLhMrbdFRdHocQ0Z1tzsqE=";
};
cargoHash = "sha256-/vMVSGUO6Zu/8GSTq1jsXLWVP9sWsuD7fJty3NnKXf4=";
cargoHash = "sha256-Z3JFp/qH3mD3Hy/kqSONOZ+syulgr+t0ZzFRvNN+Ayg=";
postPatch = ''
files="
@@ -46,7 +46,6 @@ rustPlatform.buildRustPackage rec {
substituteInPlace rog-control-center/src/main.rs \
--replace-fail 'std::env::var("RUST_TRANSLATIONS").is_ok()' 'true'
substituteInPlace data/asusd.rules --replace-fail /usr/bin/systemctl ${lib.getExe' systemd "systemctl"}
substituteInPlace data/asusd.service \
--replace-fail /usr/bin/asusd $out/bin/asusd \
--replace-fail /bin/sleep ${lib.getExe' coreutils "sleep"}
@@ -106,6 +105,7 @@ rustPlatform.buildRustPackage rec {
maintainers = with lib.maintainers; [
k900
aacebedo
yuannan
];
};
}
+13 -18
View File
@@ -19,8 +19,6 @@
python3,
python3Packages,
nimble,
nim,
}:
buildNimPackage rec {
@@ -71,26 +69,23 @@ buildNimPackage rec {
--replace-fail '"main=auto-editor"' '"main"'
'';
# TODO: Fix checks
/*
nativeCheckInputs = [
python3Packages.av
python3
];
nativeCheckInputs = [
python3
python3Packages.av
];
checkPhase = ''
runHook preCheck
checkPhase = ''
runHook preCheck
nim c \
${if withHEVC then "-d:enable_hevc" else ""} \
${if withWhisper then "-d:enable_whisper" else ""} \
-r $src/src/rationals
eval "nim r --nimcache:$NIX_BUILD_TOP/nimcache $nimFlags $src/tests/rationals.nim"
python3 $src/tests/test.py
substituteInPlace tests/test.py \
--replace-fail '"./auto-editor"' "\"$out/bin/main\""
runHook postCheck
'';
*/
python3 tests/test.py
runHook postCheck
'';
postInstall = ''
mv $out/bin/main $out/bin/auto-editor
@@ -28,8 +28,8 @@ stdenvNoCC.mkDerivation (finalAttrs: {
src
pnpmWorkspaces
;
fetcherVersion = 1;
hash = "sha256-NvyqPv5OKgZi3hW98Da8LhsYatmrzrPX8kLOfLr+BrI=";
fetcherVersion = 3;
hash = "sha256-6i+1V3ZkjiJ/IXDun3JfwmfDOiemxCmAXMzS/rGT6ZU=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -12,16 +12,16 @@
buildGoModule rec {
pname = "bettercap";
version = "2.41.4";
version = "2.41.5";
src = fetchFromGitHub {
owner = "bettercap";
repo = "bettercap";
rev = "v${version}";
sha256 = "sha256-y23gNqS5f/MP+wyRMxe40I+9RuZGyZEok17LIc9Z8O4=";
sha256 = "sha256-mw2Fe/7kSowozUpmXC5tMHZ02bF5+UHmy+lmkJ6SeLM=";
};
vendorHash = "sha256-1kgjMPsj8z2Cl0YWe/1zY0Zuiza0X+ZAIgsMqPhCrMw=";
vendorHash = "sha256-ssNGy40KMJ9P33uEGyYOer92QRS2T6DQlKaf/3XMFwQ=";
doCheck = false;
@@ -98,6 +98,7 @@ let
exec = "bolt-launcher";
icon = "bolt-launcher";
categories = [ "Game" ];
startupWMClass = "BoltLauncher";
})
];
});
+33
View File
@@ -0,0 +1,33 @@
{
lib,
stdenv,
fetchFromGitHub,
meson,
ninja,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "bstring";
version = "1.0.3";
src = fetchFromGitHub {
owner = "msteinert";
repo = "bstring";
tag = "v${finalAttrs.version}";
hash = "sha256-efXMSRcPgo+WlOdbS1kY2PYQqSVwcsVSyU1JfsU8OOo=";
};
nativeBuildInputs = [
meson
ninja
];
meta = {
description = "Better String Library for C";
homepage = "https://github.com/msteinert/bstring";
changelog = "https://github.com/msteinert/bstring/releases/tag/v${finalAttrs.version}";
license = lib.licenses.bsd3;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ nulleric ];
};
})
+4 -3
View File
@@ -6,7 +6,7 @@
installShellFiles,
nixosTests,
externalPlugins ? [ ],
vendorHash ? "sha256-pU8INVCKjYfAFOeobM7N1XCMHod7Kz0N5NKwpMpA2lU=",
vendorHash ? "sha256-bnNpJgy54wvTST1Jtfbd1ldLJrIzTW62TL7wyHeqz28=",
}:
let
@@ -14,13 +14,13 @@ let
in
buildGoModule (finalAttrs: {
pname = "coredns";
version = "1.13.1";
version = "1.13.2";
src = fetchFromGitHub {
owner = "coredns";
repo = "coredns";
tag = "v${finalAttrs.version}";
hash = "sha256-rWa4xjHRREoMtvPqW6ZP6Ym9qNTa0l8Opd15FsmxraI=";
hash = "sha256-9ggyFixdNy0t4UA8ZxU5oMUzA/8EB/k1jors4f8Q6YE=";
};
inherit vendorHash;
@@ -135,6 +135,7 @@ buildGoModule (finalAttrs: {
maintainers = with lib.maintainers; [
deltaevo
djds
johanot
rtreffer
rushmorem
];
+2 -2
View File
@@ -32,13 +32,13 @@
stdenv.mkDerivation rec {
pname = "ddnet";
version = "19.5";
version = "19.6";
src = fetchFromGitHub {
owner = "ddnet";
repo = "ddnet";
tag = version;
hash = "sha256-L9n6jvI9rzrBp8yzKQPZRBSbT5/ZnEm6eLW6qMA+sy0=";
hash = "sha256-U0Yd3Xus0hsBpbXUsEC7EyoMtmsOXZJT4c3cFai918g=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
+2 -2
View File
@@ -9,13 +9,13 @@
stdenv.mkDerivation rec {
pname = "exfatprogs";
version = "1.3.0";
version = "1.3.1";
src = fetchFromGitHub {
owner = "exfatprogs";
repo = "exfatprogs";
rev = version;
sha256 = "sha256-2kD2ZENAyhApYHs6+NNYkxfLj5fw/cIHRUhw0UnQx04=";
sha256 = "sha256-AwY5TkQRfWjkkcleymNN580mKGxIdZ0O30tt6yBbo5M=";
};
nativeBuildInputs = [
+4 -4
View File
@@ -7,18 +7,18 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "flaca";
version = "3.4.2";
version = "3.5.3";
lockFile = fetchurl {
url = "https://github.com/Blobfolio/flaca/releases/download/v${finalAttrs.version}/Cargo.lock";
hash = "sha256-6SpIqz/iLGVvOkwfiTcvf2EdlbVafQ+aHVc7taYLPDc=";
hash = "sha256-NNeq8qr+z0s98mgFYyUu9aNRqaAi2CZfQx0vQzSzOc8=";
};
src = fetchFromGitHub {
owner = "Blobfolio";
repo = "flaca";
tag = "v${finalAttrs.version}";
hash = "sha256-9fD+nfSe0Rk06d+o3hnMH2lC6OAFa10gDNiDW57lSTg=";
hash = "sha256-Fh+nWnAG87NL3scr/y2jCNqaeJtEwi4nCYTGwnmEsIQ=";
};
postUnpack = ''
@@ -27,7 +27,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
nativeBuildInputs = [ rustPlatform.bindgenHook ];
cargoHash = "sha256-LVY1+Nvcy7WoJ7Bsf1rgrdTzLMRqpquDXD8X3X8jX20=";
cargoHash = "sha256-yHkUsxJppHhIpgX7Vtrs8TCy43xaNpqoVkMZ0msr02k=";
meta = {
description = "CLI tool to losslessly compress JPEG and PNG images";
+3 -3
View File
@@ -13,16 +13,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "foundry";
version = "1.4.4";
version = "1.5.0";
src = fetchFromGitHub {
owner = "foundry-rs";
repo = "foundry";
tag = "v${finalAttrs.version}";
hash = "sha256-u+JCurH1gx4onC5Poxxd9+gVrUyyebcd6xnXY4Le6Rs=";
hash = "sha256-mbOv5XZH+AYZQjSUI+ksuAdLxZyRdF0LXK/8Q1DIgrU=";
};
cargoHash = "sha256-JLuCZckiNv0t+kPuDk6TWmPIXKOvqf3HR/oFrQ5fKKQ=";
cargoHash = "sha256-vws7LcBRtoha+Sa4TLDNxMKA8caKkWFOauCLZs6we4Y=";
nativeBuildInputs = [
pkg-config
@@ -945,9 +945,21 @@
"urls": [
"dweb:/ipfs/QmPsmKxpd5berCgcTBXXPBC4PLHrb56tr3f6ZMxPGEf6vn"
]
},
{
"path": "solc-linux-amd64-v0.8.31+commit.fd3a2265",
"version": "0.8.31",
"build": "commit.fd3a2265",
"longVersion": "0.8.31+commit.fd3a2265",
"keccak256": "0xc6f3968537d87ec3432a06c25840491a3fac9d538c3e7c30900f47722f978f31",
"sha256": "0xaac9cd0116e9ae0cd3d8f64a8641381845dc9f12e2a52653de36fb619323e557",
"urls": [
"dweb:/ipfs/QmcpFFGAaoKkwiqng4czei7sa5Mvd9Hv4vRwUpRNNTCb9r"
]
}
],
"releases": {
"0.8.31": "solc-linux-amd64-v0.8.31+commit.fd3a2265",
"0.8.30": "solc-linux-amd64-v0.8.30+commit.73712a01",
"0.8.29": "solc-linux-amd64-v0.8.29+commit.ab55807c",
"0.8.28": "solc-linux-amd64-v0.8.28+commit.7893614a",
@@ -1035,5 +1047,5 @@
"0.4.11": "solc-linux-amd64-v0.4.11+commit.68ef5810",
"0.4.10": "solc-linux-amd64-v0.4.10+commit.9e8cc01b"
},
"latestRelease": "0.8.30"
"latestRelease": "0.8.31"
}
@@ -1066,9 +1066,21 @@
"urls": [
"dweb:/ipfs/QmbrZ9EQQakmwZ2MKzdT6Xp6RQfwbbc6bhrP7ZSeMGE6fx"
]
},
{
"path": "solc-macosx-amd64-v0.8.31+commit.fd3a2265",
"version": "0.8.31",
"build": "commit.fd3a2265",
"longVersion": "0.8.31+commit.fd3a2265",
"keccak256": "0xe24d2e6c51018020bd86cd51369e4087f3f59288577dd038326ebf84becf26c2",
"sha256": "0xf5a243d6b2dd8fba307e36c5fefa2d8eb3ae74ba81036d1c17c971b5d346ade9",
"urls": [
"dweb:/ipfs/QmXnqLGQF6Dgpkegp59Z8DcSq7UeT9jY7ENAWUzYjPaq8H"
]
}
],
"releases": {
"0.8.31": "solc-macosx-amd64-v0.8.31+commit.fd3a2265",
"0.8.30": "solc-macosx-amd64-v0.8.30+commit.73712a01",
"0.8.29": "solc-macosx-amd64-v0.8.29+commit.ab55807c",
"0.8.28": "solc-macosx-amd64-v0.8.28+commit.7893614a",
@@ -1167,5 +1179,5 @@
"0.4.0": "solc-macosx-amd64-v0.4.0+commit.acd334c9",
"0.3.6": "solc-macosx-amd64-v0.3.6+commit.988fe5e5"
},
"latestRelease": "0.8.30"
"latestRelease": "0.8.31"
}
+2 -2
View File
@@ -40,8 +40,8 @@ for url in "${urls[@]}"; do
# Extract filename from URL
filename=$(extract_filename "$url")
# Download the file and fix line endings
# Download the file, filter out prereleases, and fix line endings
echo "Fetching $url to $dir/$filename"
curl -sL "$url" -o "${dir}/${filename}"
curl -sL "$url" | jq 'del(.builds[] | select(has("prerelease")))' > "${dir}/${filename}"
ensure_unix_format "${dir}/${filename}"
done
@@ -29,13 +29,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "homepage-dashboard";
version = "1.7.0";
version = "1.8.0";
src = fetchFromGitHub {
owner = "gethomepage";
repo = "homepage";
tag = "v${finalAttrs.version}";
hash = "sha256-03am9z381UozNsmWZefopMp8/tLycXJyiZ5BUGaV1kY=";
hash = "sha256-T2bAN8ucCjcWhXScTI8YxtfrwK9NEfHGHIE8xJgD6Bs=";
};
pnpmDeps = pnpm_10.fetchDeps {
@@ -45,7 +45,7 @@ stdenv.mkDerivation (finalAttrs: {
src
;
fetcherVersion = 1;
hash = "sha256-svkqmRFwZpcExFWtAbLL0lpHhzsI2s7RiLfQajIqjck=";
hash = "sha256-42dT1za9M4DowBh27UYh2QDyoVoNWA/L/9lyIY5OVwM=";
};
nativeBuildInputs = [
+3 -5
View File
@@ -19,13 +19,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "iconic";
version = "2025.3.2";
version = "2025.9.1";
src = fetchFromGitHub {
owner = "youpie";
repo = "Iconic";
tag = "v${finalAttrs.version}";
hash = "sha256-mj95GShV/PxFXweL14zTVANO10CGpXyktJjJGtD1XS8=";
hash = "sha256-vjtPVE+n1p5DB+KewhylA9w1kVkpKyDz0WF5Mrd+BBM=";
};
postPatch = ''
@@ -33,15 +33,13 @@ stdenv.mkDerivation (finalAttrs: {
--replace-fail "/app" "$out"
substituteInPlace src/windows/regeneration.rs \
--replace-fail "/app" "$out"
substituteInPlace src/config.rs \
--replace-fail "/app" "$out"
substituteInPlace src/window.rs \
--replace-fail "create_dir" "create_dir_all"
'';
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-/D4l85PO2h+172f8AgQFze665otIeouxEdVL56f+hoM=";
hash = "sha256-Ma+ryvDaFfP3BYrtuPPKMVjF2l83xP+T7GlIiOenRAo=";
};
nativeBuildInputs = [
+102
View File
@@ -0,0 +1,102 @@
{
buildGoModule,
fetchFromGitHub,
lib,
wirelesstools,
makeWrapper,
wireguard-tools,
openvpn,
obfs4,
iproute2,
dnscrypt-proxy,
iptables,
gawk,
util-linux,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "ivpn-service";
version = "3.15.0";
buildInputs = [ wirelesstools ];
nativeBuildInputs = [ makeWrapper ];
src = fetchFromGitHub {
owner = "ivpn";
repo = "desktop-app";
tag = "v${finalAttrs.version}";
hash = "sha256-Y+oW/2WDkH/YydR+xSzEHPdCNKTmmsV4yEsju+OmDYE=";
};
modRoot = "daemon";
vendorHash = "sha256-DVKSCcEeE7vI8aOYuEwk22n0wtF7MMDOyAgYoXYadwI=";
proxyVendor = true; # .c file
patches = [ ./permissions.patch ];
postPatch = ''
substituteInPlace daemon/service/platform/platform_linux.go \
--replace 'openVpnBinaryPath = "/usr/sbin/openvpn"' \
'openVpnBinaryPath = "${openvpn}/bin/openvpn"' \
--replace 'routeCommand = "/sbin/ip route"' \
'routeCommand = "${iproute2}/bin/ip route"'
substituteInPlace daemon/netinfo/netinfo_linux.go \
--replace 'retErr := shell.ExecAndProcessOutput(log, outParse, "", "/sbin/ip", "route")' \
'retErr := shell.ExecAndProcessOutput(log, outParse, "", "${iproute2}/bin/ip", "route")'
substituteInPlace daemon/service/platform/platform_linux_release.go \
--replace 'installDir := "/opt/ivpn"' "installDir := \"$out\"" \
--replace 'obfsproxyStartScript = path.Join(installDir, "obfsproxy/obfs4proxy")' \
'obfsproxyStartScript = "${lib.getExe obfs4}"' \
--replace 'wgBinaryPath = path.Join(installDir, "wireguard-tools/wg-quick")' \
'wgBinaryPath = "${wireguard-tools}/bin/wg-quick"' \
--replace 'wgToolBinaryPath = path.Join(installDir, "wireguard-tools/wg")' \
'wgToolBinaryPath = "${wireguard-tools}/bin/wg"' \
--replace 'dnscryptproxyBinPath = path.Join(installDir, "dnscrypt-proxy/dnscrypt-proxy")' \
'dnscryptproxyBinPath = "${dnscrypt-proxy}/bin/dnscrypt-proxy"'
'';
ldflags = [
"-s"
"-w"
"-X github.com/ivpn/desktop-app/daemon/version._version=${finalAttrs.version}"
"-X github.com/ivpn/desktop-app/daemon/version._time=1970-01-01"
];
postInstall = ''
mv $out/bin/{daemon,ivpn-service}
'';
postFixup = ''
mkdir -p $out/etc
cp -r $src/daemon/References/Linux/etc/* $out/etc/
cp -r $src/daemon/References/common/etc/* $out/etc/
patchShebangs --build $out/etc/firewall.sh $out/etc/splittun.sh $out/etc/client.down $out/etc/client.up
wrapProgram "$out/bin/ivpn-service" \
--suffix PATH : ${
lib.makeBinPath [
iptables
gawk
util-linux
]
}
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Official IVPN Desktop app service daemon";
homepage = "https://www.ivpn.net/apps";
changelog = "https://github.com/ivpn/desktop-app/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
urandom
blenderfreaky
];
mainProgram = "ivpn-service";
};
})
+7 -10
View File
@@ -9,23 +9,20 @@
makeWrapper,
ivpn-service,
}:
let
version = "3.14.34";
in
buildNpmPackage {
buildNpmPackage (finalAttrs: {
pname = "ivpn-ui";
inherit version;
version = "3.15.0";
src = fetchFromGitHub {
owner = "ivpn";
repo = "desktop-app";
tag = "v${version}";
hash = "sha256-Q96G5mJahJnXxpqJ8IF0oFie7l0Nd1p8drHH9NSpwEw=";
tag = "v${finalAttrs.version}";
hash = "sha256-Y+oW/2WDkH/YydR+xSzEHPdCNKTmmsV4yEsju+OmDYE=";
};
sourceRoot = "source/ui";
npmDepsHash = "sha256-y/VxvSZUvcIuckJF87639i5pcVJLg8SDAbWmg5bO3/s=";
npmDepsHash = "sha256-OOBBUDJwTP2T/KqzJPRV+A9ncRmb14KBoAXqa0T6c58=";
nativeBuildInputs = [
copyDesktopItems
@@ -85,9 +82,9 @@ buildNpmPackage {
mainProgram = "ivpn-ui";
homepage = "https://www.ivpn.net";
downloadPage = "https://github.com/ivpn/desktop-app";
changelog = "https://github.com/ivpn/desktop-app/releases/tag/v${version}";
changelog = "https://github.com/ivpn/desktop-app/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ blenderfreaky ];
platforms = [ "x86_64-linux" ];
};
}
})
+50
View File
@@ -0,0 +1,50 @@
{
buildGoModule,
fetchFromGitHub,
lib,
wirelesstools,
nix-update-script,
}:
buildGoModule (finalAttrs: {
pname = "ivpn";
version = "3.15.0";
buildInputs = [ wirelesstools ];
src = fetchFromGitHub {
owner = "ivpn";
repo = "desktop-app";
tag = "v${finalAttrs.version}";
hash = "sha256-Y+oW/2WDkH/YydR+xSzEHPdCNKTmmsV4yEsju+OmDYE=";
};
modRoot = "cli";
vendorHash = "sha256-xZ1tMiv06fE2wtpDagKjHiVTPYWpj32hM6n/v9ZcgrE=";
proxyVendor = true; # .c file
ldflags = [
"-s"
"-w"
"-X github.com/ivpn/desktop-app/daemon/version._version=${finalAttrs.version}"
"-X github.com/ivpn/desktop-app/daemon/version._time=1970-01-01"
];
postInstall = ''
mv $out/bin/{cli,ivpn}
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Official IVPN Desktop app";
homepage = "https://www.ivpn.net/apps";
changelog = "https://github.com/ivpn/desktop-app/releases/tag/v${finalAttrs.version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
urandom
blenderfreaky
];
mainProgram = "ivpn";
};
})
@@ -25,6 +25,12 @@ python3Packages.buildPythonPackage {
substitute '${knot-resolver.unwrapped.config_py}'/knot_resolver/constants.py ./python/knot_resolver/constants.py \
--replace-fail '${knot-resolver.unwrapped.out}/etc' '/etc' \
--replace-fail '${knot-resolver.unwrapped.out}/sbin' '${knot-resolver}/bin'
''
# On non-Linux let's simplify construction of the knot-resolver command line,
# as it would break because of nixpkgs-specific wrapping of python packages.
+ ''
substituteInPlace python/knot_resolver/controller/supervisord/config_file.py \
--replace-fail 'args = [sys.executable] + sys.argv' 'args = sys.argv'
'';
build-system = with python3Packages; [
@@ -42,6 +48,7 @@ python3Packages.buildPythonPackage {
typing-extensions
];
doCheck = python3Packages.stdenv.isLinux; # maybe in future
nativeCheckInputs = with python3Packages; [
augeas
dnspython
@@ -2,6 +2,7 @@
lib,
stdenv,
fetchurl,
fetchpatch,
# native deps.
runCommand,
pkg-config,
@@ -48,6 +49,15 @@ let
"config_py"
];
patches = [
(fetchpatch {
name = "test-cache-aarch64-darwin.patch";
url = "https://gitlab.nic.cz/knot/knot-resolver/-/commit/d155d0dbe408a3327b39f70e122aea6fb2b86684.diff";
excludes = [ "NEWS" ];
hash = "sha256-3w33v8UfhGdA50BlkfHpQLFxg+5ELk0lp7RzgvkSzK8=";
})
];
# Path fixups for the NixOS service.
# systemd Exec* options are difficult to override in NixOS *if present*, so we drop them.
postPatch = ''
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "lego";
version = "4.27.0";
version = "4.29.0";
src = fetchFromGitHub {
owner = "go-acme";
repo = "lego";
tag = "v${version}";
hash = "sha256-mc/aWjYvgF5PSl6Ng9oLNWAlGDjnhzEouo9LXh/PFsE=";
hash = "sha256-czCOrgC3Xy42KigAe+tsPRdWqxgdHFl0KN3Ei2zeyy8=";
};
vendorHash = "sha256-648FrZqSatEYONzj03x8z8pV0WIvfYnIOcxERxYxSPw=";
vendorHash = "sha256-OnCtobizqDrqZTQenRPBTlUHvNx/xX34PYw8K4rgxSk=";
doCheck = false;
+13 -10
View File
@@ -232,8 +232,8 @@ stdenv.mkDerivation (finalAttrs: {
(stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinSdkVersion "12.0")
''
substituteInPlace src/output/plugins/OSXOutputPlugin.cxx \
--replace kAudioObjectPropertyElement{Main,Master} \
--replace kAudioHardwareServiceDeviceProperty_Virtual{Main,Master}Volume
--replace-fail kAudioObjectPropertyElement{Main,Master} \
--replace-fail kAudioHardwareServiceDeviceProperty_Virtual{Main,Master}Volume
''
+
lib.optionalString
@@ -262,17 +262,19 @@ stdenv.mkDerivation (finalAttrs: {
];
mesonFlags = [
"-Dtest=true"
"-Dmanpages=true"
"-Dhtml_manual=true"
(lib.mesonBool "test" true)
(lib.mesonBool "manpages" true)
(lib.mesonBool "html_manual" true)
]
++ map (x: "-D${x}=enabled") features_
++ map (x: "-D${x}=disabled") (lib.subtractLists features_ knownFeatures)
++ map (x: lib.mesonEnable x true) features_
++ map (x: lib.mesonEnable x false) (lib.subtractLists features_ knownFeatures)
++ lib.optional (builtins.elem "zeroconf" features_) (
"-Dzeroconf=" + (if stdenv.hostPlatform.isDarwin then "bonjour" else "avahi")
lib.mesonOption "zeroconf" (if stdenv.hostPlatform.isDarwin then "bonjour" else "avahi")
)
++ lib.optional (builtins.elem "systemd" features_) "-Dsystemd_system_unit_dir=etc/systemd/system"
++ lib.optional (builtins.elem "qobuz" features_) "-Dnlohmann_json=enabled";
++ lib.optional (builtins.elem "systemd" features_) (
lib.mesonOption "systemd_system_unit_dir" "etc/systemd/system"
)
++ lib.optional (builtins.elem "qobuz" features_) (lib.mesonEnable "nlohmann_json" true);
passthru.tests.nixos = nixosTests.mpd;
@@ -282,6 +284,7 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [
tobim
doronbehar
];
platforms = lib.platforms.unix;
mainProgram = "mpd";
+9 -4
View File
@@ -5,6 +5,7 @@
acl,
autoreconfHook,
avahi,
bstring,
db,
libevent,
libgcrypt,
@@ -28,11 +29,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "netatalk";
version = "4.2.4";
version = "4.3.2";
src = fetchurl {
url = "mirror://sourceforge/netatalk/netatalk/netatalk-${finalAttrs.version}.tar.xz";
hash = "sha256-Twe74RipUd10DT9RqHtcr7oklr0LIucEQ49CGqZnD5k=";
hash = "sha256-KXe0/RExgvDMGDM3uiPVcB+yvk4N/Ox+5XW01zpzjTo=";
};
nativeBuildInputs = [
@@ -45,6 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
acl
avahi
bstring
db
libevent
libgcrypt
@@ -69,7 +71,7 @@ stdenv.mkDerivation (finalAttrs: {
"-Dwith-bdb-include-path=${db.dev}/include"
"-Dwith-install-hooks=false"
"-Dwith-init-hooks=false"
"-Dwith-lockfile-path=/run/lock/"
"-Dwith-lockfile-path=/run/lock"
"-Dwith-cracklib=true"
"-Dwith-cracklib-path=${cracklib.out}"
"-Dwith-statedir-creation=false"
@@ -82,6 +84,9 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://netatalk.io/";
license = lib.licenses.gpl2Plus;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ jcumming ];
maintainers = with lib.maintainers; [
jcumming
nulleric
];
};
})
+2 -2
View File
@@ -64,11 +64,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "networkmanager";
version = "1.54.1";
version = "1.54.3";
src = fetchurl {
url = "https://gitlab.freedesktop.org/NetworkManager/NetworkManager/-/releases/${finalAttrs.version}/downloads/NetworkManager-${finalAttrs.version}.tar.xz";
hash = "sha256-APPwvhKsTUhY6/FSQwuS3vFXSAP/YQf378dkoFbUxMc=";
hash = "sha256-z0/vw76WgCxaTas+aQvcTOTHglGVTvChtlAm2IZwmYk=";
};
outputs = [
+3 -3
View File
@@ -14,16 +14,16 @@ assert
buildGoModule rec {
pname = "opa-envoy-plugin";
version = "1.10.0-envoy";
version = "1.11.0-envoy";
src = fetchFromGitHub {
owner = "open-policy-agent";
repo = "opa-envoy-plugin";
tag = "v${version}";
hash = "sha256-qKLeSpVy/ImeJ2WPLa3uQSHA/6Y4Visb9lgC4PkURkI=";
hash = "sha256-BYNwr4smlY5evtja1CdCeVzKZIY0pFjiJwwhWOFHIm0=";
};
vendorHash = "sha256-l/0IaHz1wTNqX/Im8g0fjTqVOtMHSdqSpl0Oo1ByyxA=";
vendorHash = "sha256-wwXl115vhqUro5yhaMmlR8ms/uJMhFw9IzsX9mGRy+0=";
nativeBuildInputs = [ installShellFiles ];
+2 -2
View File
@@ -5,6 +5,7 @@
pkg-config,
installShellFiles,
buildGoModule,
buildPackages,
gpgme,
lvm2,
btrfs-progs,
@@ -12,7 +13,6 @@
libseccomp,
libselinux,
systemdMinimal,
go-md2man,
nixosTests,
python3,
makeBinaryWrapper,
@@ -71,7 +71,6 @@ buildGoModule (finalAttrs: {
nativeBuildInputs = [
pkg-config
go-md2man
installShellFiles
makeBinaryWrapper
python3
@@ -90,6 +89,7 @@ buildGoModule (finalAttrs: {
env = {
HELPER_BINARIES_DIR = "${placeholder "out"}/libexec/podman"; # used in buildPhase & installPhase
PREFIX = "${placeholder "out"}";
GOMD2MAN = "${buildPackages.go-md2man}/bin/go-md2man";
};
buildPhase = ''
+2 -2
View File
@@ -116,10 +116,10 @@ stdenv.mkDerivation rec {
(python3.pythonOnBuildForHost.withPackages (
pp: with pp; [
dbus-python
(python-dbusmock.overridePythonAttrs (attrs: {
(python-dbusmock.override {
# Avoid dependency cycle.
doCheck = false;
}))
})
]
))
];
+4 -4
View File
@@ -22,7 +22,7 @@
}:
let
pname = "positron-bin";
version = "2025.12.0-167";
version = "2025.12.1-4";
in
stdenv.mkDerivation {
inherit version pname;
@@ -31,17 +31,17 @@ stdenv.mkDerivation {
if stdenv.hostPlatform.isDarwin then
fetchurl {
url = "https://cdn.posit.co/positron/releases/mac/universal/Positron-${version}-universal.dmg";
hash = "sha256-GrABm5PJFZ1ugb4Lj3y/Ynnt/RTkY0DMk3GZKqVAlk0=";
hash = "sha256-9T0ae4m60TZkGUzJscZ1HTAbaw7y0Boi8EDy7HTt5+s=";
}
else if stdenv.hostPlatform.system == "aarch64-linux" then
fetchurl {
url = "https://cdn.posit.co/positron/releases/deb/arm64/Positron-${version}-arm64.deb";
hash = "sha256-WP8ULCMY268av8W0Op0j6P6ry8MwTjNsjV1iJV50wTg=";
hash = "sha256-dH1bV1iX7ISYGcfPg8y7itoYF8y2ApHs9kcSUIDnZUw=";
}
else
fetchurl {
url = "https://cdn.posit.co/positron/releases/deb/x86_64/Positron-${version}-x64.deb";
hash = "sha256-3Z4mRN5WOV0wj51TzoyC0wfU1Zu6wEAb1gTH5IFQRIg=";
hash = "sha256-MurH+NEIejOHp3h69buyb/1MAxnOJ7KkU9mWJVTN5Xw=";
};
buildInputs = [
+4 -4
View File
@@ -11,12 +11,12 @@
}:
buildGoModule (finalAttrs: {
pname = "qui";
version = "1.9.1";
version = "1.10.0";
src = fetchFromGitHub {
owner = "autobrr";
repo = "qui";
tag = "v${finalAttrs.version}";
hash = "sha256-PcJl9nxHPWv17AqtEok0qHhrTQ1WInUKAtxrxoSeMSw=";
hash = "sha256-aGCEv/HX2XYhtJqWtLHKjsBIy8WYOwezxGQxfF6lu0M=";
};
qui-web = stdenvNoCC.mkDerivation (finalAttrs': {
@@ -39,7 +39,7 @@ buildGoModule (finalAttrs: {
sourceRoot
;
fetcherVersion = 2;
hash = "sha256-bDaMax5RS+ot6vaJmNJm6p4gFaCD9aslJXI/58ua9DI=";
hash = "sha256-6brOEC1UAxjIZB4pujhA624jKTTxfZQiiz/PzqooPeA=";
};
postBuild = ''
@@ -51,7 +51,7 @@ buildGoModule (finalAttrs: {
'';
});
vendorHash = "sha256-UF6V737MF2la24oW8oPp+0N8nv0uEykMrTbzvx/gtec=";
vendorHash = "sha256-EJ26MqXxdV9m5reqWAYTXwuHLMbf2l1J3667e1FEv7A=";
preBuild = ''
cp -r ${finalAttrs.qui-web}/* web/dist
+2 -2
View File
@@ -6,10 +6,10 @@
}:
let
pname = "remnote";
version = "1.22.28";
version = "1.22.31";
src = fetchurl {
url = "https://download2.remnote.io/remnote-desktop2/RemNote-${version}.AppImage";
hash = "sha256-suYd2IK/lwPd0sEoRmKPydgyExX5aRNyBLikubBmMpI=";
hash = "sha256-P2kjlskK+rrLWHMebt2UcbE0mJDOEa/OnAuRQGODkSA=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
+13 -3
View File
@@ -2,7 +2,17 @@
fetchFromGitHub,
nix-update-script,
renode,
lib,
}:
let
normalizedVersion =
v:
let
parts = lib.splitString "-" v;
result = builtins.head parts;
in
result;
in
renode.overrideAttrs (old: rec {
pname = "renode-unstable";
version = "1.16.0-unstable-2025-08-08";
@@ -16,9 +26,9 @@ renode.overrideAttrs (old: rec {
};
prePatch = ''
substituteInPlace tools/building/createAssemblyInfo.sh \
--replace CURRENT_INFORMATIONAL_VERSION="`git rev-parse --short=8 HEAD`" \
CURRENT_INFORMATIONAL_VERSION="${builtins.substring 0 8 src.rev}"
sed -i 's/AssemblyVersion("%VERSION%.*")/AssemblyVersion("${normalizedVersion version}.0")/g' src/Renode/Properties/AssemblyInfo.template
sed -i 's/AssemblyInformationalVersion("%INFORMATIONAL_VERSION%")/AssemblyInformationalVersion("${src.rev}")/g' src/Renode/Properties/AssemblyInfo.template
mv src/Renode/Properties/AssemblyInfo.template src/Renode/Properties/AssemblyInfo.cs
'';
passthru = old.passthru // {
+177 -72
View File
@@ -129,6 +129,11 @@
"version": "4.5.0",
"hash": "sha256-dAhj/CgXG5VIy2dop1xplUsLje7uBPFjxasz9rdFIgY="
},
{
"pname": "Microsoft.CSharp",
"version": "4.6.0",
"hash": "sha256-16OdEKbPLxh+jLYS4cOiGRX/oU6nv3KMF4h5WnZAsHs="
},
{
"pname": "Microsoft.CSharp",
"version": "4.7.0",
@@ -139,11 +144,6 @@
"version": "1.0.0",
"hash": "sha256-HX3iOXH75I1L7eNihCbMNDDpcotfZpfQUdqdRTGM6FY="
},
{
"pname": "Microsoft.Extensions.ObjectPool",
"version": "5.0.10",
"hash": "sha256-tAjiU3w0hdPAGUitszxZ6jtEilRn977MY7N5eZMx0x0="
},
{
"pname": "Microsoft.Extensions.ObjectPool",
"version": "6.0.16",
@@ -244,11 +244,6 @@
"version": "4.4.0",
"hash": "sha256-ZumsykAAIYKmVtP4QI5kZ0J10n2zcOZZ69PmAK0SEiE="
},
{
"pname": "Microsoft.Win32.SystemEvents",
"version": "4.7.0",
"hash": "sha256-GHxnD1Plb32GJWVWSv0Y51Kgtlb+cdKgOYVBYZSgVF4="
},
{
"pname": "Microsoft.Win32.SystemEvents",
"version": "5.0.0",
@@ -286,13 +281,13 @@
},
{
"pname": "NETStandard.Library",
"version": "2.0.0",
"hash": "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0="
"version": "1.6.1",
"hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw="
},
{
"pname": "NETStandard.Library",
"version": "2.0.3",
"hash": "sha256-Prh2RPebz/s8AzHb2sPHg3Jl8s31inv9k+Qxd293ybo="
"version": "2.0.0",
"hash": "sha256-Pp7fRylai8JrE1O+9TGfIEJrAOmnWTJRLWE+qJBahK0="
},
{
"pname": "Newtonsoft.Json",
@@ -339,6 +334,11 @@
"version": "4.3.0",
"hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU="
},
{
"pname": "runtime.any.System.Globalization.Calendars",
"version": "4.3.0",
"hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4="
},
{
"pname": "runtime.any.System.IO",
"version": "4.3.0",
@@ -394,6 +394,11 @@
"version": "4.3.0",
"hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4="
},
{
"pname": "runtime.any.System.Threading.Timer",
"version": "4.3.0",
"hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs="
},
{
"pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
@@ -414,6 +419,21 @@
"version": "4.3.0",
"hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y="
},
{
"pname": "runtime.native.System.IO.Compression",
"version": "4.3.0",
"hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8="
},
{
"pname": "runtime.native.System.Net.Http",
"version": "4.3.0",
"hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg="
},
{
"pname": "runtime.native.System.Security.Cryptography.Apple",
"version": "4.3.0",
"hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw="
},
{
"pname": "runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
@@ -429,6 +449,11 @@
"version": "4.3.0",
"hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple",
"version": "4.3.0",
"hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM="
},
{
"pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
@@ -459,6 +484,11 @@
"version": "4.3.0",
"hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg="
},
{
"pname": "runtime.unix.System.Console",
"version": "4.3.0",
"hash": "sha256-AHkdKShTRHttqfMjmi+lPpTuCrM5vd/WRy6Kbtie190="
},
{
"pname": "runtime.unix.System.Diagnostics.Debug",
"version": "4.3.0",
@@ -469,6 +499,16 @@
"version": "4.3.0",
"hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I="
},
{
"pname": "runtime.unix.System.Net.Primitives",
"version": "4.3.0",
"hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0="
},
{
"pname": "runtime.unix.System.Net.Sockets",
"version": "4.3.0",
"hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4="
},
{
"pname": "runtime.unix.System.Private.Uri",
"version": "4.3.0",
@@ -489,20 +529,20 @@
"version": "4.1.0",
"hash": "sha256-v6YfyfrKmhww+EYHUq6cwYUMj00MQ6SOfJtcGVRlYzs="
},
{
"pname": "System.AppContext",
"version": "4.3.0",
"hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg="
},
{
"pname": "System.Buffers",
"version": "4.3.0",
"hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk="
},
{
"pname": "System.Buffers",
"version": "4.5.1",
"hash": "sha256-wws90sfi9M7kuCPWkv1CEYMJtCqx9QB/kj0ymlsNaxI="
},
{
"pname": "System.CodeDom",
"version": "6.0.0",
"hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ="
"version": "8.0.0",
"hash": "sha256-uwVhi3xcvX7eiOGQi7dRETk3Qx1EfHsUfchZsEto338="
},
{
"pname": "System.Collections",
@@ -514,6 +554,11 @@
"version": "4.3.0",
"hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc="
},
{
"pname": "System.Collections.Concurrent",
"version": "4.3.0",
"hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI="
},
{
"pname": "System.Collections.Immutable",
"version": "5.0.0",
@@ -579,6 +624,11 @@
"version": "1.0.31",
"hash": "sha256-w9ApcUJr7jYP4Vf5+efIIqoWmr5v9R56W4uC0n8KktQ="
},
{
"pname": "System.Console",
"version": "4.3.0",
"hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo="
},
{
"pname": "System.Diagnostics.Debug",
"version": "4.0.11",
@@ -589,6 +639,11 @@
"version": "4.3.0",
"hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM="
},
{
"pname": "System.Diagnostics.DiagnosticSource",
"version": "4.3.0",
"hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw="
},
{
"pname": "System.Diagnostics.EventLog",
"version": "6.0.0",
@@ -619,11 +674,6 @@
"version": "4.7.0",
"hash": "sha256-D3qG+xAe78lZHvlco9gHK2TEAM370k09c6+SQi873Hk="
},
{
"pname": "System.Drawing.Common",
"version": "5.0.0",
"hash": "sha256-8PgFBZ3Agd+UI9IMxr4fRIW8IA1hqCl15nqlLTJETzk="
},
{
"pname": "System.Drawing.Common",
"version": "5.0.3",
@@ -634,11 +684,6 @@
"version": "4.0.11",
"hash": "sha256-qWqFVxuXioesVftv2RVJZOnmojUvRjb7cS3Oh3oTit4="
},
{
"pname": "System.Formats.Asn1",
"version": "5.0.0",
"hash": "sha256-9nL3dN4w/dZ49W1pCkTjRqZm6Dh0mMVExNungcBHrKs="
},
{
"pname": "System.Formats.Asn1",
"version": "6.0.0",
@@ -654,6 +699,11 @@
"version": "4.3.0",
"hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI="
},
{
"pname": "System.Globalization.Calendars",
"version": "4.3.0",
"hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc="
},
{
"pname": "System.Globalization.Extensions",
"version": "4.3.0",
@@ -669,6 +719,16 @@
"version": "4.3.0",
"hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY="
},
{
"pname": "System.IO.Compression",
"version": "4.3.0",
"hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA="
},
{
"pname": "System.IO.Compression.ZipFile",
"version": "4.3.0",
"hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs="
},
{
"pname": "System.IO.FileSystem",
"version": "4.0.1",
@@ -720,9 +780,24 @@
"hash": "sha256-3sCEfzO4gj5CYGctl9ZXQRRhwAraMQfse7yzKoRe65E="
},
{
"pname": "System.Numerics.Vectors",
"version": "4.4.0",
"hash": "sha256-auXQK2flL/JpnB/rEcAcUm4vYMCYMEMiWOCAlIaqu2U="
"pname": "System.Net.Http",
"version": "4.3.0",
"hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q="
},
{
"pname": "System.Net.NameResolution",
"version": "4.3.0",
"hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c="
},
{
"pname": "System.Net.Primitives",
"version": "4.3.0",
"hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE="
},
{
"pname": "System.Net.Sockets",
"version": "4.3.0",
"hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus="
},
{
"pname": "System.Numerics.Vectors",
@@ -871,8 +946,8 @@
},
{
"pname": "System.Runtime.CompilerServices.Unsafe",
"version": "4.5.3",
"hash": "sha256-lnZMUqRO4RYRUeSO8HSJ9yBHqFHLVbmenwHWkIU20ak="
"version": "4.5.2",
"hash": "sha256-8eUXXGWO2LL7uATMZye2iCpQOETn2jCcjUhG6coR5O8="
},
{
"pname": "System.Runtime.CompilerServices.Unsafe",
@@ -909,11 +984,21 @@
"version": "4.3.0",
"hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI="
},
{
"pname": "System.Runtime.InteropServices.RuntimeInformation",
"version": "4.0.0",
"hash": "sha256-5j53amb76A3SPiE3B0llT2XPx058+CgE7OXL4bLalT4="
},
{
"pname": "System.Runtime.InteropServices.RuntimeInformation",
"version": "4.3.0",
"hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA="
},
{
"pname": "System.Runtime.Numerics",
"version": "4.3.0",
"hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc="
},
{
"pname": "System.Runtime.Serialization.Primitives",
"version": "4.1.1",
@@ -929,16 +1014,26 @@
"version": "4.7.0",
"hash": "sha256-/9ZCPIHLdhzq7OW4UKqTsR0O93jjHd6BRG1SRwgHE1g="
},
{
"pname": "System.Security.AccessControl",
"version": "5.0.0",
"hash": "sha256-ueSG+Yn82evxyGBnE49N4D+ngODDXgornlBtQ3Omw54="
},
{
"pname": "System.Security.AccessControl",
"version": "6.0.0",
"hash": "sha256-qOyWEBbNr3EjyS+etFG8/zMbuPjA+O+di717JP9Cxyg="
},
{
"pname": "System.Security.Claims",
"version": "4.3.0",
"hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks="
},
{
"pname": "System.Security.Cryptography.Algorithms",
"version": "4.3.0",
"hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8="
},
{
"pname": "System.Security.Cryptography.Cng",
"version": "4.3.0",
"hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw="
},
{
"pname": "System.Security.Cryptography.Cng",
"version": "4.5.0",
@@ -950,35 +1045,45 @@
"hash": "sha256-MvVSJhAojDIvrpuyFmcSVRSZPl3dRYOI9hSptbA+6QA="
},
{
"pname": "System.Security.Cryptography.Cng",
"version": "5.0.0",
"hash": "sha256-nOJP3vdmQaYA07TI373OvZX6uWshETipvi5KpL7oExo="
"pname": "System.Security.Cryptography.Csp",
"version": "4.3.0",
"hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ="
},
{
"pname": "System.Security.Cryptography.Encoding",
"version": "4.3.0",
"hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss="
},
{
"pname": "System.Security.Cryptography.OpenSsl",
"version": "4.3.0",
"hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4="
},
{
"pname": "System.Security.Cryptography.Pkcs",
"version": "4.7.0",
"hash": "sha256-lZMmOxtg5d7Oyoof8p6awVALUsYQstc2mBNNrQr9m9c="
},
{
"pname": "System.Security.Cryptography.Pkcs",
"version": "5.0.0",
"hash": "sha256-kq/tvYQSa24mKSvikFK2fKUAnexSL4PO4LkPppqtYkE="
},
{
"pname": "System.Security.Cryptography.Pkcs",
"version": "6.0.1",
"hash": "sha256-OJ4NJ8E/8l86aR+Hsw+k/7II63Y/zPS+MgC+UfeCXHM="
},
{
"pname": "System.Security.Cryptography.Primitives",
"version": "4.3.0",
"hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318="
},
{
"pname": "System.Security.Cryptography.X509Certificates",
"version": "4.3.0",
"hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0="
},
{
"pname": "System.Security.Cryptography.Xml",
"version": "4.7.0",
"hash": "sha256-67k24CjNisMJUtnyWb08V/t7mBns+pxLyNhBG5YXiCE="
},
{
"pname": "System.Security.Cryptography.Xml",
"version": "5.0.0",
"hash": "sha256-0LyU7KmpFRFZFCugAgDnp93Unw3rL4hFSqx6GNqov9o="
},
{
"pname": "System.Security.Cryptography.Xml",
"version": "6.0.1",
@@ -995,9 +1100,14 @@
"hash": "sha256-BGgXMLUi5rxVmmChjIhcXUxisJjvlNToXlyaIbUxw40="
},
{
"pname": "System.Security.Permissions",
"version": "5.0.0",
"hash": "sha256-BI1Js3L4R32UkKOLMTAVpXzGlQ27m+oaYHSV3J+iQfc="
"pname": "System.Security.Principal",
"version": "4.3.0",
"hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk="
},
{
"pname": "System.Security.Principal.Windows",
"version": "4.3.0",
"hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE="
},
{
"pname": "System.Security.Principal.Windows",
@@ -1009,11 +1119,6 @@
"version": "4.7.0",
"hash": "sha256-rWBM2U8Kq3rEdaa1MPZSYOOkbtMGgWyB8iPrpIqmpqg="
},
{
"pname": "System.Security.Principal.Windows",
"version": "5.0.0",
"hash": "sha256-CBOQwl9veFkrKK2oU8JFFEiKIh/p+aJO+q9Tc2Q/89Y="
},
{
"pname": "System.ServiceModel.Duplex",
"version": "4.8.1",
@@ -1119,11 +1224,6 @@
"version": "4.3.0",
"hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w="
},
{
"pname": "System.Threading.Tasks.Extensions",
"version": "4.0.0",
"hash": "sha256-+YdcPkMhZhRbMZHnfsDwpNbUkr31X7pQFGxXYcAPZbE="
},
{
"pname": "System.Threading.Tasks.Extensions",
"version": "4.3.0",
@@ -1144,6 +1244,11 @@
"version": "4.3.0",
"hash": "sha256-wW0QdvssRoaOfQLazTGSnwYTurE4R8FxDx70pYkL+gg="
},
{
"pname": "System.Threading.Timer",
"version": "4.3.0",
"hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s="
},
{
"pname": "System.ValueTuple",
"version": "4.5.0",
@@ -1154,11 +1259,6 @@
"version": "4.7.0",
"hash": "sha256-yW+GvQranReaqPw5ZFv+mSjByQ5y1pRLl05JIEf3tYU="
},
{
"pname": "System.Windows.Extensions",
"version": "5.0.0",
"hash": "sha256-fzWnaRBCDuoq3hQsGIi0PvCEJN7yGaaJvlU6pq4052A="
},
{
"pname": "System.Xml.ReaderWriter",
"version": "4.0.11",
@@ -1174,6 +1274,11 @@
"version": "4.0.11",
"hash": "sha256-KPz1kxe0RUBM+aoktJ/f9p51GudMERU8Pmwm//HdlFg="
},
{
"pname": "System.Xml.XDocument",
"version": "4.3.0",
"hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI="
},
{
"pname": "System.Xml.XmlDocument",
"version": "4.3.0",
+8 -17
View File
@@ -2,8 +2,7 @@
buildDotnetModule,
cmake,
dconf,
dotnet-runtime_8,
dotnet-sdk_6,
dotnetCorePackages,
fetchFromGitHub,
fetchpatch,
gcc,
@@ -23,13 +22,6 @@ let
rev = "d3d69f8f17ed164ee23e46f0c06844a69bf4c004";
hash = "sha256-wR3heL58NOQLENwCzL4lPM4KuvT/ON7dlc/KUqrlRjg=";
};
assemblyVersion =
s:
let
part = lib.strings.splitString "-" s;
result = builtins.head part;
in
result;
pythonLibs =
with python3Packages;
@@ -79,17 +71,18 @@ buildDotnetModule rec {
projectFile = "Renode_NET.sln";
dotnet-runtime = dotnet-runtime_8;
dotnet-sdk = dotnet-sdk_6;
dotnet-sdk = dotnetCorePackages.sdk_9_0;
nugetDeps = ./deps.json;
patches = [ ./renode-test.patch ];
dotnetFlags = [ "-p:TargetFrameworks=net9.0" ];
prePatch = ''
substituteInPlace tools/building/createAssemblyInfo.sh \
--replace CURRENT_INFORMATIONAL_VERSION="`git rev-parse --short=8 HEAD`" \
CURRENT_INFORMATIONAL_VERSION="${builtins.substring 0 8 src.rev}"
sed -i 's/AssemblyVersion("%VERSION%.*")/AssemblyVersion("${version}.0")/g' src/Renode/Properties/AssemblyInfo.template
sed -i 's/AssemblyInformationalVersion("%INFORMATIONAL_VERSION%")/AssemblyInformationalVersion("${src.rev}")/g' src/Renode/Properties/AssemblyInfo.template
mv src/Renode/Properties/AssemblyInfo.template src/Renode/Properties/AssemblyInfo.cs
'';
postPatch = ''
@@ -105,7 +98,6 @@ buildDotnetModule rec {
patchShebangs build.sh tools/
# Fixes determinism build error
sed -i 's/AssemblyVersion("%VERSION%.*")/AssemblyVersion("${assemblyVersion version}")/g' src/Renode/Properties/AssemblyInfo.template
sed -i 's/AssemblyVersion("1.0.*")/AssemblyVersion("1.0.0.0")/g' lib/AntShell/AntShell/Properties/AssemblyInfo.cs lib/CxxDemangler/CxxDemangler/Properties/AssemblyInfo.cs
'';
@@ -117,7 +109,6 @@ buildDotnetModule rec {
cmake
gcc
];
runtimeDeps = [
gtk3
mono
@@ -169,7 +160,7 @@ buildDotnetModule rec {
ln -s $out/lib/*.so src/Infrastructure/src/Emulator/Cores/bin/Release/lib
'';
dotnetInstallFlags = [ "-p:TargetFramework=net6.0" ];
dotnetInstallFlags = [ "-p:TargetFramework=net9.0" ];
postInstall = ''
mkdir -p $out/lib/renode
+1 -2
View File
@@ -1,5 +1,4 @@
{
"flutter_secure_storage_linux": "sha256-cFNHW7dAaX8BV7arwbn68GgkkBeiAgPfhMOAFSJWlyY=",
"receive_sharing_intent": "sha256-8D5ZENARPZ7FGrdIErxOoV3Ao35/XoQ2tleegI42ZUY=",
"yaru": "sha256-1sx2jtU6TXtzdGQn14dGZUszxqRBAEJkuEM5mDG7cR4="
"receive_sharing_intent": "sha256-8D5ZENARPZ7FGrdIErxOoV3Ao35/XoQ2tleegI42ZUY="
}
+4 -4
View File
@@ -1,6 +1,6 @@
{
lib,
flutter335,
flutter338,
fetchFromGitHub,
gst_all_1,
libunwind,
@@ -24,16 +24,16 @@ let
ln -s ${zlib}/lib $out/lib
'';
version = "0.26.10";
version = "1.29.1";
src = fetchFromGitHub {
owner = "saber-notes";
repo = "saber";
tag = "v${version}";
hash = "sha256-PmkhIyRbRWp+ZujP8R1/h7NpKwYsaKx4JtYIikZjVzc=";
hash = "sha256-+hqZQQtuNsyAIUKb0fydSnRTqc8EGVxWRtGubccsK2w=";
};
in
flutter335.buildFlutterApplication {
flutter338.buildFlutterApplication {
pname = "saber";
inherit version src;
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -10,14 +10,14 @@
python3Packages.buildPythonApplication rec {
pname = "snakemake";
version = "9.14.1";
version = "9.14.4";
pyproject = true;
src = fetchFromGitHub {
owner = "snakemake";
repo = "snakemake";
tag = "v${version}";
hash = "sha256-yRnoo6vaq2Gw+/WJ3Jjk4AMnj0OPylgPI2lezCzK/B4=";
hash = "sha256-r8Fz0ZOGZbkQ5x5oarxkxzGMYSuh15N4RYlZZxPwPA0=";
};
postPatch = ''
+3 -3
View File
@@ -18,13 +18,13 @@
stdenv.mkDerivation {
pname = "solanum";
version = "0-unstable-2025-10-23";
version = "0-unstable-2025-12-10";
src = fetchFromGitHub {
owner = "solanum-ircd";
repo = "solanum";
rev = "4544f823127c59951c7695f0f260128ee0691a67";
hash = "sha256-x+i4LUImepwIz5H13W5eNYl9GzgFvNGS1OSLVtl9qmE=";
rev = "b58ba9b980389b064c67fa42052a66508db73b40";
hash = "sha256-FAT1k9ETN4TozWhXSLWQ7SpvqQ0j/G/uEL0ErYFs8B8=";
};
patches = [
+3 -4
View File
@@ -25,7 +25,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "sparkle";
version = "1.6.12";
version = "1.6.15";
src =
let
@@ -40,8 +40,8 @@ stdenv.mkDerivation (finalAttrs: {
fetchurl {
url = "https://github.com/xishang0128/sparkle/releases/download/${finalAttrs.version}/sparkle-linux-${finalAttrs.version}-${arch}.deb";
hash = selectSystem {
x86_64-linux = "sha256-jExqA15faSvkjXMAvKMwDwsdBjijG3hOyf0j1J7jH/A=";
aarch64-linux = "sha256-1hZa5Dr+Fh9vc+066TNcvgH44Lgx5sebvMKSO+bh9B4=";
x86_64-linux = "sha256-6WGMFmsUr/17lxZd+Q2Ellgs8ftn2YRb/lwmSR7uqLE=";
aarch64-linux = "sha256-lo19xwSqNgTxBxZuNIV7cq2qE93xtbxnsn7K3vROmrc=";
};
};
@@ -81,7 +81,6 @@ stdenv.mkDerivation (finalAttrs: {
runHook preInstall
mkdir -p $out/bin
chmod 0755 opt/sparkle/resources/files/sysproxy
cp -r opt $out/opt
substituteInPlace usr/share/applications/sparkle.desktop \
--replace-fail "/opt/sparkle/sparkle" "sparkle"
+6 -3
View File
@@ -42,13 +42,13 @@ in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "sqlpage";
version = "0.39.0";
version = "0.40.0";
src = fetchFromGitHub {
owner = "lovasoa";
repo = "SQLpage";
tag = "v${finalAttrs.version}";
hash = "sha256-M9WtpDc067G/EfRTJBoDxBrdXRMqOwVTdGgyXSdHlhE=";
hash = "sha256-CmsAImnySdXlPQGWNMkPYhVj0HsvCzFB2LXeqFnjWG4=";
};
postPatch = ''
@@ -71,9 +71,12 @@ rustPlatform.buildRustPackage (finalAttrs: {
substituteInPlace sqlpage/tomselect.js \
--replace-fail '/* !include https://cdn.jsdelivr.net/npm/tom-select@2.4.1/dist/js/tom-select.popular.min.js */' \
"$(cat ${tomselect})"
substituteInPlace build.rs \
--replace-fail "https://cdn.jsdelivr.net/npm/@tabler/icons-sprite@3.35.0/dist/tabler-sprite.svg" "${tablerIcons}" \
--replace-fail "copy_url_to_opened_file(&client, sprite_url, &mut sprite_content).await;" "sprite_content = std::fs::read(sprite_url).unwrap();"
'';
cargoHash = "sha256-lUQ1j2f/LXpqpb6VK4Bq2NI0L9KoyEdlPkENMOKkt0w=";
cargoHash = "sha256-CTJYFzSOLYFq7I9lJhD3JcO2PuqQjqtXnBCEk2VfLfI=";
nativeBuildInputs = [ pkg-config ];
+2 -2
View File
@@ -18,13 +18,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "vencord";
version = "1.13.8";
version = "1.13.9";
src = fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
tag = "v${finalAttrs.version}";
hash = "sha256-qVR5LcRWuh5KUoK0VRTpjEK3Er8VNjb71NP5G3RSDQM=";
hash = "sha256-AvwYAsc/dozSfIGPcsySAqOa47jg6bXvHj53eVsjYiM=";
};
patches = [ ./fix-deps.patch ];
+3 -3
View File
@@ -25,11 +25,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "xmind";
version = "25.07.03033-202507241842";
version = "26.01.03145-202510170359";
src = fetchurl {
url = "https://dl3.xmind.app/Xmind-for-Linux-amd64bit-${finalAttrs.version}.deb";
hash = "sha256-ZD5sFILeMgyO+jV+oArGqqDogW33JE8y49KkclEUHzE=";
hash = "sha256-h7qxDf219+t8oAk8IABs7MyasNd3K/PAM6a79kyaLdw=";
};
nativeBuildInputs = [
@@ -95,7 +95,7 @@ stdenv.mkDerivation (finalAttrs: {
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
mainProgram = "xmind";
license = lib.licenses.unfree;
platforms = lib.platforms.linux;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ michalrus ];
};
})
+17 -19
View File
@@ -1,31 +1,28 @@
{
lib,
flutter335,
python3,
python3Packages,
fetchFromGitHub,
pcre2,
libnotify,
libappindicator,
pkg-config,
gnome-screenshot,
makeWrapper,
removeReferencesTo,
runCommand,
yq,
yubioath-flutter,
yq-go,
_experimental-update-script-combinators,
gitUpdater,
nix-update-script,
}:
flutter335.buildFlutterApplication rec {
pname = "yubioath-flutter";
version = "7.3.0";
version = "7.3.1";
src = fetchFromGitHub {
owner = "Yubico";
repo = "yubioath-flutter";
tag = version;
hash = "sha256-1Hr8ZDHXiLiYfQg4PEpmIuIJR/USbsGCgI4YZSex2Eg=";
hash = "sha256-jfWLj5pN1NGfnmYQ0lYeKwlc0v7pCdvAjmmWX5GP7aM=";
};
pubspecLock = lib.importJSON ./pubspec.lock.json;
@@ -39,11 +36,7 @@ flutter335.buildFlutterApplication rec {
--replace-fail "../build/linux/helper" "${passthru.helper}/libexec/helper"
'';
nativeBuildInputs = [
makeWrapper
removeReferencesTo
pkg-config
];
nativeBuildInputs = [ removeReferencesTo ];
buildInputs = [
pcre2
@@ -86,19 +79,24 @@ flutter335.buildFlutterApplication rec {
'';
passthru = {
helper = python3.pkgs.callPackage ./helper.nix { inherit src version meta; };
helper = python3Packages.callPackage ./helper.nix { inherit src version meta; };
pubspecSource =
runCommand "pubspec.lock.json"
{
nativeBuildInputs = [ yq ];
inherit (yubioath-flutter) src;
inherit src;
nativeBuildInputs = [ yq-go ];
}
''
cat $src/pubspec.lock | yq > $out
yq eval --output-format=json --prettyPrint $src/pubspec.lock > "$out"
'';
updateScript = _experimental-update-script-combinators.sequence [
(gitUpdater { })
(_experimental-update-script-combinators.copyAttrOutputToFile "yubioath-flutter.pubspecSource" ./pubspec.lock.json)
(nix-update-script { extraArgs = [ "--use-github-releases" ]; })
(
(_experimental-update-script-combinators.copyAttrOutputToFile "yubioath-flutter.pubspecSource" ./pubspec.lock.json)
// {
supportedFeatures = [ ];
}
)
];
};
@@ -2,6 +2,7 @@
lib,
fetchFromGitLab,
cpio,
cups,
ddcutil,
easyeffects,
gjs,
@@ -184,6 +185,14 @@ lib.trivial.pipe super [
}
))
(patchExtension "printers@linux-man.org" (old: {
patches = [
(replaceVars ./extensionOverridesPatches/printers_at_linux-man.org.patch {
inherit cups;
})
];
}))
(patchExtension "system-monitor@gnome-shell-extensions.gcampax.github.com" (old: {
patches = [
(replaceVars
@@ -0,0 +1,42 @@
diff --git a/extension.js b/extension.js
index 91b81dc..e4a2552 100755
--- a/extension.js
+++ b/extension.js
@@ -122,8 +122,8 @@ const PrintersManager = GObject.registerClass(class PrintersManager extends Pane
this.menu.addMenuItem(printers);
//Add Printers
this.printers = [];
- let p_list = await exec_async(['/usr/bin/lpstat', '-a']);
- let p_default = await exec_async(['/usr/bin/lpstat', '-d']);
+ let p_list = await exec_async(['@cups@/bin/lpstat', '-a']);
+ let p_default = await exec_async(['@cups@/bin/lpstat', '-d']);
if(p_default.split(': ')[1] != undefined) p_default = p_default.split(': ')[1].trim();
else p_default = 'no default';
p_list = p_list.split('\n');
@@ -143,7 +143,7 @@ const PrintersManager = GObject.registerClass(class PrintersManager extends Pane
}
}
//Jobs
- let p_jobs = await exec_async(['/usr/bin/lpstat', '-o']);
+ let p_jobs = await exec_async(['@cups@/bin/lpstat', '-o']);
//Cancel all Jobs
if(p_jobs.length > 0) {
this.menu.addMenuItem(new PopupMenu.PopupSeparatorMenuItem());
@@ -154,7 +154,7 @@ const PrintersManager = GObject.registerClass(class PrintersManager extends Pane
//Add Jobs
p_jobs = p_jobs.split(/\n/);
this.jobsCount = p_jobs.length - 1
- let p_jobs2 = await exec_async(['/usr/bin/lpq', '-a']);
+ let p_jobs2 = await exec_async(['@cups@/bin/lpq', '-a']);
p_jobs2 = p_jobs2.replace(/\n/g, ' ').split(/\s+/);
let sendJobs = [];
for(var n = 0; n < p_jobs.length - 1; n++) {
@@ -194,7 +194,7 @@ const PrintersManager = GObject.registerClass(class PrintersManager extends Pane
this.show();
if(this.show_icon == 0 || (this.show_icon == 1 && this.printersCount > 0) || (this.show_icon == 2 && this.jobsCount > 0)) {
this.show();
- let p_error = await exec_async(['/usr/bin/lpstat', '-l']);
+ let p_error = await exec_async(['@cups@/bin/lpstat', '-l']);
this.printError = p_error.indexOf('Unable') >= 0 || p_error.indexOf(' not ') >= 0 || p_error.indexOf(' failed') >= 0;
if(this.printWarning) this._icon.icon_name = warningIcon;
else if(this.show_error && this.printError) this._icon.icon_name = errorIcon;
@@ -36,6 +36,7 @@ buildDunePackage rec {
Markdown, to name but a few! This library provides OCaml combinators
for these web formats.
'';
homepage = "https://mirage.github.io/ocaml-cow/";
license = lib.licenses.isc;
maintainers = with lib.maintainers; [ sternenseemann ];
};
@@ -0,0 +1,42 @@
{
lib,
buildDunePackage,
fetchFromGitHub,
dune-configurator,
ppxlib,
}:
buildDunePackage (finalAttrs: {
pname = "extunix";
version = "0.4.4";
src = fetchFromGitHub {
owner = "ygrek";
repo = "extunix";
tag = "v${finalAttrs.version}";
hash = "sha256-7wJDGv19etkDHRwwQ+WONtJswxNMjr2Q2Vhis4WgFek=";
};
postPatch = ''
substituteInPlace src/dune --replace-fail 'libraries unix bigarray bytes' 'libraries unix bigarray'
'';
buildInputs = [
dune-configurator
];
propagatedBuildInputs = [
ppxlib
];
# need absolute paths outside from sandbox
doCheck = false;
meta = {
description = "Collection of thin bindings to various low-level system API";
homepage = "https://github.com/ygrek/extunix";
changelog = "https://github.com/ygrek/extunix/releases/tag/v${finalAttrs.version}";
license = lib.licenses.lgpl21Only;
maintainers = with lib.maintainers; [ redianthus ];
};
})
@@ -0,0 +1,34 @@
{
lib,
fetchurl,
buildDunePackage,
ppxlib,
ounit2,
}:
buildDunePackage (finalAttrs: {
pname = "ppx_deriving_variant_string";
version = "1.0.1";
src = fetchurl {
url = "https://github.com/ahrefs/ppx_deriving_variant_string/releases/download/${finalAttrs.version}/ppx_deriving_variant_string-${finalAttrs.version}.tbz";
hash = "sha256-nSU9LEwPOOQuCpNAVQgBGucHuk5wjJ3dDIj708djLwc=";
};
propagatedBuildInputs = [
ppxlib
];
doCheck = true;
checkInputs = [
ounit2
];
meta = {
homepage = "https://github.com/ahrefs/ppx_deriving_variant_string";
description = "OCaml PPX deriver that generates converters between regular or polymorphic variants and strings.";
license = lib.licenses.mit;
maintainers = [ lib.maintainers.marijanp ];
changelog = "https://raw.githubusercontent.com/ahrefs/ppx_deriving_variant_string/${finalAttrs.version}/CHANGES.md";
};
})
@@ -0,0 +1,50 @@
{
lib,
buildPythonPackage,
fetchPypi,
bce-python-sdk,
click,
prettytable,
psutil,
requests,
tqdm,
}:
let
version = "0.3.8";
format = "wheel";
in
buildPythonPackage {
pname = "aistudio-sdk";
inherit version format;
# No source code dist available
src = fetchPypi {
pname = "aistudio_sdk";
inherit version format;
dist = "py3";
python = "py3";
hash = "sha256-v8lq9yQ6wu4zAwFISapAKHF8zlr6Yir4z+Oh1E0ZQdY=";
};
dependencies = [
bce-python-sdk
click
prettytable
psutil
requests
tqdm
];
pythonImportsCheck = [ "aistudio_sdk" ];
meta = {
description = "Python client library for the AIStudio API";
homepage = "https://pypi.org/project/aistudio-sdk";
license = lib.licenses.unfree;
mainProgram = "aistudio";
maintainers = with lib.maintainers; [ kyehn ];
sourceProvenance = with lib.sourceTypes; [ fromSource ];
};
}
@@ -20,14 +20,14 @@
buildPythonPackage rec {
pname = "approvaltests";
version = "16.1.0";
version = "16.2.0";
pyproject = true;
src = fetchFromGitHub {
owner = "approvals";
repo = "ApprovalTests.Python";
tag = "v${version}";
hash = "sha256-9zBpq4/jAH441eeMMV2WS767Rz+1qCX/QIfbToUHnAQ=";
hash = "sha256-SAevC6yIDndtNRakyzsRNw4vM2wLc/Qbs3ZlmXEa+40=";
};
postPatch = ''
@@ -36,8 +36,6 @@ buildPythonPackage rec {
substituteInPlace setup.py \
--replace-fail "from setup_utils" "from setup.setup_utils"
echo 'version_number = "${version}"' > version.py
patchShebangs internal_documentation/scripts
'';
@@ -0,0 +1,44 @@
{
lib,
buildPythonPackage,
pythonAtLeast,
fetchPypi,
setuptools,
future,
pycryptodome,
six,
}:
let
version = "0.9.46";
in
buildPythonPackage {
pname = "bce-python-sdk";
inherit version;
pyproject = true;
disabled = pythonAtLeast "3.13";
src = fetchPypi {
pname = "bce_python_sdk";
inherit version;
hash = "sha256-S/AbIubRcszZSqIB+LxvKpjQ2keEFg53z6z8xxwmhr4=";
};
build-system = [ setuptools ];
dependencies = [
future
pycryptodome
six
];
pythonImportsCheck = [ "baidubce" ];
meta = {
description = "Baidu Cloud Engine SDK for python";
homepage = "https://github.com/baidubce/bce-sdk-python";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ kyehn ];
};
}
@@ -0,0 +1,45 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
poetry-core,
pydantic,
typer,
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "countryinfo";
version = "1.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "porimol";
repo = "countryinfo";
tag = "v${version}";
hash = "sha256-Y4nJnjXg8raJx2f00DFMktdcWoLO09wqTFK6Fc8RKSI=";
};
build-system = [ poetry-core ];
patches = [ ./fix-pyproject-file.patch ];
dependencies = [
pydantic
typer
];
pythonRelaxDeps = [ "typer" ];
pythonImportsCheck = [ "countryinfo" ];
nativeCheckInputs = [ pytestCheckHook ];
meta = {
homepage = "https://github.com/porimol/countryinfo";
description = "Data about countries, ISO info and states/provinces within them";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
cizniarova
];
};
}
@@ -0,0 +1,11 @@
diff --git a/pyproject.toml b/pyproject.toml
index f31c9e3..31fa9c8 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -1,3 +1,6 @@
+[project]
+name = "countryinfo"
+
[tool.poetry]
name = "countryinfo"
version = "1.0.0"
@@ -14,12 +14,12 @@
buildPythonPackage rec {
pname = "meshcore";
version = "2.2.2";
version = "2.2.3";
pyproject = true;
src = fetchPypi {
inherit pname version;
sha256 = "sha256-vn/vF4avMDwDLL0EMVrrMWkZrZ1GTiUxGyTBOtKvG1I=";
sha256 = "sha256-lmMflAlrNnfsc10J3CBxor9ftHK10bWyGTbjASJv82s=";
};
build-system = [ hatchling ];
@@ -0,0 +1,52 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
filelock,
requests,
tqdm,
}:
let
version = "1.31.0";
in
buildPythonPackage {
pname = "modelscope";
inherit version;
pyproject = true;
src = fetchFromGitHub {
owner = "modelscope";
repo = "modelscope";
tag = "v${version}";
hash = "sha256-3o3iI4LGDSsF36jnrUTN3bBaM8XGCw+msIPS3WauMNQ=";
};
postPatch = ''
substituteInPlace setup.py \
--replace-fail "exec(compile(f.read(), version_file, 'exec'))" "ns = {}; exec(compile(f.read(), version_file, 'exec'), ns)" \
--replace-fail "return locals()['__version__']" "return ns['__version__']"
'';
build-system = [ setuptools ];
dependencies = [
filelock
requests
setuptools
tqdm
];
doCheck = false; # need network
pythonImportsCheck = [ "modelscope" ];
meta = {
description = "Bring the notion of Model-as-a-Service to life";
homepage = "https://github.com/modelscope/modelscope";
license = lib.licenses.asl20;
mainProgram = "modelscope";
maintainers = with lib.maintainers; [ kyehn ];
};
}
@@ -1,7 +1,6 @@
{
lib,
buildPythonPackage,
pythonOlder,
fetchPypi,
poetry-core,
cryptography,
@@ -25,7 +24,10 @@ buildPythonPackage rec {
hash = "sha256-ZyB5gNZc5HxohZypc/198PPBxqG9URscQfXYAWzs7n8=";
};
pythonRelaxDeps = [ "protobuf" ];
pythonRelaxDeps = [
"protobuf"
"hidapi"
];
build-system = [ poetry-core ];
@@ -1,34 +0,0 @@
{
x86_64-linux = {
platform = "manylinux1_x86_64";
cpu = {
cp312 = "sha256-gafFsQFQsHUh0c0Ukdyh+3b/YhsU2xDomdlZ86d5Neo=";
cp313 = "sha256-j8SGXv02Vu6ZQkEkeSy4imQhUbTVkafW1KXGr9rpWVk=";
};
gpu = {
cp311 = "sha256-KWlGhjg9k1+wlm3Tk/mvMqh9LWZ0yGA1g99bCPlFf0U=";
cp312 = "sha256-KJ2drJWLuwdaYsCj7egh1nQV4j35vT+UgH0qTdxoyHk=";
};
};
aarch64-linux = {
platform = "manylinux2014_aarch64";
cpu = {
cp312 = "sha256-3aqZaosKANvkJp2iHWUFKHfsNpOiLswHucraPs0RaIY=";
cp313 = "sha256-u8TVc7NdJKJi4C1yaW6A9bSu5B9phnGvlXTe6xqD5vc=";
};
};
x86_64-darwin = {
platform = "macosx_10_9_x86_64";
cpu = {
cp312 = "sha256-3P6/sQ3rFaoz0qLWbVoS2d5lRh2KQNJofi+zIhFQ0Lo=";
cp313 = "sha256-UsQB/+Sq5WMWZgozAVpv11XNoj09cKKLE7c9cMvbuMs=";
};
};
aarch64-darwin = {
platform = "macosx_11_0_arm64";
cpu = {
cp312 = "sha256-hnfo1C/2b3T7yjL/Mti2S749Vu0pqS1D3EGPDxaPy2k=";
cp313 = "sha256-nRBR8uII2h1Dna7nyGG8tQJA8JcSSW62Hpzoxhj68vk=";
};
};
}
@@ -3,10 +3,13 @@
lib,
stdenv,
buildPythonPackage,
fetchurl,
fetchPypi,
python,
pythonOlder,
pythonAtLeast,
autoPatchelfHook,
bash,
zlib,
setuptools,
cudaSupport ? config.cudaSupport or false,
@@ -25,27 +28,34 @@
let
pname = "paddlepaddle" + lib.optionalString cudaSupport "-gpu";
version = if cudaSupport then "2.6.2" else "3.0.0";
sources = import ./sources.nix;
version = sources.version;
format = "wheel";
pyShortVersion = "cp${builtins.replaceStrings [ "." ] [ "" ] python.pythonVersion}";
cpuOrGpu = if cudaSupport then "gpu" else "cpu";
allHashAndPlatform = import ./binary-hashes.nix;
hash =
allHashAndPlatform."${stdenv.hostPlatform.system}"."${cpuOrGpu}"."${pyShortVersion}"
or (throw "${pname} has no binary-hashes.nix entry for '${stdenv.hostPlatform.system}.${cpuOrGpu}.${pyShortVersion}' attribute");
platform = allHashAndPlatform."${stdenv.hostPlatform.system}".platform;
src = fetchPypi {
inherit
version
format
hash
platform
;
pname = builtins.replaceStrings [ "-" ] [ "_" ] pname;
dist = pyShortVersion;
python = pyShortVersion;
abi = pyShortVersion;
};
sources."${stdenv.hostPlatform.system}"."${cpuOrGpu}"."${pyShortVersion}"
or (throw "${pname} has no sources.nix entry for '${stdenv.hostPlatform.system}.${cpuOrGpu}.${pyShortVersion}' attribute");
platform = sources."${stdenv.hostPlatform.system}".platform;
src =
if cudaSupport then
(fetchurl {
url = "https://paddle-whl.bj.bcebos.com/stable/cu128/paddlepaddle-gpu/paddlepaddle-${version}-${pyShortVersion}-${pyShortVersion}-linux_x86_64.whl";
inherit hash;
})
else
(fetchPypi {
inherit
version
format
hash
platform
;
pname = "paddlepaddle";
dist = pyShortVersion;
python = pyShortVersion;
abi = pyShortVersion;
});
in
buildPythonPackage {
inherit
@@ -55,13 +65,12 @@ buildPythonPackage {
src
;
disabled =
if cudaSupport then
(pythonOlder "3.11" || pythonAtLeast "3.13")
else
(pythonOlder "3.12" || pythonAtLeast "3.14");
disabled = pythonOlder "3.12" || pythonAtLeast "3.14";
nativeBuildInputs = [ addDriverRunpath ];
nativeBuildInputs = [
addDriverRunpath
]
++ lib.optionals cudaSupport [ autoPatchelfHook ];
dependencies = [
setuptools
@@ -75,40 +84,48 @@ buildPythonPackage {
typing-extensions
];
pythonImportsCheck = [ "paddle" ];
# Segmentation fault in darwin sandbox
pythonImportsCheck = lib.optionals stdenv.hostPlatform.isLinux [ "paddle" ];
# no tests
doCheck = false;
postFixup = lib.optionalString stdenv.hostPlatform.isLinux (
let
libraryPath = lib.makeLibraryPath (
[
zlib
(lib.getLib stdenv.cc.cc)
]
++ lib.optionals cudaSupport (
with cudaPackages;
postFixup =
lib.optionalString stdenv.hostPlatform.isLinux (
let
libraryPath = lib.makeLibraryPath (
[
cudatoolkit.lib
cudatoolkit.out
cudnn
zlib
(lib.getLib stdenv.cc.cc)
]
)
);
in
''
function fixRunPath {
p=$(patchelf --print-rpath $1)
patchelf --set-rpath "$p:${libraryPath}" $1
${lib.optionalString cudaSupport ''
addDriverRunpath $1
''}
}
fixRunPath $out/${python.sitePackages}/paddle/base/libpaddle.so
fixRunPath $out/${python.sitePackages}/paddle/libs/lib*.so
''
);
++ lib.optionals cudaSupport (
with cudaPackages;
[
cudatoolkit.lib
cudatoolkit.out
cudnn
]
)
);
in
''
function fixRunPath {
patchelf --add-rpath ${libraryPath} $1
${lib.optionalString cudaSupport ''
addDriverRunpath $1
''}
}
fixRunPath $out/${python.sitePackages}/paddle/base/libpaddle.so
fixRunPath $out/${python.sitePackages}/paddle/libs/lib*.so
''
)
+ ''
substituteInPlace $out/bin/paddle \
--replace-fail "/bin/bash" "${lib.getExe bash}" \
--replace-fail "python -" "${lib.getExe (python.withPackages (ps: with ps; [ distutils ]))} -"
sed -i '/# Check python lib installed or not./,/^fi$/d' $out/bin/paddle
sed -i 's/^INSTALLED_VERSION=.*/INSTALLED_VERSION="${version}"/' $out/bin/paddle
'';
meta = {
description = "Machine Learning Framework from Industrial Practice";
@@ -120,7 +137,6 @@ buildPythonPackage {
]
++ lib.optionals (!cudaSupport) [
"aarch64-linux"
"x86_64-darwin"
"aarch64-darwin"
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
@@ -0,0 +1,28 @@
{
version = "3.2.0";
x86_64-linux = {
platform = "manylinux1_x86_64";
cpu = {
cp312 = "sha256-LBf2daJevQZ19wP3uCd36pLbDDYL1Vpcay36rXvD8mA=";
cp313 = "sha256-+irs0GFCQ1D2dwqD3aB5aR9yJGNc/ydurvTj4XRAA50=";
};
gpu = {
cp312 = "sha256-YqxAWSvjhYOQUCiUPtjC3PdRxFeWGm/be8FxOrpaLZo=";
cp313 = "sha256-TdFx5Ut3iOTRg8USL2eIHyRYv8QT4KrLBPdiPkaK+Nc=";
};
};
aarch64-linux = {
platform = "manylinux2014_aarch64";
cpu = {
cp312 = "sha256-TOUUEUr3Zxh1/Ekn6gBa+51dD9d3rrVqEHjSL39Os/s=";
cp313 = "sha256-KqDlAvbdKE7aIcKH0yZFTfomrMqIwjqgrFgdHvmDGMU=";
};
};
aarch64-darwin = {
platform = "macosx_11_0_arm64";
cpu = {
cp312 = "sha256-rDNK9y0bDUnUyTPP1OtC1z7C3HpqryJIxihkPUGbbac=";
cp313 = "sha256-OBhOHqf9e/A4g+ph9FYZuXEtksE60foWk06p4NbT6ZE=";
};
};
}
+21
View File
@@ -0,0 +1,21 @@
#! /usr/bin/env nix-shell
#!nix-shell -i bash -p bash nix-update common-updater-scripts jq
set -eou pipefail
nix-update --system=x86_64-linux --url=https://github.com/PaddlePaddle/Paddle --override-filename=pkgs/development/python-modules/paddlepaddle/sources.nix --use-github-releases python313Packages.paddlepaddle || true
latestVersion=$(nix eval --raw --file . python313Packages.paddlepaddle.version)
systems=$(nix eval --json -f . python313Packages.paddlepaddle.meta.platforms | jq --raw-output '.[]')
for system in $systems; do
for pythonPackages in "python313Packages" "python312Packages"; do
hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 $(nix-prefetch-url $(nix eval --raw --file . $pythonPackages.paddlepaddle.src.url --system "$system")))
update-source-version $pythonPackages.paddlepaddle $latestVersion $hash --file=pkgs/development/python-modules/paddlepaddle/sources.nix --system=$system --ignore-same-version --ignore-same-hash
done
done
for pythonPackages in "python313Packages" "python312Packages"; do
hash=$(nix --extra-experimental-features nix-command hash convert --to sri --hash-algo sha256 $(nix-prefetch-url $(nix eval --raw --file . pkgsCuda.$pythonPackages.paddlepaddle.src.url --system x86_64-linux)))
update-source-version pkgsCuda.$pythonPackages.paddlepaddle $latestVersion $hash --file=pkgs/development/python-modules/paddlepaddle/sources.nix --system=x86_64-linux --ignore-same-version --ignore-same-hash
done
@@ -19,6 +19,8 @@
ujson,
distutils,
huggingface-hub,
modelscope,
aistudio-sdk,
nix-update-script,
}:
@@ -63,11 +65,6 @@ buildPythonPackage rec {
build-system = [ setuptools ];
pythonRemoveDeps = [
# unpackaged
"aistudio-sdk"
"modelscope"
];
pythonRelaxDeps = [
"numpy"
"pandas"
@@ -91,6 +88,8 @@ buildPythonPackage rec {
ujson
gputil
huggingface-hub
modelscope
aistudio-sdk
];
passthru.updateScript = nix-update-script { };
@@ -10,14 +10,14 @@
buildPythonPackage rec {
pname = "pysrdaligateway";
version = "0.19.0";
version = "0.19.2";
pyproject = true;
src = fetchFromGitHub {
owner = "maginawin";
repo = "PySrDaliGateway";
tag = "v${version}";
hash = "sha256-m4gkhDYrw+58FN80zTKjSPK/3Wsl7rZ+Xlo/iWNZTWw=";
hash = "sha256-ONwWEgipiXW8lsF6KLeZRKfIGKxoQVVqkqL9IW/ldrw=";
};
build-system = [ setuptools ];
@@ -2,6 +2,7 @@
lib,
buildPythonPackage,
fetchFromGitHub,
fetchpatch,
runCommand,
# build-system
@@ -12,6 +13,7 @@
dbus-python,
# checks
doCheck ? true,
dbus,
gobject-introspection,
pygobject3,
@@ -40,6 +42,14 @@ buildPythonPackage rec {
hash = "sha256-9YnMOQUuwAcrL0ZaQr7iGly9esZaSRIFThQRNUtSndo=";
};
patches = lib.optionals doCheck [
(fetchpatch {
name = "networkmanager-1.54.2.patch";
url = "https://github.com/martinpitt/python-dbusmock/commit/1ce6196a687d324a55fbf1f74e0f66a4e83f7a15.patch";
hash = "sha256-Wo7AhmZu74cTHT9I36+NGGSU9dcFwmcDvtzgseTj/yA=";
})
];
build-system = [
setuptools
setuptools-scm
@@ -47,6 +57,8 @@ buildPythonPackage rec {
dependencies = [ dbus-python ];
inherit doCheck;
nativeCheckInputs = [
dbus
gobject-introspection
@@ -17,14 +17,14 @@
buildPythonPackage rec {
pname = "raylib-python-cffi";
version = "5.5.0.3";
version = "5.5.0.4";
pyproject = true;
src = fetchFromGitHub {
owner = "electronstudio";
repo = "raylib-python-cffi";
tag = "v${version}";
hash = "sha256-VsdUOk26xXEwha7kGYHy4Cgwrr3yOiSlJg4nYn+ZYYs=";
hash = "sha256-MKyTpGnup4QmRui2OVBpnyn9KENATWcwYcikOmYX4c8=";
};
build-system = [ setuptools ];
@@ -0,0 +1,99 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
flit,
setuptools,
# dependencies
boltons,
bottleneck,
cf-xarray,
cftime,
click,
dask,
filelock,
jsonpickle,
numba,
packaging,
pandas,
pint,
platformdirs,
pooch,
pyarrow,
pyyaml,
scikit-learn,
scipy,
statsmodels,
xarray,
yamale,
# test
versionCheckHook,
}:
buildPythonPackage rec {
pname = "xclim";
version = "0.59.1";
pyproject = true;
src = fetchFromGitHub {
owner = "Ouranosinc";
repo = "xclim";
tag = "v${version}";
hash = "sha256-n9HJoIHLyLWxrgCuDZDQ9dcW7frgEA/LoYqnTEBLqD8=";
};
build-system = [
flit
setuptools
];
dependencies = [
boltons
bottleneck
cf-xarray
cftime
click
dask
filelock
jsonpickle
numba
packaging
pandas
pint
platformdirs
pooch
pyarrow
pyyaml
scikit-learn
scipy
statsmodels
xarray
yamale
];
# No python test hooks has been added as all tests seems to be relying on network data
# https://github.com/Ouranosinc/xclim/blob/e8ce9bf37083832517afb3375acc853191782d8f/tests/conftest.py#L314
nativeCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = "--version";
pythonImportsCheck = [
"xclim"
"xclim.ensembles"
"xclim.indices"
];
meta = {
description = "Operational Python library supporting climate services, based on xarray";
homepage = "https://github.com/Ouranosinc/xclim";
changelog = "https://github.com/Ouranosinc/xclim/releases/tag/${src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ daspk04 ];
mainProgram = "xclim";
};
}
@@ -8,6 +8,7 @@
makeSetupHook,
pnpm,
yq,
zstd,
}:
let
@@ -16,6 +17,7 @@ let
supportedFetcherVersions = [
1 # First version. Here to preserve backwards compatibility
2 # Ensure consistent permissions. See https://github.com/NixOS/nixpkgs/pull/422975
3 # Build a reproducible tarball. See https://github.com/NixOS/nixpkgs/pull/469950
];
in
{
@@ -72,6 +74,7 @@ in
moreutils
args.pnpm or pnpm'
yq
zstd
];
impureEnvVars = lib.fetchers.proxyImpureEnvVars ++ [ "NIX_NPM_REGISTRY" ];
@@ -87,13 +90,23 @@ in
export HOME=$(mktemp -d)
# For fetcherVersion < 3, the pnpm store files are placed directly into $out.
# For fetcherVersion >= 3, it is bundled into a compressed tarball within $out,
# without distributing the uncompressed store files.
if [[ ${toString fetcherVersion} -ge 3 ]]; then
mkdir $out
storePath=$(mktemp -d)
else
storePath=$out
fi
# If the packageManager field in package.json is set to a different pnpm version than what is in nixpkgs,
# any pnpm command would fail in that directory, the following disables this
pushd ..
pnpm config set manage-package-manager-versions false
popd
pnpm config set store-dir $out
pnpm config set store-dir $storePath
# Some packages produce platform dependent outputs. We do not want to cache those in the global store
pnpm config set side-effects-cache false
# As we pin pnpm versions, we don't really care about updates
@@ -122,8 +135,8 @@ in
runHook preFixup
# Remove timestamp and sort the json files
rm -rf $out/{v3,v10}/tmp
for f in $(find $out -name "*.json"); do
rm -rf $storePath/{v3,v10}/tmp
for f in $(find $storePath -name "*.json"); do
jq --sort-keys "del(.. | .checkedAt?)" $f | sponge $f
done
@@ -139,9 +152,22 @@ in
# See https://github.com/NixOS/nixpkgs/pull/350063
# See https://github.com/NixOS/nixpkgs/issues/422889
if [[ ${toString fetcherVersion} -ge 2 ]]; then
find $out -type f -name "*-exec" -print0 | xargs -0 chmod 555
find $out -type f -not -name "*-exec" -print0 | xargs -0 chmod 444
find $out -type d -print0 | xargs -0 chmod 555
find $storePath -type f -name "*-exec" -print0 | xargs -0 chmod 555
find $storePath -type f -not -name "*-exec" -print0 | xargs -0 chmod 444
find $storePath -type d -print0 | xargs -0 chmod 555
fi
if [[ ${toString fetcherVersion} -ge 3 ]]; then
(
cd $storePath
# Build a reproducible tarball, per instructions at https://reproducible-builds.org/docs/archives/
tar --sort=name \
--mtime="@$SOURCE_DATE_EPOCH" \
--owner=0 --group=0 --numeric-owner \
--pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime \
--zstd -cf $out/pnpm-store.tar.zst .
)
fi
runHook postFixup
@@ -166,7 +192,10 @@ in
configHook = makeSetupHook {
name = "pnpm-config-hook";
propagatedBuildInputs = [ pnpm ];
propagatedBuildInputs = [
pnpm
zstd
];
substitutions = {
npmArch = stdenvNoCC.targetPlatform.node.arch;
npmPlatform = stdenvNoCC.targetPlatform.node.platform;
@@ -12,10 +12,7 @@ pnpmConfigHook() {
exit 1
fi
fetcherVersion=1
if [[ -e "${pnpmDeps}/.fetcher-version" ]]; then
fetcherVersion=$(cat "${pnpmDeps}/.fetcher-version")
fi
fetcherVersion=$(cat "${pnpmDeps}/.fetcher-version" || echo 1)
echo "Using fetcherVersion: $fetcherVersion"
@@ -26,7 +23,12 @@ pnpmConfigHook() {
export npm_config_arch="@npmArch@"
export npm_config_platform="@npmPlatform@"
cp -Tr "$pnpmDeps" "$STORE_PATH"
if [[ $fetcherVersion -ge 3 ]]; then
tar --zstd -xf "$pnpmDeps/pnpm-store.tar.zst" -C "$STORE_PATH"
else
cp -Tr "$pnpmDeps" "$STORE_PATH"
fi
chmod -R +w "$STORE_PATH"
@@ -2,6 +2,7 @@
writeShellApplication,
pnpm,
pnpmDeps,
zstd,
}:
writeShellApplication {
@@ -9,11 +10,14 @@ writeShellApplication {
runtimeInputs = [
pnpm
zstd
];
text = ''
storePath=$(mktemp -d)
fetcherVersion=$(cat "${pnpmDeps}/.fetcher-version" || echo 1)
clean() {
echo "Cleaning up temporary store at '$storePath'..."
@@ -22,7 +26,12 @@ writeShellApplication {
echo "Copying pnpm store '${pnpmDeps}' to temporary store..."
cp -Tr "${pnpmDeps}" "$storePath"
if [[ $fetcherVersion -ge 3 ]]; then
tar --zstd -xf "${pnpmDeps}/pnpm-store.tar.zst" -C "$storePath"
else
cp -Tr "${pnpmDeps}" "$storePath"
fi
chmod -R +w "$storePath"
echo "Run 'pnpm install --store-dir \"$storePath\"' to install packages from this store."
+8
View File
@@ -6,6 +6,7 @@
qtdeclarative,
qt5compat,
qqc2-desktop-style,
fetchpatch,
}:
# Kirigami has a runtime dependency on qqc2-desktop-style,
# which has a build time dependency on Kirigami.
@@ -19,6 +20,13 @@ let
patches = [
./rb-templates.patch
# Fix rendering issues in some applications
# FIXME: remove in next update
(fetchpatch {
url = "https://invent.kde.org/frameworks/kirigami/-/commit/19127672cd812d177192cf84da4107f9abed2934.diff";
hash = "sha256-dh1OwMTksbVTEsEDw4vfBarR3fyBaulQa8SSHsddht0=";
})
];
extraNativeBuildInputs = [
+5
View File
@@ -8,6 +8,11 @@
mkKdeDerivation {
pname = "libplasma";
patches = [
# https://invent.kde.org/plasma/libplasma/-/merge_requests/1406
./rb-extracomponents.patch
];
extraNativeBuildInputs = [ pkg-config ];
extraBuildInputs = [
@@ -0,0 +1,27 @@
commit fd5e1a04b024a9b955d6942e52295582144fbea7
Author: Arnout Engelen <arnout@bzzt.net>
Date: Sun Dec 14 10:43:57 2025 +0100
reproducible builds: make qml dependency explicit
Similar to https://qt-project.atlassian.net/browse/QTBUG-137440
To fix https://bugs.kde.org/show_bug.cgi?id=512868
I'll admit I don't quite know what I'm doing here, I'm mostly guessing and mimicking, but it does seem to remove the nondeterminism :)
diff --git a/src/declarativeimports/plasmaextracomponents/CMakeLists.txt b/src/declarativeimports/plasmaextracomponents/CMakeLists.txt
index 1a7827819..989318c80 100644
--- a/src/declarativeimports/plasmaextracomponents/CMakeLists.txt
+++ b/src/declarativeimports/plasmaextracomponents/CMakeLists.txt
@@ -44,6 +44,10 @@ target_link_libraries(plasmaextracomponentsplugin PRIVATE
KF6::WidgetsAddons
Plasma::Plasma)
+add_dependencies(plasmaextracomponentsplugin
+ org_kde_plasmacomponents3
+)
+
ecm_finalize_qml_module(plasmaextracomponentsplugin DESTINATION ${KDE_INSTALL_QMLDIR})
ecm_generate_qdoc(plasmaextracomponentsplugin plasmaextras.qdocconf)
+127 -150
View File
@@ -15,15 +15,15 @@ let
concatMapStrings
concatMapStringsSep
concatStrings
filter
findFirst
getName
isDerivation
length
concatMap
mutuallyExclusive
optional
optionalAttrs
optionalString
optionals
isAttrs
isString
mapAttrs
@@ -47,6 +47,11 @@ let
toPretty
;
inherit (builtins)
getEnv
trace
;
# If we're in hydra, we can dispense with the more verbose error
# messages and make problems easier to spot.
inHydra = config.inHydra or false;
@@ -57,11 +62,11 @@ let
getNameWithVersion =
attrs: attrs.name or "${attrs.pname or "«name-missing»"}-${attrs.version or "«version-missing»"}";
allowUnfree = config.allowUnfree || builtins.getEnv "NIXPKGS_ALLOW_UNFREE" == "1";
allowUnfree = config.allowUnfree || getEnv "NIXPKGS_ALLOW_UNFREE" == "1";
allowNonSource =
let
envVar = builtins.getEnv "NIXPKGS_ALLOW_NONSOURCE";
envVar = getEnv "NIXPKGS_ALLOW_NONSOURCE";
in
if envVar != "" then envVar != "0" else config.allowNonSource or true;
@@ -74,33 +79,34 @@ let
else
throw "allowlistedLicenses and blocklistedLicenses are not mutually exclusive.";
hasLicense = attrs: attrs ? meta.license;
hasListedLicense =
assert areLicenseListsValid;
list: attrs:
length list > 0
&& hasLicense attrs
&& (
if isList attrs.meta.license then
any (l: elem l list) attrs.meta.license
else
elem attrs.meta.license list
);
list:
if list == [ ] then
attrs: false
else
attrs:
attrs ? meta.license
&& (
if isList attrs.meta.license then
any (l: elem l list) attrs.meta.license
else
elem attrs.meta.license list
);
hasAllowlistedLicense = attrs: hasListedLicense allowlist attrs;
hasAllowlistedLicense = hasListedLicense allowlist;
hasBlocklistedLicense = attrs: hasListedLicense blocklist attrs;
hasBlocklistedLicense = hasListedLicense blocklist;
allowBroken = config.allowBroken || builtins.getEnv "NIXPKGS_ALLOW_BROKEN" == "1";
allowBroken = config.allowBroken || getEnv "NIXPKGS_ALLOW_BROKEN" == "1";
allowUnsupportedSystem =
config.allowUnsupportedSystem || builtins.getEnv "NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM" == "1";
config.allowUnsupportedSystem || getEnv "NIXPKGS_ALLOW_UNSUPPORTED_SYSTEM" == "1";
isUnfree =
licenses:
if isAttrs licenses then
!licenses.free or true
!(licenses.free or true)
# TODO: Returning false in the case of a string is a bug that should be fixed.
# In a previous implementation of this function the function body
# was `licenses: lib.lists.any (l: !l.free or true) licenses;`
@@ -108,9 +114,9 @@ let
else if isString licenses then
false
else
any (l: !l.free or true) licenses;
any (l: !(l.free or true)) licenses;
hasUnfreeLicense = attrs: hasLicense attrs && isUnfree attrs.meta.license;
hasUnfreeLicense = attrs: attrs ? meta.license && isUnfree attrs.meta.license;
hasNoMaintainers =
# To get usable output, we want to avoid flagging "internal" derivations.
@@ -161,19 +167,13 @@ let
attrs: hasUnfreeLicense attrs && !allowUnfree && !allowUnfreePredicate attrs;
allowInsecureDefaultPredicate =
x: builtins.elem (getNameWithVersion x) (config.permittedInsecurePackages or [ ]);
allowInsecurePredicate = x: (config.allowInsecurePredicate or allowInsecureDefaultPredicate) x;
x: elem (getNameWithVersion x) (config.permittedInsecurePackages or [ ]);
allowInsecurePredicate = config.allowInsecurePredicate or allowInsecureDefaultPredicate;
hasAllowedInsecure =
attrs:
!(isMarkedInsecure attrs)
|| allowInsecurePredicate attrs
|| builtins.getEnv "NIXPKGS_ALLOW_INSECURE" == "1";
allowInsecure = getEnv "NIXPKGS_ALLOW_INSECURE" == "1";
isNonSource = sourceTypes: any (t: !t.isSource) sourceTypes;
hasNonSourceProvenance =
attrs: (attrs ? meta.sourceProvenance) && isNonSource attrs.meta.sourceProvenance;
hasDisallowedInsecure =
attrs: isMarkedInsecure attrs && !allowInsecure && !allowInsecurePredicate attrs;
# Allow granular checks to allow only some non-source-built packages
# Example:
@@ -188,7 +188,11 @@ let
# package has non-source provenance and is not explicitly allowed by the
# `allowNonSourcePredicate` function.
hasDeniedNonSourceProvenance =
attrs: hasNonSourceProvenance attrs && !allowNonSource && !allowNonSourcePredicate attrs;
attrs:
attrs ? meta.sourceProvenance
&& any (t: !t.isSource) attrs.meta.sourceProvenance
&& !allowNonSource
&& !allowNonSourcePredicate attrs;
showLicenseOrSourceType =
value: toString (map (v: v.shortName or v.fullName or "unknown") (toList value));
@@ -197,17 +201,6 @@ let
pos_str = meta: meta.position or "«unknown-file»";
remediation = {
unfree = remediate_allowlist "Unfree" (remediate_predicate "allowUnfreePredicate");
non-source = remediate_allowlist "NonSource" (remediate_predicate "allowNonSourcePredicate");
broken = remediate_allowlist "Broken" (x: "");
unsupported = remediate_allowlist "UnsupportedSystem" (x: "");
blocklisted = x: "";
insecure = remediate_insecure;
broken-outputs = remediateOutputsToInstall;
unknown-meta = x: "";
maintainerless = x: "";
};
remediation_env_var =
allow_attr:
{
@@ -230,7 +223,7 @@ let
Alternatively you can configure a predicate to allow specific packages:
{ nixpkgs.config.${predicateConfigAttr} = pkg: builtins.elem (lib.getName pkg) [
"${lib.getName attrs}"
"${getName attrs}"
];
}
'';
@@ -241,7 +234,7 @@ let
then pass `--impure` in order to allow use of environment variables.
";
remediate_allowlist = allow_attr: rebuild_amendment: attrs: ''
remediate_allowlist = allow_attr: rebuild_amendment: ''
a) To temporarily allow ${remediation_phrase allow_attr}, you can use an environment variable
for a single invocation of the nix tools.
@@ -250,7 +243,7 @@ let
b) For `nixos-rebuild` you can set
{ nixpkgs.config.allow${allow_attr} = true; }
in configuration.nix to override this.
${rebuild_amendment attrs}
${rebuild_amendment}
c) For `nix-env`, `nix-build`, `nix-shell` or any other Nix command you can add
{ allow${allow_attr} = true; }
to ~/.config/nixpkgs/config.nix.
@@ -300,7 +293,7 @@ let
let
expectedOutputs = attrs.meta.outputsToInstall or [ ];
actualOutputs = attrs.outputs or [ "out" ];
missingOutputs = builtins.filter (output: !builtins.elem output actualOutputs) expectedOutputs;
missingOutputs = filter (output: !elem output actualOutputs) expectedOutputs;
in
''
The package ${getNameWithVersion attrs} has set meta.outputsToInstall to: ${builtins.concatStringsSep ", " expectedOutputs}
@@ -312,45 +305,6 @@ let
${concatStrings (map (output: " - ${output}\n") missingOutputs)}
'';
handleEvalIssue =
{ meta, attrs }:
{
reason,
errormsg ? "",
}:
let
msg =
if inHydra then
"Failed to evaluate ${getNameWithVersion attrs}: «${reason}»: ${errormsg}"
else
''
Package ${getNameWithVersion attrs} in ${pos_str meta} ${errormsg}, refusing to evaluate.
''
+ (builtins.getAttr reason remediation) attrs;
handler = if config ? handleEvalIssue then config.handleEvalIssue reason else throw;
in
handler msg;
handleEvalWarning =
{ meta, attrs }:
{
reason,
errormsg ? "",
}:
let
remediationMsg = (builtins.getAttr reason remediation) attrs;
msg =
if inHydra then
"Warning while evaluating ${getNameWithVersion attrs}: «${reason}»: ${errormsg}"
else
"Package ${getNameWithVersion attrs} in ${pos_str meta} ${errormsg}, continuing anyway."
+ (optionalString (remediationMsg != "") "\n${remediationMsg}");
isEnabled = findFirst (x: x == reason) null showWarnings;
in
if isEnabled != null then builtins.trace msg true else true;
metaTypes =
let
types = import ./meta-types.nix { inherit lib; };
@@ -446,11 +400,10 @@ let
identifiers = attrs;
};
# Map attrs directly to the verify function for performance
metaTypes' = mapAttrs (_: t: t.verify) metaTypes;
checkMetaAttr =
let
# Map attrs directly to the verify function for performance
metaTypes' = mapAttrs (_: t: t.verify) metaTypes;
in
k: v:
if metaTypes ? ${k} then
if metaTypes'.${k} v then
@@ -467,81 +420,80 @@ let
concatMapStringsSep ", " (x: "'${x}'") (attrNames metaTypes)
}]"
];
checkMeta =
meta:
optionals config.checkMeta (concatMap (attr: checkMetaAttr attr meta.${attr}) (attrNames meta));
checkMeta = meta: concatMap (attr: checkMetaAttr attr meta.${attr}) (attrNames meta);
metaInvalid =
if config.checkMeta then
meta: !all (attr: metaTypes ? ${attr} && metaTypes'.${attr} meta.${attr}) (attrNames meta)
else
meta: false;
checkOutputsToInstall =
attrs:
let
expectedOutputs = attrs.meta.outputsToInstall or [ ];
actualOutputs = attrs.outputs or [ "out" ];
missingOutputs = builtins.filter (output: !builtins.elem output actualOutputs) expectedOutputs;
in
if config.checkMeta then builtins.length missingOutputs > 0 else false;
if config.checkMeta then
attrs:
let
actualOutputs = attrs.outputs or [ "out" ];
in
any (output: !elem output actualOutputs) (attrs.meta.outputsToInstall or [ ])
else
attrs: false;
# Check if a derivation is valid, that is whether it passes checks for
# e.g brokenness or license.
#
# Return { valid: "yes", "warn" or "no" } and additionally
# { reason: String; errormsg: String } if it is not valid, where
# { reason: String; errormsg: String, remediation: String } if it is not valid, where
# reason is one of "unfree", "blocklisted", "broken", "insecure", ...
# !!! reason strings are hardcoded into OfBorg, make sure to keep them in sync
# Along with a boolean flag for each reason
checkValidity =
let
validYes = {
valid = "yes";
handled = true;
};
in
attrs:
# Check meta attribute types first, to make sure it is always called even when there are other issues
# Note that this is not a full type check and functions below still need to by careful about their inputs!
let
res = checkMeta (attrs.meta or { });
in
if res != [ ] then
if metaInvalid (attrs.meta or { }) then
{
valid = "no";
reason = "unknown-meta";
errormsg = "has an invalid meta attrset:${concatMapStrings (x: "\n - " + x) res}\n";
errormsg = "has an invalid meta attrset:${
concatMapStrings (x: "\n - " + x) (checkMeta attrs.meta)
}\n";
remediation = "";
}
# --- Put checks that cannot be ignored here ---
else if checkOutputsToInstall attrs then
{
valid = "no";
reason = "broken-outputs";
errormsg = "has invalid meta.outputsToInstall";
remediation = remediateOutputsToInstall attrs;
}
# --- Put checks that can be ignored here ---
else if hasDeniedUnfreeLicense attrs && !(hasAllowlistedLicense attrs) then
{
valid = "no";
reason = "unfree";
errormsg = "has an unfree license (${showLicense attrs.meta.license})";
remediation = remediate_allowlist "Unfree" (remediate_predicate "allowUnfreePredicate" attrs);
}
else if hasBlocklistedLicense attrs then
{
valid = "no";
reason = "blocklisted";
errormsg = "has a blocklisted license (${showLicense attrs.meta.license})";
remediation = "";
}
else if hasDeniedNonSourceProvenance attrs then
{
valid = "no";
reason = "non-source";
errormsg = "contains elements not built from source (${showSourceType attrs.meta.sourceProvenance})";
remediation = remediate_allowlist "NonSource" (remediate_predicate "allowNonSourcePredicate" attrs);
}
else if hasDeniedBroken attrs then
{
valid = "no";
reason = "broken";
errormsg = "is marked as broken";
remediation = remediate_allowlist "Broken" "";
}
else if !allowUnsupportedSystem && hasUnsupportedPlatform attrs then
else if hasUnsupportedPlatform attrs && !allowUnsupportedSystem then
let
toPretty' = toPretty {
allowPrettyValues = true;
@@ -549,7 +501,6 @@ let
};
in
{
valid = "no";
reason = "unsupported";
errormsg = ''
is not available on the requested hostPlatform:
@@ -557,25 +508,28 @@ let
package.meta.platforms = ${toPretty' (attrs.meta.platforms or [ ])}
package.meta.badPlatforms = ${toPretty' (attrs.meta.badPlatforms or [ ])}
'';
remediation = remediate_allowlist "UnsupportedSystem" "";
}
else if !(hasAllowedInsecure attrs) then
else if hasDisallowedInsecure attrs then
{
valid = "no";
reason = "insecure";
errormsg = "is marked as insecure";
remediation = remediate_insecure attrs;
}
else
null;
# --- warnings ---
# Please also update the type in /pkgs/top-level/config.nix alongside this.
else if hasNoMaintainers attrs then
# Please also update the type in /pkgs/top-level/config.nix alongside this.
checkWarnings =
attrs:
if hasNoMaintainers attrs then
{
valid = "warn";
reason = "maintainerless";
errormsg = "has no maintainers or teams";
remediation = "";
}
# -----
else
validYes;
null;
# Helper functions and declarations to handle identifiers, extracted to reduce allocations
hasAllCPEParts =
@@ -730,34 +684,57 @@ let
available =
validity.valid != "no"
&& (
if config.checkMetaRecursively or false then all (d: d.meta.available or true) references else true
);
&& ((config.checkMetaRecursively or false) -> all (d: d.meta.available or true) references);
};
validYes = {
valid = "yes";
handled = true;
};
assertValidity =
{ meta, attrs }:
let
validity = checkValidity attrs;
inherit (validity) valid;
invalid = checkValidity attrs;
warning = checkWarnings attrs;
in
if validity ? handled then
validity
if isNull invalid then
if isNull warning then
validYes
else
let
msg =
if inHydra then
"Warning while evaluating ${getNameWithVersion attrs}: «${warning.reason}»: ${warning.errormsg}"
else
"Package ${getNameWithVersion attrs} in ${pos_str meta} ${warning.errormsg}, continuing anyway."
+ (optionalString (warning.remediation != "") "\n${warning.remediation}");
handled = if elem warning.reason showWarnings then trace msg true else true;
in
warning
// {
valid = "warn";
handled = handled;
}
else
validity
// {
# Throw an error if trying to evaluate a non-valid derivation
# or, alternatively, just output a warning message.
handled = (
if valid == "yes" then
true
else if valid == "no" then
(handleEvalIssue { inherit meta attrs; } { inherit (validity) reason errormsg; })
else if valid == "warn" then
(handleEvalWarning { inherit meta attrs; } { inherit (validity) reason errormsg; })
let
msg =
if inHydra then
"Failed to evaluate ${getNameWithVersion attrs}: «${invalid.reason}»: ${invalid.errormsg}"
else
throw "Unknown validity: '${valid}'"
);
''
Package ${getNameWithVersion attrs} in ${pos_str meta} ${invalid.errormsg}, refusing to evaluate.
''
+ invalid.remediation;
handled = if config ? handleEvalIssue then config.handleEvalIssue invalid.reason msg else throw msg;
in
invalid
// {
valid = "no";
handled = handled;
};
in
-118
View File
@@ -1,118 +0,0 @@
{
buildGoModule,
fetchFromGitHub,
lib,
wirelesstools,
makeWrapper,
wireguard-tools,
openvpn,
obfs4,
iproute2,
dnscrypt-proxy,
iptables,
gawk,
util-linux,
nix-update-script,
}:
builtins.mapAttrs
(
pname: attrs:
buildGoModule (
attrs
// rec {
inherit pname;
version = "3.14.34";
buildInputs = [
wirelesstools
];
src = fetchFromGitHub {
owner = "ivpn";
repo = "desktop-app";
tag = "v${version}";
hash = "sha256-Q96G5mJahJnXxpqJ8IF0oFie7l0Nd1p8drHH9NSpwEw=";
};
proxyVendor = true; # .c file
ldflags = [
"-s"
"-w"
"-X github.com/ivpn/desktop-app/daemon/version._version=${version}"
"-X github.com/ivpn/desktop-app/daemon/version._time=1970-01-01"
];
postInstall = ''
mv $out/bin/{${attrs.modRoot},${pname}}
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Official IVPN Desktop app";
homepage = "https://www.ivpn.net/apps";
changelog = "https://github.com/ivpn/desktop-app/releases/tag/v${version}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
urandom
blenderfreaky
];
mainProgram = "ivpn";
};
}
)
)
{
ivpn = {
modRoot = "cli";
vendorHash = "sha256-xZ1tMiv06fE2wtpDagKjHiVTPYWpj32hM6n/v9ZcgrE=";
};
ivpn-service = {
modRoot = "daemon";
vendorHash = "sha256-DVKSCcEeE7vI8aOYuEwk22n0wtF7MMDOyAgYoXYadwI=";
nativeBuildInputs = [ makeWrapper ];
patches = [ ./permissions.patch ];
postPatch = ''
substituteInPlace daemon/service/platform/platform_linux.go \
--replace 'openVpnBinaryPath = "/usr/sbin/openvpn"' \
'openVpnBinaryPath = "${openvpn}/bin/openvpn"' \
--replace 'routeCommand = "/sbin/ip route"' \
'routeCommand = "${iproute2}/bin/ip route"'
substituteInPlace daemon/netinfo/netinfo_linux.go \
--replace 'retErr := shell.ExecAndProcessOutput(log, outParse, "", "/sbin/ip", "route")' \
'retErr := shell.ExecAndProcessOutput(log, outParse, "", "${iproute2}/bin/ip", "route")'
substituteInPlace daemon/service/platform/platform_linux_release.go \
--replace 'installDir := "/opt/ivpn"' "installDir := \"$out\"" \
--replace 'obfsproxyStartScript = path.Join(installDir, "obfsproxy/obfs4proxy")' \
'obfsproxyStartScript = "${lib.getExe obfs4}"' \
--replace 'wgBinaryPath = path.Join(installDir, "wireguard-tools/wg-quick")' \
'wgBinaryPath = "${wireguard-tools}/bin/wg-quick"' \
--replace 'wgToolBinaryPath = path.Join(installDir, "wireguard-tools/wg")' \
'wgToolBinaryPath = "${wireguard-tools}/bin/wg"' \
--replace 'dnscryptproxyBinPath = path.Join(installDir, "dnscrypt-proxy/dnscrypt-proxy")' \
'dnscryptproxyBinPath = "${dnscrypt-proxy}/bin/dnscrypt-proxy"'
'';
postFixup = ''
mkdir -p $out/etc
cp -r $src/daemon/References/Linux/etc/* $out/etc/
cp -r $src/daemon/References/common/etc/* $out/etc/
patchShebangs --build $out/etc/firewall.sh $out/etc/splittun.sh $out/etc/client.down $out/etc/client.up
wrapProgram "$out/bin/ivpn-service" \
--suffix PATH : ${
lib.makeBinPath [
iptables
gawk
util-linux
]
}
'';
};
}
-5
View File
@@ -1061,11 +1061,6 @@ with pkgs;
iroh-dns-server
;
inherit (callPackages ../tools/networking/ivpn/default.nix { })
ivpn
ivpn-service
;
kanata-with-cmd = kanata.override { withCmd = true; };
linux-router-without-wifi = linux-router.override { useWifiDependencies = false; };
+6
View File
@@ -570,6 +570,8 @@ let
extlib-1-7-7 = callPackage ../development/ocaml-modules/extlib/1.7.7.nix { };
extunix = callPackage ../development/ocaml-modules/extunix/default.nix { };
ezjsonm = callPackage ../development/ocaml-modules/ezjsonm { };
ezjsonm-encoding = callPackage ../development/ocaml-modules/ezjsonm-encoding { };
@@ -1713,6 +1715,10 @@ let
ppx_deriving_rpc = callPackage ../development/ocaml-modules/ppx_deriving_rpc { };
ppx_deriving_variant_string =
callPackage ../development/ocaml-modules/ppx_deriving_variant_string
{ };
ppx_deriving_yaml = callPackage ../development/ocaml-modules/ppx_deriving_yaml {
mdx = mdx.override { inherit logs; };
};
+10
View File
@@ -582,6 +582,8 @@ self: super: with self; {
airtouch5py = callPackage ../development/python-modules/airtouch5py { };
aistudio-sdk = callPackage ../development/python-modules/aistudio-sdk { };
ajpy = callPackage ../development/python-modules/ajpy { };
ajsonrpc = callPackage ../development/python-modules/ajsonrpc { };
@@ -1824,6 +1826,8 @@ self: super: with self; {
bcdoc = callPackage ../development/python-modules/bcdoc { };
bce-python-sdk = callPackage ../development/python-modules/bce-python-sdk { };
bcf = callPackage ../development/python-modules/bcf { };
bcg = callPackage ../development/python-modules/bcg { };
@@ -3160,6 +3164,8 @@ self: super: with self; {
countryguess = callPackage ../development/python-modules/countryguess { };
countryinfo = callPackage ../development/python-modules/countryinfo { };
courlan = callPackage ../development/python-modules/courlan { };
coverage = callPackage ../development/python-modules/coverage { };
@@ -9837,6 +9843,8 @@ self: super: with self; {
modeled = callPackage ../development/python-modules/modeled { };
modelscope = callPackage ../development/python-modules/modelscope { };
modern-colorthief = callPackage ../development/python-modules/modern-colorthief { };
moderngl = callPackage ../development/python-modules/moderngl { };
@@ -20679,6 +20687,8 @@ self: super: with self; {
xcffib = callPackage ../development/python-modules/xcffib { };
xclim = callPackage ../development/python-modules/xclim { };
xdg = callPackage ../development/python-modules/xdg { };
xdg-base-dirs = callPackage ../development/python-modules/xdg-base-dirs { };