Merge c4b0401802 into haskell-updates
This commit is contained in:
@@ -869,6 +869,9 @@
|
||||
"tar-files": [
|
||||
"index.html#tar-files"
|
||||
],
|
||||
"x86_64-darwin-26.05": [
|
||||
"release-notes.html#x86_64-darwin-26.05"
|
||||
],
|
||||
"zip-files": [
|
||||
"index.html#zip-files"
|
||||
],
|
||||
|
||||
@@ -12,6 +12,27 @@
|
||||
- Ruby default version has been updated from 3.3 to 3.4.
|
||||
Refer to the [upstream release announcement](https://www.ruby-lang.org/en/news/2024/12/25/ruby-3-4-0-released/) for details.
|
||||
|
||||
- []{#x86_64-darwin-26.05}
|
||||
|
||||
**This will be the last release of Nixpkgs to support `x86_64-darwin`.**
|
||||
Platform support will be maintained and binaries built until Nixpkgs 26.05 goes out of support at the end of 2026.
|
||||
For 26.11, due to Apple’s deprecation of the platform and limited build infrastructure and developer time, we will no longer build packages for `x86_64-darwin` or support building them from source.
|
||||
|
||||
By the time of 26.11’s release, Homebrew will offer only limited [Tier 3](https://docs.brew.sh/Support-Tiers#tier-3) support for the platform, but MacPorts will likely continue to support it for a long time.
|
||||
We also recommend users consider installing NixOS, which should continue to run on essentially all Intel Macs, especially after Apple stops security support for macOS 26 in 2028.
|
||||
|
||||
A warning will be displayed for `x86_64-darwin` users; you can set [](#opt-allowDeprecatedx86_64Darwin) in the [Nixpkgs configuration](https://nixos.org/manual/nixpkgs/stable/#chap-packageconfig) to silence it.
|
||||
The {file}`~/.config/nixpkgs/config.nix` file will not work for users of flakes, who can instead replace `nixpkgs.legacyPackages.x86_64-darwin` with
|
||||
|
||||
```nix
|
||||
import nixpkgs {
|
||||
system = "x86_64-darwin";
|
||||
config.allowDeprecatedx86_64Darwin = true;
|
||||
}
|
||||
```
|
||||
|
||||
nix-darwin users can set [`nixpkgs.config.allowDeprecatedx86_64Darwin`](https://nix-darwin.github.io/nix-darwin/manual/index.html#opt-nixpkgs.config) in their system configurations.
|
||||
|
||||
- The Factor programming language has been updated to Version 0.101 bringing various improvements to UI rendering and HiDPI support as well as support for Unicode 17.0.0.
|
||||
Starting from Version 0.100, the Factor VM is compiled with Clang.
|
||||
|
||||
@@ -66,6 +87,8 @@
|
||||
|
||||
- `cargo-codspeed` has been updated from `3.0.5` to `4.2.0`. Version `4.0.0` includes breaking changes. For more information read the [changelog for 4.0.0](https://github.com/CodSpeedHQ/codspeed-rust/releases/tag/v4.0.0).
|
||||
|
||||
- `commafeed` has been updated to version 7.0.0, which includes changes impacting its security. Please see [upstream's release notes](https://github.com/Athou/commafeed/releases/tag/7.0.0) for details.
|
||||
|
||||
- `corepack_latest` has been removed, as Corepack is no longer distributed with Node.js.
|
||||
|
||||
- `nodePackages.browser-sync` has been removed, as it was unmaintained within nixpkgs.
|
||||
@@ -173,6 +196,9 @@
|
||||
|
||||
- `python3packages.pillow-avif-plugin` has been removed as the functionality is included in `python3packages.pillow` directly since version 11.3.
|
||||
|
||||
- `light` has been removed because it was unmaintained.
|
||||
`brightnessctl` and `acpilight` provide similar functionality.
|
||||
|
||||
- `services.openssh.settings.AcceptEnv` now explicitly defined as an option that takes a list of strings, to facilitate option merging. Setting it to a string value is no longer supported.
|
||||
|
||||
- `nodejs-slim` has a `npm` and a `corepack` outputs, and `nodejs` no longer has a `libv8` output.
|
||||
|
||||
@@ -3684,6 +3684,12 @@
|
||||
githubId = 6375609;
|
||||
name = "Bob van der Linden";
|
||||
};
|
||||
bodier123 = {
|
||||
email = "brubacher.1@gmail.com";
|
||||
github = "bodier123";
|
||||
githubId = 71633864;
|
||||
name = "Bodie";
|
||||
};
|
||||
bodil = {
|
||||
email = "nix@bodil.org";
|
||||
github = "bodil";
|
||||
@@ -4291,12 +4297,6 @@
|
||||
}
|
||||
];
|
||||
};
|
||||
cameroncuttingedge = {
|
||||
email = "buckets-taxiway5l@icloud.com";
|
||||
github = "cameroncuttingedge";
|
||||
githubId = 109548666;
|
||||
name = "Cameron Byte";
|
||||
};
|
||||
camerondugan = {
|
||||
email = "cameron.dugan@protonmail.com";
|
||||
github = "camerondugan";
|
||||
@@ -4836,6 +4836,12 @@
|
||||
githubId = 1438690;
|
||||
name = "Chris Pickard";
|
||||
};
|
||||
chrisportela = {
|
||||
email = "chris@chrisportela.com";
|
||||
github = "chrisportela";
|
||||
githubId = 505649;
|
||||
name = "Chris Portela";
|
||||
};
|
||||
chrispwill = {
|
||||
email = "chris@chrispwill.com";
|
||||
github = "ChrisPWill";
|
||||
|
||||
@@ -708,7 +708,7 @@ Use `services.pipewire.extraConfig` or `services.pipewire.configPackages` for Pi
|
||||
The port can be specified in [`services.nextcloud.config.dbhost`](#opt-services.nextcloud.config.dbhost).
|
||||
|
||||
- `services.kavita` now uses the free-form option `services.kavita.settings` for the application settings file.
|
||||
The options `services.kavita.ipAddresses` and `services.kavita.port` now exist at `services.kavita.settings.IpAddresses`
|
||||
The options `services.kavita.ipAdresses` and `services.kavita.port` now exist at `services.kavita.settings.IpAddresses`
|
||||
and `services.kavita.settings.IpAddresses`. The file at `services.kavita.tokenKeyFile` now needs to contain a secret with
|
||||
512+ bits instead of 128+ bits.
|
||||
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
|
||||
- [QGroundControl], a ground station support and configuration manager for the PX4 and APM Flight Stacks. Available as [programs.qgroundcontrol](options.html#opt-programs.qgroundcontrol.enable).
|
||||
|
||||
- [Eintopf](https://eintopf.info), a community event and calendar web application. Available as [services.eintopf](options.html#opt-services.eintopf.enable).
|
||||
- [Eintopf](https://eintopf.info), a community event and calendar web application. Available as `services.eintopf`.
|
||||
|
||||
- [`pay-respects`](https://codeberg.org/iff/pay-respects), a terminal command correction program, alternative to `thefuck`, written in Rust. Available as [programs.pay-respects](options.html#opt-programs.pay-respects).
|
||||
|
||||
|
||||
@@ -66,6 +66,8 @@
|
||||
|
||||
- [Shoko](https://shokoanime.com), an anime management system. Available as [services.shoko](#opt-services.shoko.enable).
|
||||
|
||||
- [perses](https://perses.dev/), the open dashboard tool for Prometheus and other data sources. Available as [services.perses](#opt-services.perses.enable).
|
||||
|
||||
- [Drasl](https://github.com/unmojang/drasl), an alternative authentication server for Minecraft. Available as [services.drasl](#opt-services.drasl.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-26.05-incompatibilities}
|
||||
@@ -78,12 +80,16 @@
|
||||
|
||||
- `sing-box` has been updated to 1.13.0, which has removed some deprecated options. See [upstream documentation](https://sing-box.sagernet.org/configuration/) for details and migration options.
|
||||
|
||||
- `services.statsd` has been removed because the packages it relies on do not exist anymore in nixpkgs.
|
||||
|
||||
- `services.tandoor-recipes` now uses a sub-directory for media files by default starting with `26.05`. Existing setups should move media files out of the data directory and adjust `services.tandoor-recipes.extraConfig.MEDIA_ROOT` accordingly. See [Migrating media files for pre 26.05 installations](#module-services-tandoor-recipes-migrating-media).
|
||||
|
||||
- `rustic` was upgraded to `0.11.x`, which contains breaking [changes to command-line parameters and configuration file](https://rustic.cli.rs/docs/breaking_changes.html#0110).
|
||||
|
||||
- The packages `iw` and `wirelesstools` (`iwconfig`, `iwlist`, etc.) are no longer installed implicitly if wireless networking has been enabled.
|
||||
|
||||
- `services.uptime` has been removed because the package it relies on does not exist anymore in nixpkgs.
|
||||
|
||||
- `services.kubernetes.addons.dns.coredns` has been renamed to `services.kubernetes.addons.dns.corednsImage` and now expects a
|
||||
package instead of attrs. Now, by default, nixpkgs.coredns in conjunction with dockerTools.buildImage is used, instead
|
||||
of pulling the upstream container image from Docker Hub. If you want the old behavior, you can set:
|
||||
@@ -104,6 +110,8 @@ of pulling the upstream container image from Docker Hub. If you want the old beh
|
||||
- `systemd.services.stalwart` owned by `stalwart:stalwart`. The `user` and `group` are configurable via `services.stalwart.user` and `services.stalwart.group`, respectively. By default, if `stateVersion` is older than `26.05`, will fallback to legacy value of `stalwart-mail` for both `user` and `group`.
|
||||
- Default value for `services.stalwart.dataDir` has changed to `/var/lib/stalwart`. If `stateVersion` is older than `26.05`, will fallback to legacy value of `/var/lib/stalwart-mail`.
|
||||
|
||||
- `services.eintopf` has been renamed to `services.lauti` to align with upstream re-brand as a community online calendar.
|
||||
|
||||
- `services.oauth2-proxy.clientSecret` and `services.oauth2-proxy.cookie.secret` have been replaced with `services.oauth2-proxy.clientSecretFile` and `services.oauth2-proxy.cookie.secretFile` respectively. This was done to ensure secrets don't get made world-readable.
|
||||
|
||||
- [`services.grafana.settings.security.secret_key`](#opt-services.grafana.settings.security.secret_key) doesn't have a
|
||||
@@ -141,6 +149,8 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
|
||||
|
||||
- support for `ecryptfs` in nixpkgs has been removed.
|
||||
|
||||
- `programs.light` was removed from nixpkgs due to the corresponding package being unmaintained upstream. `brightnessctl` and `programs.acpilight` offer replacements.
|
||||
|
||||
- The `networking.wireless` module has been security hardened by default: the `wpa_supplicant` daemon now runs under an unprivileged user with restricted access to the system.
|
||||
|
||||
As part of these changes, `/etc/wpa_supplicant.conf` has been deprecated: the NixOS-generated configuration file is now linked to `/etc/wpa_supplicant/nixos.conf` and `/etc/wpa_supplicant/imperative.conf` has been added for imperatively configuring `wpa_supplicant` or when using [allowAuxiliaryImperativeNetworks](#opt-networking.wireless.allowAuxiliaryImperativeNetworks).
|
||||
@@ -203,6 +213,8 @@ See <https://github.com/NixOS/nixpkgs/issues/481673>.
|
||||
|
||||
- [services.resolved](#opt-services.resolved.enable) module was converted to RFC42-style settings. The moved options have also been renamed to match the upstream names. Aliases mean current configs will continue to function, but users should move to the new options as convenient.
|
||||
|
||||
- `systemd.sleep.extraConfig` was replaced by [RFC 0042](https://github.com/NixOS/rfcs/blob/master/rfcs/0042-config-option.md)-compliant `systemd.sleep.settings.Sleep`, which is used to generate the `sleep.conf` configuration file. See {manpage}`sleep.conf.d(5)` for available options.
|
||||
|
||||
- Support for Bluetooth audio based on `bluez-alsa` has been added to the `hardware.alsa` module. It can be enabled with the new [enableBluetooth](#opt-hardware.alsa.enableBluetooth) option.
|
||||
|
||||
- `services.openssh` now supports generating host SSH keys by setting `services.openssh.generateHostKeys = true` while leaving `services.openssh.enable` disabled. This is particularly useful for systems that have no need of an SSH daemon but want SSH host keys for other purposes such as using agenix or sops-nix.
|
||||
|
||||
@@ -1115,14 +1115,19 @@ in
|
||||
-> !cfg.allowNoPasswordLogin
|
||||
-> any id (
|
||||
mapAttrsToList (
|
||||
name: cfg:
|
||||
(name == "root" || cfg.group == "wheel" || elem "wheel" cfg.extraGroups)
|
||||
name: user:
|
||||
(
|
||||
name == "root"
|
||||
|| user.group == "wheel"
|
||||
|| elem "wheel" user.extraGroups
|
||||
|| elem name (cfg.groups.wheel.members or [ ])
|
||||
)
|
||||
&& (
|
||||
allowsLogin cfg.hashedPassword
|
||||
|| cfg.password != null
|
||||
|| cfg.hashedPasswordFile != null
|
||||
|| cfg.openssh.authorizedKeys.keys != [ ]
|
||||
|| cfg.openssh.authorizedKeys.keyFiles != [ ]
|
||||
allowsLogin user.hashedPassword
|
||||
|| user.password != null
|
||||
|| user.hashedPasswordFile != null
|
||||
|| user.openssh.authorizedKeys.keys != [ ]
|
||||
|| user.openssh.authorizedKeys.keyFiles != [ ]
|
||||
)
|
||||
) cfg.users
|
||||
++ [
|
||||
|
||||
@@ -256,7 +256,6 @@
|
||||
./programs/lazygit.nix
|
||||
./programs/less.nix
|
||||
./programs/liboping.nix
|
||||
./programs/light.nix
|
||||
./programs/lix.nix
|
||||
./programs/localsend.nix
|
||||
./programs/mdevctl.nix
|
||||
@@ -1038,6 +1037,7 @@
|
||||
./services/monitoring/opentelemetry-collector.nix
|
||||
./services/monitoring/osquery.nix
|
||||
./services/monitoring/parsedmarc.nix
|
||||
./services/monitoring/perses.nix
|
||||
./services/monitoring/pgscv.nix
|
||||
./services/monitoring/prometheus/alertmanager-gotify-bridge.nix
|
||||
./services/monitoring/prometheus/alertmanager-irc-relay.nix
|
||||
@@ -1057,7 +1057,6 @@
|
||||
./services/monitoring/scrutiny.nix
|
||||
./services/monitoring/smartd.nix
|
||||
./services/monitoring/snmpd.nix
|
||||
./services/monitoring/statsd.nix
|
||||
./services/monitoring/sysstat.nix
|
||||
./services/monitoring/teamviewer.nix
|
||||
./services/monitoring/telegraf.nix
|
||||
@@ -1069,7 +1068,6 @@
|
||||
./services/monitoring/unpoller.nix
|
||||
./services/monitoring/ups.nix
|
||||
./services/monitoring/uptime-kuma.nix
|
||||
./services/monitoring/uptime.nix
|
||||
./services/monitoring/vlagent.nix
|
||||
./services/monitoring/vmagent.nix
|
||||
./services/monitoring/vmalert.nix
|
||||
@@ -1625,7 +1623,6 @@
|
||||
./services/web-apps/drasl.nix
|
||||
./services/web-apps/drupal.nix
|
||||
./services/web-apps/echoip.nix
|
||||
./services/web-apps/eintopf.nix
|
||||
./services/web-apps/engelsystem.nix
|
||||
./services/web-apps/ente.nix
|
||||
./services/web-apps/fediwall.nix
|
||||
@@ -1680,6 +1677,7 @@
|
||||
./services/web-apps/lanraragi.nix
|
||||
./services/web-apps/lasuite-docs.nix
|
||||
./services/web-apps/lasuite-meet.nix
|
||||
./services/web-apps/lauti.nix
|
||||
./services/web-apps/lemmy.nix
|
||||
./services/web-apps/librechat.nix
|
||||
./services/web-apps/librespeed.nix
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.programs.light;
|
||||
|
||||
in
|
||||
{
|
||||
options = {
|
||||
programs.light = {
|
||||
|
||||
enable = lib.mkOption {
|
||||
default = false;
|
||||
type = lib.types.bool;
|
||||
description = ''
|
||||
Whether to install Light backlight control command
|
||||
and udev rules granting access to members of the "video" group.
|
||||
'';
|
||||
};
|
||||
|
||||
brightnessKeys = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable brightness control with keyboard keys.
|
||||
|
||||
This is mainly useful for minimalistic (desktop) environments. You
|
||||
may want to leave this disabled if you run a feature-rich desktop
|
||||
environment such as KDE, GNOME or Xfce as those handle the
|
||||
brightness keys themselves. However, enabling brightness control
|
||||
with this setting makes the control independent of X, so the keys
|
||||
work in non-graphical ttys, so you might want to consider using this
|
||||
instead of the default offered by the desktop environment.
|
||||
|
||||
Enabling this will turn on {option}`services.actkbd`.
|
||||
'';
|
||||
};
|
||||
|
||||
step = lib.mkOption {
|
||||
type = lib.types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
The percentage value by which to increase/decrease brightness.
|
||||
'';
|
||||
};
|
||||
|
||||
minBrightness = lib.mkOption {
|
||||
type = lib.types.numbers.between 0 100;
|
||||
default = 0.1;
|
||||
description = ''
|
||||
The minimum authorized brightness value, e.g. to avoid the
|
||||
display going dark.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.light ];
|
||||
services.udev.packages = [ pkgs.light ];
|
||||
services.actkbd = lib.mkIf cfg.brightnessKeys.enable {
|
||||
enable = true;
|
||||
bindings =
|
||||
let
|
||||
light = "${pkgs.light}/bin/light";
|
||||
step = toString cfg.brightnessKeys.step;
|
||||
minBrightness = toString cfg.brightnessKeys.minBrightness;
|
||||
in
|
||||
[
|
||||
{
|
||||
keys = [ 224 ];
|
||||
events = [ "key" ];
|
||||
# -N is used to ensure that value >= minBrightness
|
||||
command = "${light} -N ${minBrightness} && ${light} -U ${step}";
|
||||
}
|
||||
{
|
||||
keys = [ 225 ];
|
||||
events = [ "key" ];
|
||||
command = "${light} -A ${step}";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -16,9 +16,7 @@ in
|
||||
programs.npm = {
|
||||
enable = lib.mkEnableOption "{command}`npm` global config";
|
||||
|
||||
package = lib.mkPackageOption pkgs [ "nodePackages" "npm" ] {
|
||||
example = "nodePackages_13_x.npm";
|
||||
};
|
||||
package = lib.mkPackageOption pkgs "nodejs" { };
|
||||
|
||||
npmrc = lib.mkOption {
|
||||
type = lib.types.lines;
|
||||
|
||||
@@ -235,6 +235,9 @@ in
|
||||
"Atlassian software has been removed, as support for the Atlassian Server products ended in February 2024 and there was insufficient interest in maintaining the Atlassian Data Center replacements"
|
||||
)
|
||||
(mkRemovedOptionModule [ "services" "kippo" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "programs" "light" ]
|
||||
"The corresponding package was removed from nixpkgs due to being unmaintained upstream. `brightnessctl` and `hardware.acpilight` offer replacements."
|
||||
)
|
||||
(mkRemovedOptionModule [ "services" "lshd" ]
|
||||
"The corresponding package was removed from nixpkgs as it had no maintainer in Nixpkgs and hasn't seen an upstream release in over a decades."
|
||||
)
|
||||
@@ -316,6 +319,9 @@ in
|
||||
the program being unmaintained. The options `programs.msmtp.*` can be
|
||||
used instead.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "services" "statsd" ] ''
|
||||
The statsd module was removed because the packages it uses have been removed from nixpkgs.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "services" "sourcehut" ] ''
|
||||
The sourcehut packages and the corresponding module have been removed due to being broken and unmaintained.
|
||||
'')
|
||||
@@ -325,6 +331,10 @@ in
|
||||
(mkRemovedOptionModule [ "services" "unifi-video" ]
|
||||
"The unifi-video package and the corresponding module have been removed as the software has been unsupported since 2021 and requires a MongoDB version that has reached end of life."
|
||||
)
|
||||
(mkRemovedOptionModule [
|
||||
"services"
|
||||
"uptime"
|
||||
] "The package for services.uptime has been removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "venus" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [
|
||||
"services"
|
||||
|
||||
@@ -0,0 +1,131 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
getExe
|
||||
mkOption
|
||||
mkEnableOption
|
||||
mkPackageOption
|
||||
mkIf
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.services.perses;
|
||||
|
||||
settingsFormat = pkgs.formats.yaml { };
|
||||
|
||||
configPath = "/run/perses/config.yaml";
|
||||
secretsReplacement = utils.genJqSecretsReplacement {
|
||||
loadCredential = true;
|
||||
} cfg.settings configPath;
|
||||
|
||||
in
|
||||
{
|
||||
options.services.perses = {
|
||||
enable = mkEnableOption "perses";
|
||||
|
||||
package = mkPackageOption pkgs "perses" { };
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 8080;
|
||||
description = ''
|
||||
Perses Web interface port.
|
||||
'';
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Address to listen on. Empty string will listen on all interfaces.
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
};
|
||||
description = ''
|
||||
Perses settings. See <https://perses.dev/perses/docs/configuration/configuration/> for available options.
|
||||
You can specify secret values in this configuration by setting `somevalue._secret = "/path/to/file"` instead of setting `somevalue` directly.
|
||||
'';
|
||||
default = { };
|
||||
};
|
||||
|
||||
extraOptions = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [ ];
|
||||
example = [
|
||||
"-web.telemetry-path=/metrics"
|
||||
];
|
||||
description = "Additional options passed to perses daemon.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.services.perses = {
|
||||
description = "Perses Daemon";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "networking.target" ];
|
||||
|
||||
preStart = secretsReplacement.script;
|
||||
|
||||
serviceConfig = rec {
|
||||
ExecStart = utils.escapeSystemdExecArgs (
|
||||
[
|
||||
(getExe cfg.package)
|
||||
"-config=${configPath}"
|
||||
"-web.listen-address=${cfg.listenAddress}:${toString cfg.port}"
|
||||
]
|
||||
++ cfg.extraOptions
|
||||
);
|
||||
|
||||
User = "perses";
|
||||
DynamicUser = true;
|
||||
Restart = "on-failure";
|
||||
RuntimeDirectory = "perses";
|
||||
RuntimeDirectoryMode = "0755";
|
||||
StateDirectory = "perses";
|
||||
WorkingDirectory = "%S/${StateDirectory}";
|
||||
|
||||
LoadCredential = secretsReplacement.credentials;
|
||||
|
||||
# Hardening
|
||||
AmbientCapabilities = mkIf (cfg.port < 1024) [ "CAP_NET_BIND_SERVICE" ];
|
||||
CapabilityBoundingSet = if (cfg.port < 1024) then [ "CAP_NET_BIND_SERVICE" ] else [ "" ];
|
||||
LockPersonality = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateTmp = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "full";
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
UMask = "0027";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
};
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
||||
cfg = config.services.statsd;
|
||||
|
||||
isBuiltinBackend =
|
||||
name:
|
||||
builtins.elem name [
|
||||
"graphite"
|
||||
"console"
|
||||
"repeater"
|
||||
];
|
||||
|
||||
backendsToPackages =
|
||||
let
|
||||
mkMap = list: name: if isBuiltinBackend name then list else list ++ [ pkgs.nodePackages.${name} ];
|
||||
in
|
||||
lib.foldl mkMap [ ];
|
||||
|
||||
configFile = pkgs.writeText "statsd.conf" ''
|
||||
{
|
||||
address: "${cfg.listenAddress}",
|
||||
port: "${toString cfg.port}",
|
||||
mgmt_address: "${cfg.mgmt_address}",
|
||||
mgmt_port: "${toString cfg.mgmt_port}",
|
||||
backends: [${
|
||||
lib.concatMapStringsSep "," (
|
||||
name: if (isBuiltinBackend name) then ''"./backends/${name}"'' else ''"${name}"''
|
||||
) cfg.backends
|
||||
}],
|
||||
${lib.optionalString (cfg.graphiteHost != null) ''graphiteHost: "${cfg.graphiteHost}",''}
|
||||
${lib.optionalString (cfg.graphitePort != null) ''graphitePort: "${toString cfg.graphitePort}",''}
|
||||
console: {
|
||||
prettyprint: false
|
||||
},
|
||||
log: {
|
||||
backend: "stdout"
|
||||
},
|
||||
automaticConfigReload: false${lib.optionalString (cfg.extraConfig != null) ","}
|
||||
${cfg.extraConfig}
|
||||
}
|
||||
'';
|
||||
|
||||
deps = pkgs.buildEnv {
|
||||
name = "statsd-runtime-deps";
|
||||
pathsToLink = [ "/lib" ];
|
||||
ignoreCollisions = true;
|
||||
|
||||
paths = backendsToPackages cfg.backends;
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options.services.statsd = {
|
||||
|
||||
enable = lib.mkEnableOption "statsd";
|
||||
|
||||
listenAddress = lib.mkOption {
|
||||
description = "Address that statsd listens on over UDP";
|
||||
default = "127.0.0.1";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
description = "Port that stats listens for messages on over UDP";
|
||||
default = 8125;
|
||||
type = lib.types.port;
|
||||
};
|
||||
|
||||
mgmt_address = lib.mkOption {
|
||||
description = "Address to run management TCP interface on";
|
||||
default = "127.0.0.1";
|
||||
type = lib.types.str;
|
||||
};
|
||||
|
||||
mgmt_port = lib.mkOption {
|
||||
description = "Port to run the management TCP interface on";
|
||||
default = 8126;
|
||||
type = lib.types.port;
|
||||
};
|
||||
|
||||
backends = lib.mkOption {
|
||||
description = "List of backends statsd will use for data persistence";
|
||||
default = [ ];
|
||||
example = [
|
||||
"graphite"
|
||||
"console"
|
||||
"repeater"
|
||||
"statsd-librato-backend"
|
||||
"statsd-influxdb-backend"
|
||||
];
|
||||
type = lib.types.listOf lib.types.str;
|
||||
};
|
||||
|
||||
graphiteHost = lib.mkOption {
|
||||
description = "Hostname or IP of Graphite server";
|
||||
default = null;
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
};
|
||||
|
||||
graphitePort = lib.mkOption {
|
||||
description = "Port of Graphite server (i.e. carbon-cache).";
|
||||
default = null;
|
||||
type = lib.types.nullOr lib.types.port;
|
||||
};
|
||||
|
||||
extraConfig = lib.mkOption {
|
||||
description = "Extra configuration options for statsd";
|
||||
default = "";
|
||||
type = lib.types.nullOr lib.types.str;
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
assertions = map (backend: {
|
||||
assertion = !isBuiltinBackend backend -> lib.hasAttrByPath [ backend ] pkgs.nodePackages;
|
||||
message = "Only builtin backends (graphite, console, repeater) or backends enumerated in `pkgs.nodePackages` are allowed!";
|
||||
}) cfg.backends;
|
||||
|
||||
users.users.statsd = {
|
||||
uid = config.ids.uids.statsd;
|
||||
description = "Statsd daemon user";
|
||||
};
|
||||
|
||||
systemd.services.statsd = {
|
||||
description = "Statsd Server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = {
|
||||
NODE_PATH = "${deps}/lib/node_modules";
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.statsd}/bin/statsd ${configFile}";
|
||||
User = "statsd";
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ pkgs.statsd ];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
@@ -1,122 +0,0 @@
|
||||
{
|
||||
config,
|
||||
options,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
let
|
||||
inherit (lib)
|
||||
literalExpression
|
||||
mkOption
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkMerge
|
||||
types
|
||||
optional
|
||||
;
|
||||
|
||||
cfg = config.services.uptime;
|
||||
opt = options.services.uptime;
|
||||
|
||||
configDir = pkgs.runCommand "config" { preferLocalBuild = true; } (
|
||||
if cfg.configFile != null then
|
||||
''
|
||||
mkdir $out
|
||||
ext=`echo ${cfg.configFile} | grep -o \\..*`
|
||||
ln -sv ${cfg.configFile} $out/default$ext
|
||||
ln -sv /var/lib/uptime/runtime.json $out/runtime.json
|
||||
''
|
||||
else
|
||||
''
|
||||
mkdir $out
|
||||
cat ${pkgs.nodePackages.node-uptime}/lib/node_modules/node-uptime/config/default.yaml > $out/default.yaml
|
||||
cat >> $out/default.yaml <<EOF
|
||||
|
||||
autoStartMonitor: false
|
||||
|
||||
mongodb:
|
||||
connectionString: 'mongodb://localhost/uptime'
|
||||
EOF
|
||||
ln -sv /var/lib/uptime/runtime.json $out/runtime.json
|
||||
''
|
||||
);
|
||||
in
|
||||
{
|
||||
options.services.uptime = {
|
||||
configFile = mkOption {
|
||||
description = ''
|
||||
The uptime configuration file
|
||||
|
||||
If mongodb: server != localhost, please set usesRemoteMongo = true
|
||||
|
||||
If you only want to run the monitor, please set enableWebService = false
|
||||
and enableSeparateMonitoringService = true
|
||||
|
||||
If autoStartMonitor: false (recommended) and you want to run both
|
||||
services, please set enableSeparateMonitoringService = true
|
||||
'';
|
||||
|
||||
type = types.nullOr types.path;
|
||||
|
||||
default = null;
|
||||
};
|
||||
|
||||
usesRemoteMongo = mkOption {
|
||||
description = "Whether the configuration file specifies a remote mongo instance";
|
||||
|
||||
default = false;
|
||||
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
enableWebService = mkEnableOption "the uptime monitoring program web service";
|
||||
|
||||
enableSeparateMonitoringService = mkEnableOption "the uptime monitoring service" // {
|
||||
default = cfg.enableWebService;
|
||||
defaultText = literalExpression "config.${opt.enableWebService}";
|
||||
};
|
||||
|
||||
nodeEnv = mkOption {
|
||||
description = "The node environment to run in (development, production, etc.)";
|
||||
|
||||
type = types.str;
|
||||
|
||||
default = "production";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkMerge [
|
||||
(mkIf cfg.enableWebService {
|
||||
systemd.services.uptime = {
|
||||
description = "uptime web service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = {
|
||||
NODE_CONFIG_DIR = configDir;
|
||||
NODE_ENV = cfg.nodeEnv;
|
||||
NODE_PATH = "${pkgs.nodePackages.node-uptime}/lib/node_modules/node-uptime/node_modules";
|
||||
};
|
||||
preStart = "mkdir -p /var/lib/uptime";
|
||||
serviceConfig.ExecStart = "${pkgs.lib.getExe pkgs.nodejs-slim} ${pkgs.nodePackages.node-uptime}/lib/node_modules/node-uptime/app.js";
|
||||
};
|
||||
|
||||
services.mongodb.enable = mkIf (!cfg.usesRemoteMongo) true;
|
||||
})
|
||||
(mkIf cfg.enableSeparateMonitoringService {
|
||||
systemd.services.uptime-monitor = {
|
||||
description = "uptime monitoring service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = optional cfg.enableWebService "uptime.service";
|
||||
after = optional cfg.enableWebService "uptime.service";
|
||||
environment = {
|
||||
NODE_CONFIG_DIR = configDir;
|
||||
NODE_ENV = cfg.nodeEnv;
|
||||
NODE_PATH = "${pkgs.nodePackages.node-uptime}/lib/node_modules/node-uptime/node_modules";
|
||||
};
|
||||
# Ugh, need to wait for web service to be up
|
||||
preStart = if cfg.enableWebService then "sleep 1s" else "mkdir -p /var/lib/uptime";
|
||||
serviceConfig.ExecStart = "${pkgs.lib.getExe pkgs.nodejs-slim} ${pkgs.nodePackages.node-uptime}/lib/node_modules/node-uptime/monitor.js";
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
@@ -61,7 +61,7 @@ in
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.nodePackages.peerflix-server}/bin/peerflix-server";
|
||||
ExecStart = "${pkgs.peerflix-server}/bin/peerflix-server";
|
||||
User = "peerflix";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -187,6 +187,9 @@ in
|
||||
|
||||
NoNewPrivileges = true;
|
||||
ProtectSystem = "strict";
|
||||
ReadWritePaths =
|
||||
lib.optional (lib.hasPrefix "/" cfg.dataDir) cfg.dataDir
|
||||
++ lib.optional (cfg.options.calibreLibrary != null) cfg.options.calibreLibrary;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
PrivateIPC = true;
|
||||
|
||||
@@ -15,12 +15,12 @@ in
|
||||
{
|
||||
imports = [
|
||||
(lib.mkChangedOptionModule
|
||||
[ "services" "kavita" "ipAddresses" ]
|
||||
[ "services" "kavita" "ipAdresses" ]
|
||||
[ "services" "kavita" "settings" "IpAddresses" ]
|
||||
(
|
||||
config:
|
||||
let
|
||||
value = lib.getAttrFromPath [ "services" "kavita" "ipAddresses" ] config;
|
||||
value = lib.getAttrFromPath [ "services" "kavita" "ipAdresses" ] config;
|
||||
in
|
||||
lib.concatStringsSep "," value
|
||||
)
|
||||
|
||||
+26
-9
@@ -9,13 +9,30 @@ with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.eintopf;
|
||||
cfg = config.services.lauti;
|
||||
useLegacyDefault = lib.versionOlder config.system.stateVersion "26.05";
|
||||
default = if useLegacyDefault then "eintopf" else "lauti";
|
||||
|
||||
in
|
||||
{
|
||||
options.services.eintopf = {
|
||||
|
||||
enable = mkEnableOption "Lauti (Eintopf) community event calendar web app";
|
||||
imports = [
|
||||
# since 0.12.0 (2025-05-26) release, upstream re-branded project to 'stalwart' due to inclusion of collaboration features (CalDAV, CardDAV, and WebDAV)
|
||||
# https://github.com/stalwartlabs/stalwart/releases/tag/v0.12.0
|
||||
(lib.mkRenamedOptionModule [ "services" "eintopf" ] [ "services" "lauti" ])
|
||||
];
|
||||
|
||||
options.services.lauti = {
|
||||
|
||||
enable = mkEnableOption "Lauti community event calendar web app";
|
||||
|
||||
dataDir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = if useLegacyDefault then "/var/lib/eintopf" else "/var/lib/lauti";
|
||||
description = ''
|
||||
Data directory for Lauti
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
@@ -27,9 +44,9 @@ in
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
EINTOPF_ADDR = ":1234";
|
||||
EINTOPF_ADMIN_EMAIL = "admin@example.org";
|
||||
EINTOPF_TIMEZONE = "Europe/Berlin";
|
||||
LAUTI_ADDR = ":1234";
|
||||
LAUTI_ADMIN_EMAIL = "admin@example.org";
|
||||
LAUTI_TIMEZONE = "Europe/Berlin";
|
||||
}
|
||||
'';
|
||||
};
|
||||
@@ -47,7 +64,7 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.eintopf = {
|
||||
systemd.services.lauti = {
|
||||
description = "Community event calendar web app";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
@@ -55,8 +72,8 @@ in
|
||||
environment = cfg.settings;
|
||||
serviceConfig = {
|
||||
ExecStart = lib.getExe pkgs.lauti;
|
||||
WorkingDirectory = "/var/lib/eintopf";
|
||||
StateDirectory = "eintopf";
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
StateDirectory = default;
|
||||
EnvironmentFile = [ cfg.secrets ];
|
||||
|
||||
# hardening
|
||||
@@ -128,7 +128,7 @@ in
|
||||
To support uploading of images for avatars and document attachments an
|
||||
s3-compatible storage can be provided. AWS S3 is recommended for
|
||||
redundancy however if you want to keep all file storage local an
|
||||
alternative such as [minio](https://github.com/minio/minio)
|
||||
alternative such as [garage](https://garagehq.deuxfleurs.fr/)
|
||||
can be used.
|
||||
Local filesystem storage can also be used.
|
||||
|
||||
@@ -139,7 +139,7 @@ in
|
||||
{
|
||||
accessKey = "...";
|
||||
secretKeyFile = "/somewhere";
|
||||
uploadBucketUrl = "https://minio.example.com";
|
||||
uploadBucketUrl = "https://garage.example.com";
|
||||
uploadBucketName = "outline";
|
||||
region = "us-east-1";
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
@@ -14,12 +13,15 @@ let
|
||||
elem
|
||||
isList
|
||||
literalExpression
|
||||
mapAttrs'
|
||||
mapAttrsToList
|
||||
mkIf
|
||||
mkMerge
|
||||
mkOption
|
||||
mkOrder
|
||||
mkRenamedOptionModule
|
||||
mkRemovedOptionModule
|
||||
nameValuePair
|
||||
optionalAttrs
|
||||
types
|
||||
;
|
||||
@@ -132,6 +134,27 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
dnsDelegates = mkOption {
|
||||
description = ''
|
||||
dns-delegate files to be created.
|
||||
See {manpage}`systemd.dns-delegate(5)` for more info.
|
||||
'';
|
||||
default = { };
|
||||
type = types.attrsOf (
|
||||
types.submodule {
|
||||
options.Delegate = mkOption {
|
||||
description = ''
|
||||
Settings option for systemd dns-delegate files.
|
||||
See {manpage}`systemd.dns-delegate(5)` for all available options.
|
||||
'';
|
||||
type = types.submodule {
|
||||
freeformType = types.attrsOf unitOption;
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
boot.initrd.services.resolved.enable = mkOption {
|
||||
@@ -167,7 +190,12 @@ in
|
||||
systemd.services.systemd-resolved = {
|
||||
wantedBy = [ "sysinit.target" ];
|
||||
aliases = [ "dbus-org.freedesktop.resolve1.service" ];
|
||||
reloadTriggers = [ config.environment.etc."systemd/resolved.conf".source ];
|
||||
reloadTriggers = [
|
||||
config.environment.etc."systemd/resolved.conf".source
|
||||
]
|
||||
++ mapAttrsToList (
|
||||
name: _: config.environment.etc."systemd/dns-delegate.d/${name}.dns-delegate".source
|
||||
) cfg.dnsDelegates;
|
||||
stopIfChanged = false;
|
||||
};
|
||||
|
||||
@@ -180,7 +208,13 @@ in
|
||||
}
|
||||
// optionalAttrs dnsmasqResolve {
|
||||
"dnsmasq-resolv.conf".source = "/run/systemd/resolve/resolv.conf";
|
||||
};
|
||||
}
|
||||
// mapAttrs' (
|
||||
name: value:
|
||||
nameValuePair "systemd/dns-delegate.d/${name}.dns-delegate" {
|
||||
text = settingsToSections (transformSettings value);
|
||||
}
|
||||
) cfg.dnsDelegates;
|
||||
|
||||
# If networkmanager is enabled, ask it to interface with resolved.
|
||||
networking.networkmanager.dns = "systemd-resolved";
|
||||
|
||||
@@ -470,13 +470,17 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
sleep.extraConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
example = "HibernateDelaySec=1h";
|
||||
sleep.settings.Sleep = mkOption {
|
||||
default = { };
|
||||
type = lib.types.submodule {
|
||||
freeformType = types.attrsOf unitOption;
|
||||
};
|
||||
example = {
|
||||
HibernateDelaySec = "1h";
|
||||
};
|
||||
description = ''
|
||||
Extra config options for systemd sleep state logic.
|
||||
See {manpage}`sleep.conf.d(5)` man page for available options.
|
||||
Options for systemd sleep state logic. See {manpage}`sleep.conf.d(5)` man page
|
||||
for available options.
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -637,10 +641,7 @@ in
|
||||
|
||||
"systemd/system.conf".text = settingsToSections cfg.settings;
|
||||
|
||||
"systemd/sleep.conf".text = ''
|
||||
[Sleep]
|
||||
${cfg.sleep.extraConfig}
|
||||
'';
|
||||
"systemd/sleep.conf".text = settingsToSections cfg.sleep.settings;
|
||||
|
||||
"systemd/user-generators" = {
|
||||
source = hooks "user-generators" cfg.user.generators;
|
||||
@@ -878,6 +879,11 @@ in
|
||||
NixOS does not officially support this configuration and might cause your system to be unbootable in future versions. You are on your own.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "systemd" "extraConfig" ] "Use systemd.settings.Manager instead.")
|
||||
(mkRemovedOptionModule [
|
||||
"systemd"
|
||||
"sleep"
|
||||
"extraConfig"
|
||||
] "Use systemd.sleep.settings.Sleep instead.")
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "systemd" "watchdog" "device" ]
|
||||
[ "systemd" "settings" "Manager" "WatchdogDevice" ]
|
||||
|
||||
@@ -1249,6 +1249,7 @@ in
|
||||
peerflix = runTest ./peerflix.nix;
|
||||
peering-manager = runTest ./web-apps/peering-manager.nix;
|
||||
peertube = handleTestOn [ "x86_64-linux" ] ./web-apps/peertube.nix { };
|
||||
perses = runTest ./perses.nix;
|
||||
pgadmin4 = runTest ./pgadmin4.nix;
|
||||
pgbackrest = import ./pgbackrest { inherit runTest; };
|
||||
pgbouncer = runTest ./pgbouncer.nix;
|
||||
|
||||
@@ -5,20 +5,20 @@
|
||||
}:
|
||||
|
||||
{
|
||||
name = "eintopf";
|
||||
name = "lauti";
|
||||
meta.maintainers = with lib.maintainers; [ onny ];
|
||||
|
||||
nodes = {
|
||||
eintopf = {
|
||||
services.eintopf.enable = true;
|
||||
lauti = {
|
||||
services.lauti.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
eintopf.start
|
||||
eintopf.wait_for_unit("eintopf.service")
|
||||
eintopf.wait_for_open_port(3333)
|
||||
eintopf.succeed("curl -sSfL http://eintopf:3333 | grep 'No events available'")
|
||||
lauti.start
|
||||
lauti.wait_for_unit("lauti.service")
|
||||
lauti.wait_for_open_port(3333)
|
||||
lauti.succeed("curl -sSfL http://lauti:3333 | grep 'No events available'")
|
||||
'';
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
{ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
name = "perses";
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ fooker ];
|
||||
|
||||
nodes.prometheus = {
|
||||
services.prometheus.enable = true;
|
||||
networking.firewall.allowedTCPPorts = [ 9090 ];
|
||||
};
|
||||
|
||||
nodes.machine = {
|
||||
services.perses = {
|
||||
enable = true;
|
||||
|
||||
settings.provisioning.folders = [
|
||||
(pkgs.writeTextDir "perses-test-provision-project.yaml" ''
|
||||
kind: "Project"
|
||||
metadata:
|
||||
name: "my-project"
|
||||
'')
|
||||
(pkgs.writeTextDir "perses-test-provision-datasource.yaml" ''
|
||||
kind: "Datasource"
|
||||
metadata:
|
||||
name: "my-prometheus"
|
||||
project: "my-project"
|
||||
spec:
|
||||
default: true
|
||||
plugin:
|
||||
kind: "PrometheusDatasource"
|
||||
spec:
|
||||
proxy:
|
||||
kind: "HTTPProxy"
|
||||
spec:
|
||||
url: "http://prometheus:9090/"
|
||||
'')
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
|
||||
prometheus.wait_for_unit("prometheus.service")
|
||||
prometheus.wait_for_open_port(9090)
|
||||
|
||||
with subtest("Perses starts"):
|
||||
machine.wait_for_unit("perses.service")
|
||||
machine.wait_for_open_port(8080)
|
||||
machine.succeed("percli login http://127.0.0.1:8080")
|
||||
machine.succeed("percli version")
|
||||
machine.succeed("percli config")
|
||||
machine.succeed("percli plugin list | grep 'Prometheus'")
|
||||
|
||||
with subtest("Query resources"):
|
||||
machine.succeed("percli get projects | grep my-project")
|
||||
machine.succeed("percli project my-project")
|
||||
machine.succeed("percli get datasources | grep my-prometheus")
|
||||
machine.succeed("curl --fail -s 127.0.0.1:8080/api/v1/projects/my-project/datasources/my-prometheus")
|
||||
|
||||
with subtest("Datasource check"):
|
||||
machine.succeed("curl --fail -s http://127.0.0.1:8080/proxy/projects/my-project/datasources/my-prometheus/api/v1/status/config")
|
||||
'';
|
||||
}
|
||||
@@ -36,13 +36,48 @@
|
||||
};
|
||||
};
|
||||
|
||||
nodes.delegate_server =
|
||||
{ lib, config, ... }:
|
||||
let
|
||||
delegateZone = pkgs.writeTextDir "delegated.example.org.zone" ''
|
||||
@ SOA ns.delegated.example.org. noc.delegated.example.org. 2019031301 86400 7200 3600000 172800
|
||||
test A ${(lib.head config.networking.interfaces.eth1.ipv4.addresses).address}
|
||||
test AAAA ${(lib.head config.networking.interfaces.eth1.ipv6.addresses).address}
|
||||
'';
|
||||
in
|
||||
{
|
||||
networking.firewall.enable = false;
|
||||
networking.useDHCP = false;
|
||||
|
||||
networking.interfaces.eth1.ipv6.addresses = lib.mkForce [
|
||||
{
|
||||
address = "fd00::3";
|
||||
prefixLength = 64;
|
||||
}
|
||||
];
|
||||
|
||||
services.knot = {
|
||||
enable = true;
|
||||
settings = {
|
||||
server.listen = [
|
||||
"0.0.0.0@53"
|
||||
"::@53"
|
||||
];
|
||||
template.default.storage = delegateZone;
|
||||
zone."delegated.example.org".file = "delegated.example.org.zone";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
nodes.client =
|
||||
{ nodes, ... }:
|
||||
let
|
||||
inherit (lib.head nodes.server.networking.interfaces.eth1.ipv4.addresses) address;
|
||||
serverAddress = (lib.head nodes.server.networking.interfaces.eth1.ipv4.addresses).address;
|
||||
delegateAddress =
|
||||
(lib.head nodes.delegate_server.networking.interfaces.eth1.ipv4.addresses).address;
|
||||
in
|
||||
{
|
||||
networking.nameservers = [ address ];
|
||||
networking.nameservers = [ serverAddress ];
|
||||
networking.interfaces.eth1.ipv6.addresses = lib.mkForce [
|
||||
{
|
||||
address = "fd00::2";
|
||||
@@ -51,6 +86,12 @@
|
||||
];
|
||||
services.resolved.enable = true;
|
||||
services.resolved.settings.Resolve.FallbackDNS = [ ];
|
||||
services.resolved.dnsDelegates.example-org = {
|
||||
Delegate = {
|
||||
DNS = delegateAddress;
|
||||
Domains = [ "delegated.example.org" ];
|
||||
};
|
||||
};
|
||||
networking.useNetworkd = true;
|
||||
networking.useDHCP = false;
|
||||
systemd.network.networks."40-eth0".enable = false;
|
||||
@@ -69,23 +110,35 @@
|
||||
let
|
||||
address4 = (lib.head nodes.server.networking.interfaces.eth1.ipv4.addresses).address;
|
||||
address6 = (lib.head nodes.server.networking.interfaces.eth1.ipv6.addresses).address;
|
||||
delegateAddress4 =
|
||||
(lib.head nodes.delegate_server.networking.interfaces.eth1.ipv4.addresses).address;
|
||||
delegateAddress6 =
|
||||
(lib.head nodes.delegate_server.networking.interfaces.eth1.ipv6.addresses).address;
|
||||
in
|
||||
#python
|
||||
''
|
||||
start_all()
|
||||
server.wait_for_unit("multi-user.target")
|
||||
delegate_server.wait_for_unit("multi-user.target")
|
||||
|
||||
def test_client():
|
||||
query = client.succeed("resolvectl query example.com")
|
||||
assert "${address4}" in query
|
||||
assert "${address6}" in query
|
||||
client.succeed("ping -4 -c 1 example.com")
|
||||
client.succeed("ping -6 -c 1 example.com")
|
||||
def test_resolve(domain, expected_addrs):
|
||||
query = client.succeed(f"resolvectl query {domain}")
|
||||
for addr in expected_addrs:
|
||||
assert addr in query, f"Expected {addr} in: {query}"
|
||||
client.succeed(f"ping -4 -c 1 {domain}")
|
||||
client.succeed(f"ping -6 -c 1 {domain}")
|
||||
|
||||
with subtest("resolve in initrd"):
|
||||
client.wait_for_unit("initrd.target")
|
||||
test_resolve("example.com", ["${address4}", "${address6}"])
|
||||
|
||||
client.wait_for_unit("initrd.target")
|
||||
test_client()
|
||||
client.switch_root()
|
||||
|
||||
client.wait_for_unit("multi-user.target")
|
||||
test_client()
|
||||
with subtest("resolve after switch-root"):
|
||||
client.wait_for_unit("multi-user.target")
|
||||
test_resolve("example.com", ["${address4}", "${address6}"])
|
||||
|
||||
with subtest("dns-delegate resolves delegated subdomain"):
|
||||
test_resolve("test.delegated.example.org", ["${delegateAddress4}", "${delegateAddress6}"])
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -0,0 +1,254 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i python3 -p nix git
|
||||
|
||||
import argparse
|
||||
import contextlib
|
||||
import dataclasses
|
||||
import datetime
|
||||
import logging
|
||||
import os
|
||||
import pathlib
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import urllib.request
|
||||
|
||||
@dataclasses.dataclass
|
||||
class EmacsOverlay:
|
||||
git_url : str = f'https://github.com/nix-community/emacs-overlay'
|
||||
raw_url : str = f'https://raw.githubusercontent.com/nix-community/emacs-overlay'
|
||||
# The field declaration here is a hack around the error:
|
||||
# ValueError: mutable default <class 'dict'> for field elisp_packages_set is not allowed: use default_factory
|
||||
# See more at https://peps.python.org/pep-0557/#mutable-default-values
|
||||
elisp_packages_set : dict[str, dict] = dataclasses.field(default_factory = lambda: {
|
||||
'elpa': {
|
||||
'location': 'repos/elpa',
|
||||
'basename': 'elpa-generated.nix',
|
||||
'nix_attrs': ['elpaPackages']
|
||||
},
|
||||
'elpa-devel': {
|
||||
'location': 'repos/elpa',
|
||||
'basename': 'elpa-devel-generated.nix',
|
||||
'nix_attrs': ['elpaDevelPackages']
|
||||
},
|
||||
'melpa': {
|
||||
'location': 'repos/melpa',
|
||||
'basename': 'recipes-archive-melpa.json',
|
||||
'nix_attrs': ['melpaPackages',
|
||||
'melpaStablePackages']
|
||||
},
|
||||
'nongnu': {
|
||||
'location': 'repos/nongnu',
|
||||
'basename': 'nongnu-generated.nix',
|
||||
'nix_attrs': ['nongnuPackages']
|
||||
},
|
||||
'nongnu-devel': {
|
||||
'location': 'repos/nongnu',
|
||||
'basename': 'nongnu-devel-generated.nix',
|
||||
'nix_attrs': ['nongnuDevelPackages']
|
||||
},
|
||||
})
|
||||
|
||||
def master_sha (self) -> str:
|
||||
'''Return the SHA of current master tip.'''
|
||||
cmdline = ['git', 'ls-remote', '--branches', self.git_url, 'refs/heads/master']
|
||||
result = subprocess.run(cmdline, capture_output = True, text = True)
|
||||
return result.stdout.split()[0]
|
||||
|
||||
@dataclasses.dataclass
|
||||
class HereDirectory:
|
||||
path : pathlib.Path = pathlib.Path('.').resolve()
|
||||
|
||||
def git_root(self) -> pathlib.Path:
|
||||
'''Returns the root directory of Git repository.'''
|
||||
cmdline = ['git', 'rev-parse', '--show-toplevel']
|
||||
result = subprocess.run(cmdline, capture_output = True, text = True)
|
||||
|
||||
return pathlib.Path(result.stdout.rstrip()).resolve()
|
||||
|
||||
def main (emacs_overlay : EmacsOverlay,
|
||||
here_directory : HereDirectory,
|
||||
argument_parser : argparse.ArgumentParser) -> None:
|
||||
'''The entry point.'''
|
||||
|
||||
args = argument_parser.parse_args()
|
||||
|
||||
if args.commit == None:
|
||||
sha = emacs_overlay.master_sha()
|
||||
else:
|
||||
sha = args.commit
|
||||
|
||||
match args.loglevel.lower():
|
||||
case 'debug':
|
||||
loglevel = logging.DEBUG
|
||||
case 'info':
|
||||
loglevel = logging.INFO
|
||||
case _:
|
||||
loglevel = logging.INFO
|
||||
|
||||
logger = get_logger(loglevel = loglevel)
|
||||
|
||||
datestring = datetime.datetime.today().strftime('%Y-%m-%d')
|
||||
|
||||
# The loops are decoupled because each phase interferes with the next ones;
|
||||
# e.g. it is pretty possible that an Elisp package updated in fetch_fileset
|
||||
# breaks the check because of another Elisp package.
|
||||
for name in emacs_overlay.elisp_packages_set:
|
||||
fetch_fileset(name, sha,
|
||||
emacs_overlay = emacs_overlay,
|
||||
here_directory = here_directory,
|
||||
logger = logger)
|
||||
|
||||
for name in emacs_overlay.elisp_packages_set:
|
||||
check_fileset(name,
|
||||
emacs_overlay = emacs_overlay,
|
||||
here_directory = here_directory,
|
||||
logger = logger)
|
||||
|
||||
for name in emacs_overlay.elisp_packages_set:
|
||||
commit_fileset(name, sha, datestring = datestring,
|
||||
emacs_overlay = emacs_overlay,
|
||||
here_directory = here_directory,
|
||||
logger = logger)
|
||||
|
||||
def get_argument_parser() -> argparse.ArgumentParser:
|
||||
'''Return a getopt-style parser for command-line arguments.'''
|
||||
parser = argparse.ArgumentParser(
|
||||
description = 'Fetch and commit Elisp package sets from nix-community/emacs-overlay',
|
||||
)
|
||||
parser.add_argument(
|
||||
'--commit',
|
||||
help = 'Commit to be fetched, in SHA format. If not specified, retrieve the master tip.',
|
||||
default = None
|
||||
)
|
||||
parser.add_argument(
|
||||
'--loglevel',
|
||||
help = 'Level of noisiness of logging messages. Values currently supported: INFO (default), DEBUG.',
|
||||
default = 'InFo'
|
||||
)
|
||||
|
||||
return parser
|
||||
|
||||
def get_logger (loglevel: int) -> logging.Logger:
|
||||
'''Return a basic logging facility to emit messages over console (stdout).'''
|
||||
logger = logging.getLogger('update-from-overlay')
|
||||
# Set the lowest level here, so that it does not clobber the one provided by
|
||||
# the function argument
|
||||
logger.setLevel(logging.DEBUG)
|
||||
|
||||
console_formatter = logging.Formatter(fmt='%(asctime)s - %(levelname)s - %(funcName)s - %(message)s',
|
||||
datefmt='[%Y-%m-%d %H:%M:%S]')
|
||||
|
||||
console_handler = logging.StreamHandler(stream = sys.stdout)
|
||||
console_handler.setLevel(loglevel)
|
||||
console_handler.setFormatter(console_formatter)
|
||||
|
||||
logger.addHandler(console_handler)
|
||||
|
||||
return logger
|
||||
|
||||
def fetch_fileset (name: str, sha: str,
|
||||
emacs_overlay : EmacsOverlay,
|
||||
here_directory : HereDirectory,
|
||||
logger : logging.Logger) -> None:
|
||||
'''Fetch a fileset from emacs overlay.
|
||||
|
||||
Arguments:
|
||||
name -- The name of fileset.
|
||||
sha -- The commit SHA of emacs-overlay from which the files are retrieved.
|
||||
'''
|
||||
logger.debug('BEGIN')
|
||||
|
||||
location = emacs_overlay.elisp_packages_set[name]['location']
|
||||
basename = emacs_overlay.elisp_packages_set[name]['basename']
|
||||
url = f'{emacs_overlay.raw_url}/{sha}/{location}/{basename}'
|
||||
|
||||
destination = pathlib.Path(here_directory.path, basename).resolve()
|
||||
|
||||
logger.debug(f'Getting {url}')
|
||||
|
||||
with urllib.request.urlopen (url) as input_stream, open(destination, 'wb') as output_file:
|
||||
logger.info(f'Installing {destination}')
|
||||
shutil.copyfileobj(input_stream, output_file)
|
||||
|
||||
logger.debug('END')
|
||||
|
||||
def check_fileset (name: str,
|
||||
emacs_overlay : EmacsOverlay,
|
||||
here_directory : HereDirectory,
|
||||
logger : logging.Logger) -> None:
|
||||
'''Smoke-test the fileset.
|
||||
|
||||
Arguments:
|
||||
name -- The name of fileset.
|
||||
'''
|
||||
logger.debug('BEGIN')
|
||||
|
||||
for nix_attr in emacs_overlay.elisp_packages_set[name]['nix_attrs']:
|
||||
|
||||
cmdline = ['nix-instantiate', '--show-trace', here_directory.git_root(),
|
||||
'-A', f'emacsPackages.{nix_attr}']
|
||||
environment = os.environ
|
||||
environment['NIXPKGS_ALLOW_BROKEN'] = '1'
|
||||
|
||||
logger.info(f'Testing {nix_attr}')
|
||||
# TODO: capture the output (to put it in the logfile).
|
||||
result = subprocess.run(cmdline, capture_output = True, text = True)
|
||||
logger.debug(f'''
|
||||
Shell Command: {result.args}
|
||||
Output:
|
||||
{result.stdout}''')
|
||||
|
||||
logger.debug('END')
|
||||
|
||||
def commit_fileset (name: str, sha: str, datestring : str | None,
|
||||
emacs_overlay : EmacsOverlay,
|
||||
here_directory : HereDirectory,
|
||||
logger : logging.Logger) -> None:
|
||||
'''Commit the fileset.
|
||||
|
||||
Arguments:
|
||||
name -- The name of fileset.
|
||||
sha -- The commit SHA of emacs-overlay from which the files are retrieved.
|
||||
datestring -- The date to be written on commit message. If None, use the current time.
|
||||
'''
|
||||
logger.debug('BEGIN')
|
||||
|
||||
nix_attrs = emacs_overlay.elisp_packages_set[name]['nix_attrs']
|
||||
basename = emacs_overlay.elisp_packages_set[name]['basename']
|
||||
|
||||
if datestring == None:
|
||||
datestring = datetime.datetime.today().strftime('%Y-%m-%d')
|
||||
logger.debug(f'Date string not provided, using {datestring}')
|
||||
else:
|
||||
logger.debug(f'Date string was provided: {datestring}')
|
||||
|
||||
cmdline_verify = ['git', 'diff', '--exit-code', '--quiet', '--', basename]
|
||||
result_verify = subprocess.run(cmdline_verify)
|
||||
|
||||
if result_verify.returncode != 0:
|
||||
attrs = ', '.join(nix_attrs)
|
||||
commit_message = f'''{attrs}: Updated at {datestring} (from emacs-overlay)
|
||||
|
||||
emacs-overlay commit: {sha}
|
||||
'''
|
||||
cmdline_commit = ['git', 'commit', '--message', commit_message, '--', basename]
|
||||
result_commit = subprocess.run(cmdline_commit, capture_output = True, text = True)
|
||||
logger.info(f'File {basename} committed')
|
||||
logger.debug(f'''
|
||||
Shell Command: {result_commit.args}
|
||||
Output:
|
||||
{result_commit.stdout}''')
|
||||
else:
|
||||
logger.info(f'File {basename} not modified, skipping')
|
||||
|
||||
logger.debug('END')
|
||||
|
||||
if __name__ == '__main__':
|
||||
emacs_overlay = EmacsOverlay()
|
||||
here_directory = HereDirectory()
|
||||
argument_parser = get_argument_parser()
|
||||
with contextlib.chdir(here_directory.path):
|
||||
main(emacs_overlay = emacs_overlay,
|
||||
here_directory = here_directory,
|
||||
argument_parser = argument_parser)
|
||||
@@ -128,11 +128,10 @@ lib.extendMkDerivation {
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/{bin,$pname,share/pixmaps,share/icons/hicolor/scalable/apps}
|
||||
mkdir -p $out/{bin,$pname,share/icons/hicolor/scalable/apps,share/icons/hicolor/128x128/apps}
|
||||
cp -a . $out/$pname
|
||||
[[ -f $out/$pname/bin/${loName}.png ]] && ln -s $out/$pname/bin/${loName}.png $out/share/pixmaps/${pname}.png
|
||||
[[ -f $out/$pname/bin/${loName}.svg ]] && ln -s $out/$pname/bin/${loName}.svg $out/share/pixmaps/${pname}.svg \
|
||||
&& ln -s $out/$pname/bin/${loName}.svg $out/share/icons/hicolor/scalable/apps/${pname}.svg
|
||||
[[ -f $out/$pname/bin/${loName}.png ]] && ln -s $out/$pname/bin/${loName}.png $out/share/icons/hicolor/128x128/apps/${pname}.png
|
||||
[[ -f $out/$pname/bin/${loName}.svg ]] && ln -s $out/$pname/bin/${loName}.svg $out/share/icons/hicolor/scalable/apps/${pname}.svg
|
||||
cp ${libdbm}/lib/libdbm.so $out/$pname/bin/libdbm.so
|
||||
cp ${fsnotifier}/bin/fsnotifier $out/$pname/bin/fsnotifier
|
||||
|
||||
|
||||
@@ -14139,6 +14139,19 @@ final: prev: {
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
screensaver-nvim = buildVimPlugin {
|
||||
pname = "screensaver.nvim";
|
||||
version = "0-unstable-2026-03-02";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Root-lee";
|
||||
repo = "screensaver.nvim";
|
||||
rev = "38cf0b8a96b5f4a5e765ce32d43a416441462179";
|
||||
hash = "sha256-4eiGIhy/J7wZm++wMx4zAKp5qeDQCApwPSVm8P5w5O0=";
|
||||
};
|
||||
meta.homepage = "https://github.com/Root-lee/screensaver.nvim/";
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
scretch-nvim = buildVimPlugin {
|
||||
pname = "scretch.nvim";
|
||||
version = "1.2.3-unstable-2025-09-11";
|
||||
@@ -19247,6 +19260,19 @@ final: prev: {
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
vim-hypr-nav = buildVimPlugin {
|
||||
pname = "vim-hypr-nav";
|
||||
version = "0-unstable-2023-11-29";
|
||||
src = fetchFromGitHub {
|
||||
owner = "nuchs";
|
||||
repo = "vim-hypr-nav";
|
||||
rev = "6ab4865a7eb5aad35305298815a4563c9d48556a";
|
||||
hash = "sha256-V4a9D3HpT1SZUrUc1XrC6SsrtKmIcFxdSVmq0Gwt/Ik=";
|
||||
};
|
||||
meta.homepage = "https://github.com/nuchs/vim-hypr-nav/";
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
vim-iced-coffee-script = buildVimPlugin {
|
||||
pname = "vim-iced-coffee-script";
|
||||
version = "0-unstable-2013-12-26";
|
||||
|
||||
@@ -3303,6 +3303,14 @@ assertNoAdditions {
|
||||
dependencies = [ self.plenary-nvim ];
|
||||
};
|
||||
|
||||
screensaver-nvim = super.screensaver-nvim.overrideAttrs (old: {
|
||||
meta = old.meta // {
|
||||
description = "Screensaver plugin for Neovim";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ m3l6h ];
|
||||
};
|
||||
});
|
||||
|
||||
scretch-nvim = super.scretch-nvim.overrideAttrs {
|
||||
};
|
||||
|
||||
@@ -4124,6 +4132,10 @@ assertNoAdditions {
|
||||
buildInputs = [ vim ];
|
||||
};
|
||||
|
||||
vim-hypr-nav = super.vim-hypr-nav.overrideAttrs {
|
||||
runtimeDeps = [ jq ];
|
||||
};
|
||||
|
||||
vim-isort = super.vim-isort.overrideAttrs {
|
||||
postPatch = ''
|
||||
substituteInPlace autoload/vimisort.vim \
|
||||
|
||||
@@ -1086,6 +1086,7 @@ https://github.com/lewis6991/satellite.nvim/,HEAD,
|
||||
https://github.com/cenk1cenk2/schema-companion.nvim/,HEAD,
|
||||
https://github.com/davidgranstrom/scnvim/,HEAD,
|
||||
https://github.com/tiagovla/scope.nvim/,HEAD,
|
||||
https://github.com/Root-lee/screensaver.nvim/,HEAD,
|
||||
https://github.com/0xJohnnyboy/scretch.nvim/,HEAD,
|
||||
https://github.com/Xuyuanp/scrollbar.nvim/,,
|
||||
https://github.com/cakebaker/scss-syntax.vim/,,
|
||||
@@ -1478,6 +1479,7 @@ https://github.com/vim-utils/vim-husk/,,
|
||||
https://github.com/hylang/vim-hy/,HEAD,
|
||||
https://github.com/w0ng/vim-hybrid/,,
|
||||
https://github.com/kristijanhusak/vim-hybrid-material/,,
|
||||
https://github.com/nuchs/vim-hypr-nav/,HEAD,
|
||||
https://github.com/noc7c9/vim-iced-coffee-script/,,
|
||||
https://github.com/RRethy/vim-illuminate/,,
|
||||
https://github.com/preservim/vim-indent-guides/,,
|
||||
|
||||
@@ -4322,8 +4322,8 @@ let
|
||||
mktplcRef = {
|
||||
publisher = "sonarsource";
|
||||
name = "sonarlint-vscode";
|
||||
version = "4.43.0";
|
||||
hash = "sha256-cpd8+fbp57l+XYBuDnz95lmKzJ8IUHu937KWHsLXrPk=";
|
||||
version = "4.44.0";
|
||||
hash = "sha256-6P29hCcOpEWNXSArnMPiWVwbbyhzlS1LCh3uSDWEfJo=";
|
||||
};
|
||||
meta.license = lib.licenses.lgpl3Only;
|
||||
};
|
||||
|
||||
@@ -80,7 +80,6 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
platforms = builtins.attrNames supported;
|
||||
maintainers = [
|
||||
lib.maintainers.jraygauthier
|
||||
lib.maintainers.jfchevrette
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -21,13 +21,13 @@ assert
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "box64";
|
||||
version = "0.3.8";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ptitSeb";
|
||||
repo = "box64";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-PVzv1790UhWbqLmw/93+mU3Gw8lQek7NBls4LXks4wQ=";
|
||||
hash = "sha256-ihg7sos2pyyZjXiYMct/gg/ianiu0yagNtXio+A7J3c=";
|
||||
};
|
||||
|
||||
# Setting cpu doesn't seem to work (or maybe isn't enough / gets overwritten by the wrapper's arch flag?), errors about unsupported instructions for target
|
||||
@@ -82,20 +82,16 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
$out/bin/box64 -v
|
||||
|
||||
echo Checking if Dynarec option was respected
|
||||
$out/bin/box64 -v | grep ${lib.optionalString (!withDynarec) "-v"} Dynarec
|
||||
$out/bin/box64 -v 2>&1 | grep ${lib.optionalString (!withDynarec) "-v"} Dynarec
|
||||
|
||||
runHook postInstallCheck
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = gitUpdater { rev-prefix = "v"; };
|
||||
tests.hello =
|
||||
runCommand "box64-test-hello" { nativeBuildInputs = [ finalAttrs.finalPackage ]; }
|
||||
# There is no actual "Hello, world!" with any of the logging enabled, and with all logging disabled it's hard to
|
||||
# tell what problems the emulator has run into.
|
||||
''
|
||||
BOX64_NOBANNER=0 BOX64_LOG=1 box64 ${lib.getExe hello-x86_64} --version | tee $out
|
||||
'';
|
||||
tests.hello = runCommand "box64-test-hello" { nativeBuildInputs = [ finalAttrs.finalPackage ]; } ''
|
||||
BOX64_LOG=1 box64 ${lib.getExe hello-x86_64} --version 2>&1 | tee $out
|
||||
'';
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "mame2003-plus";
|
||||
version = "0-unstable-2026-01-16";
|
||||
version = "0-unstable-2026-02-27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "mame2003-plus-libretro";
|
||||
rev = "b9b7bfaa2d9e40ca5b94af1f6e9ec77332e4f6c3";
|
||||
hash = "sha256-92lHdfYlITWPO4uVzVf3l+rm3RPyUu7/dO6h9t/+A4Q=";
|
||||
rev = "3a69de934a184cda6551c64ab4b503b0c2958634";
|
||||
hash = "sha256-+/semhVh3TgqHYYhzFjOy7cjzQgFxoWxlgz9e34Zvt4=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "puae";
|
||||
version = "0-unstable-2025-11-02";
|
||||
version = "0-unstable-2026-02-27";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "libretro-uae";
|
||||
rev = "0043cf9c061bd9b81dbc1869c2761017139cfc63";
|
||||
hash = "sha256-xi/7zT+4LNfSMwfA+rvxdvsgpQRHceK6Heqrcy84RVk=";
|
||||
rev = "bea8c084beaf576f54dc1be42d715d424265cda2";
|
||||
hash = "sha256-CU/BVXys7VBra4qaMBjTgKQP1hke7+wqJ2RMYUXIXlo=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "kubectl-view-allocations";
|
||||
version = "1.0.0";
|
||||
version = "1.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "davidB";
|
||||
repo = "kubectl-view-allocations";
|
||||
tag = version;
|
||||
hash = "sha256-R4pxbIUY9QEsblbVv2/QbWZv7A/ZDQmUnOCYB34RkdE=";
|
||||
hash = "sha256-AZsieePjIFY3xXG39tfwSvRcNgLdvEQSKALXgRCkuc4=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-liExE40Ldel1G4RT3P1y5Da65RJSrc7HD+52SwW0oeg=";
|
||||
cargoHash = "sha256-0bStmuLFkYsyd7rJlHA7/rXGtlh2CvjXWPnDwoq33v4=";
|
||||
|
||||
doInstallCheck = true;
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
|
||||
@@ -472,13 +472,13 @@
|
||||
"vendorHash": "sha256-mzDFyk2oImRXt72kFV5Ln++ScgoecpJEJtzUKjvCaws="
|
||||
},
|
||||
"grafana_grafana": {
|
||||
"hash": "sha256-EO18AHTtuchRpHxcXa5shmCpoLR91Ows8doBUTjollI=",
|
||||
"hash": "sha256-ski6B1mZCILcMM6JBWHx0IelYmx0UdDwPYi13PSgIAo=",
|
||||
"homepage": "https://registry.terraform.io/providers/grafana/grafana",
|
||||
"owner": "grafana",
|
||||
"repo": "terraform-provider-grafana",
|
||||
"rev": "v4.25.0",
|
||||
"rev": "v4.26.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-5+nBYEAdiyNYsZsWvghciCYixQB3ojRlpSiSdjNWDHY="
|
||||
"vendorHash": "sha256-64XspOrtBa97fj9DXUQb6siecDfBQETqKvfwckjzU3c="
|
||||
},
|
||||
"gridscale_gridscale": {
|
||||
"hash": "sha256-FAKvQ/MEod5Ck0PG4ffQ+gQp6zZ0JDRXPOrOiDpWMls=",
|
||||
@@ -508,13 +508,13 @@
|
||||
"vendorHash": "sha256-ukDTmgzd4aJ2SJ27qofCtagRTWlP9foF/WwrTkmZEI4="
|
||||
},
|
||||
"hashicorp_awscc": {
|
||||
"hash": "sha256-eJ4GiOkohhbuwsKtvoDlUM933F3Fd3b5HMLG3mjHBvA=",
|
||||
"hash": "sha256-nyHKE0bpu7vbOE8uDwqaFjeAdXeMf324FjPb6stRiFU=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/awscc",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-awscc",
|
||||
"rev": "v1.68.0",
|
||||
"rev": "v1.73.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-udGQHfLQ/gc73ZhbO7Wko5MUhkeFpIvSGCDgPkYAG38="
|
||||
"vendorHash": "sha256-NKuuX63rVjUk/+cqR4o/nWIsyNS2uUrAu/9fG3aWBwc="
|
||||
},
|
||||
"hashicorp_azuread": {
|
||||
"hash": "sha256-BkQwLkGu8Xmb4laoXOLDbSPyya5v8HBBNIya5hUBlV8=",
|
||||
@@ -1031,11 +1031,11 @@
|
||||
"vendorHash": "sha256-ofzbDmivXgH1i1Gjhpyp0bk3FDs5SnxwoRuNAWyMqyI="
|
||||
},
|
||||
"opentelekomcloud_opentelekomcloud": {
|
||||
"hash": "sha256-ak1shQaEyxYHAwZKg5ELh9y7nvpfwuPk3TGDpcm3GY4=",
|
||||
"hash": "sha256-EVHAWkNScPJCwHvmW1Lt/9qVwYjxDxtTTa3SC1dLSXw=",
|
||||
"homepage": "https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud",
|
||||
"owner": "opentelekomcloud",
|
||||
"repo": "terraform-provider-opentelekomcloud",
|
||||
"rev": "v1.36.59",
|
||||
"rev": "v1.36.60",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-WPVk+wlAK6O2xXjyXekYu9svpEg0AFz9EnDGGTS9I3c="
|
||||
},
|
||||
|
||||
+2
-2
@@ -42,14 +42,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "telegram-desktop-unwrapped";
|
||||
version = "6.5.1";
|
||||
version = "6.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "telegramdesktop";
|
||||
repo = "tdesktop";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-y2sf2wDJ6dYxRdDLKIr78z9tPBIoh2WICg4zJBmb85Q=";
|
||||
hash = "sha256-qFKOY+SS5aQcZhIP2MChDy8gRK7ynKAXCm3Ifzub41w=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -86,6 +86,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
(cmakeBool "ENABLE_MAC" false) # requires xcodebuild
|
||||
(cmakeBool "ENABLE_QT" (enableQt5 || enableQt6))
|
||||
(cmakeBool "INSTALL_LIB" installLib)
|
||||
(cmakeBool "RUN_CLANG_TIDY" false)
|
||||
]
|
||||
++ optionals stdenv.hostPlatform.isDarwin [
|
||||
# Transmission sets this to 10.13 if not explicitly specified, see https://github.com/transmission/transmission/blob/0be7091eb12f4eb55f6690f313ef70a66795ee72/CMakeLists.txt#L7-L16.
|
||||
|
||||
@@ -24,13 +24,13 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "pulseview";
|
||||
version = "0.4.2-unstable-2025-05-15";
|
||||
version = "0.5.0-unstable-2025-11-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sigrokproject";
|
||||
repo = "pulseview";
|
||||
rev = "e2fe9dfb91c7de85c410922ee9268c3f526bcc54";
|
||||
hash = "sha256-b9pqtsF5J9MA7XMIgFZltrVqi64ZPObBTiaws3zSDRg=";
|
||||
rev = "af02198741b4e57c9f9b796bd5e6c0f2ae9f2f2b";
|
||||
hash = "sha256-4K3sMCTlFnu8iiokMYc1O7jNVQ7vTtSiT2dCpLRC44s=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,28 +1,28 @@
|
||||
{
|
||||
"stable": {
|
||||
"linux": {
|
||||
"version": "8.12.2",
|
||||
"version": "8.12.5",
|
||||
"sources": {
|
||||
"x86_64": {
|
||||
"url": "https://downloads.1password.com/linux/tar/stable/x86_64/1password-8.12.2.x64.tar.gz",
|
||||
"hash": "sha256-vJ+GwQjlDCn6723q1+/xFUFkN9XjI9/0eCftmYQgS1s="
|
||||
"url": "https://downloads.1password.com/linux/tar/stable/x86_64/1password-8.12.5.x64.tar.gz",
|
||||
"hash": "sha256-oa94KXgl4R/HElxSs8CLI5mvpT/4AYHfvODkGr3itJU="
|
||||
},
|
||||
"aarch64": {
|
||||
"url": "https://downloads.1password.com/linux/tar/stable/aarch64/1password-8.12.2.arm64.tar.gz",
|
||||
"hash": "sha256-V639cHbGZD/Fvaqa4c5jpei3jF9kNPST8LeYogS4fr8="
|
||||
"url": "https://downloads.1password.com/linux/tar/stable/aarch64/1password-8.12.5.arm64.tar.gz",
|
||||
"hash": "sha256-/y8pU8iXLgKGq2tcIMIiRnO4hiXR6rTPp8jTI43St5g="
|
||||
}
|
||||
}
|
||||
},
|
||||
"darwin": {
|
||||
"version": "8.12.2",
|
||||
"version": "8.12.5",
|
||||
"sources": {
|
||||
"x86_64": {
|
||||
"url": "https://downloads.1password.com/mac/1Password-8.12.2-x86_64.zip",
|
||||
"hash": "sha256-IYxOVYoeKBsuDo5pS/LcjFNZsdyUL7Jb1QORj2BEB3Y="
|
||||
"url": "https://downloads.1password.com/mac/1Password-8.12.5-x86_64.zip",
|
||||
"hash": "sha256-jAaCSPpm3T7uC6y0A5BF821Q050f/P00kWlvYa0Hn5s="
|
||||
},
|
||||
"aarch64": {
|
||||
"url": "https://downloads.1password.com/mac/1Password-8.12.2-aarch64.zip",
|
||||
"hash": "sha256-Z4h2E8dCNA1O+SZGtguueZ36mHbJ11yxMSYiNTpM25U="
|
||||
"url": "https://downloads.1password.com/mac/1Password-8.12.5-aarch64.zip",
|
||||
"hash": "sha256-G4IOVxfaEyzhe74e/IbNt2TSPAgNcF1wri/Pbi4Xr7I="
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,43 +10,30 @@
|
||||
stdenv.mkDerivation {
|
||||
|
||||
pname = "acgtk";
|
||||
version = "2.1.0";
|
||||
version = "2.2.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.inria.fr";
|
||||
owner = "acg";
|
||||
repo = "dev/acgtk";
|
||||
tag = "release-2.1.0";
|
||||
hash = "sha256-XuPcubt1lvnQio+km6MhmDu41NXNVXKKpzGd/Y1XzLo=";
|
||||
tag = "release-2.2.0";
|
||||
hash = "sha256-cDP41a3CHh+KW2PAZ3WTRA2HTXKhb8mMCTNddv6M8Bg=";
|
||||
};
|
||||
|
||||
# Compatibility with fmt 0.10.0
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.inria.fr/ACG/dev/ACGtk/-/commit/613454b376d10974f539ab398a269be061c5bc9c.patch";
|
||||
hash = "sha256-l/V8oEgntnFtrhpTQSk7PkpaX+dBq4izG/tloCQRbDY=";
|
||||
})
|
||||
];
|
||||
|
||||
# Compatibility with logs 0.8.0
|
||||
postPatch = ''
|
||||
substituteInPlace src/utils/dune \
|
||||
--replace-warn 'logs mtime' 'logs logs.fmt mtime'
|
||||
'';
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = with ocamlPackages; [
|
||||
dune
|
||||
findlib
|
||||
menhir
|
||||
ocaml
|
||||
findlib
|
||||
dune
|
||||
];
|
||||
|
||||
buildInputs = with ocamlPackages; [
|
||||
ansiterminal
|
||||
cairo2
|
||||
cmdliner
|
||||
dune-site
|
||||
fmt
|
||||
logs
|
||||
menhirLib
|
||||
@@ -59,12 +46,12 @@ stdenv.mkDerivation {
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
dune build --profile=release ''${enableParallelBuilding:+-j $NIX_BUILD_CORES}
|
||||
dune build -p acgtk --profile=release ''${enableParallelBuilding:+-j $NIX_BUILD_CORES}
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
dune install --prefix $out --libdir $OCAMLFIND_DESTDIR
|
||||
dune install -p acgtk --prefix $out --libdir $OCAMLFIND_DESTDIR
|
||||
'';
|
||||
|
||||
meta = {
|
||||
@@ -72,6 +59,6 @@ stdenv.mkDerivation {
|
||||
description = "Toolkit for developing ACG signatures and lexicon";
|
||||
license = lib.licenses.cecill20;
|
||||
inherit (ocamlPackages.ocaml.meta) platforms;
|
||||
maintainers = with lib.maintainers; [ jirkamarsik ];
|
||||
maintainers = with lib.maintainers; [ tournev ];
|
||||
};
|
||||
}
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@sourcegraph/amp": "^0.0.1771812469-gd3302f"
|
||||
"@sourcegraph/amp": "^0.0.1772531288-g7d96a6"
|
||||
}
|
||||
},
|
||||
"node_modules/@napi-rs/keyring": {
|
||||
@@ -228,9 +228,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@sourcegraph/amp": {
|
||||
"version": "0.0.1771812469-gd3302f",
|
||||
"resolved": "https://registry.npmjs.org/@sourcegraph/amp/-/amp-0.0.1771812469-gd3302f.tgz",
|
||||
"integrity": "sha512-wZp/VNPvzsBPWVfjeO6oZF853VzA+uQNoUHeEToEINB+Nq0YFqx+OD6Eo4pbi0E29NdYzfMdvOJOkDMcp0Spdw==",
|
||||
"version": "0.0.1772531288-g7d96a6",
|
||||
"resolved": "https://registry.npmjs.org/@sourcegraph/amp/-/amp-0.0.1772531288-g7d96a6.tgz",
|
||||
"integrity": "sha512-h3MxHL/L0c8SD7NIdwpE7M1FWxd9OG7u8FjiLITVdtQg39cJmBoU+auOqJO5DfpsVxxUqhuatm0F6ldXzNbb9A==",
|
||||
"license": "Amp Commercial License",
|
||||
"dependencies": {
|
||||
"@napi-rs/keyring": "1.1.9"
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
buildNpmPackage (finalAttrs: {
|
||||
pname = "amp-cli";
|
||||
version = "0.0.1771812469-gd3302f";
|
||||
version = "0.0.1772531288-g7d96a6";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://registry.npmjs.org/@sourcegraph/amp/-/amp-${finalAttrs.version}.tgz";
|
||||
hash = "sha256-q4qgMNcNGWAqAQBWeD0YnNN1DBrMcjzRo/+NwarJy4U=";
|
||||
hash = "sha256-BZ4o4AWGiV/1oxFqvGc9wy92Gi8dedeuMRSOHLQHPnA=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -45,7 +45,7 @@ buildNpmPackage (finalAttrs: {
|
||||
chmod +x bin/amp-wrapper.js
|
||||
'';
|
||||
|
||||
npmDepsHash = "sha256-7Z+yToC5wABI8blCLMGkqVgPOSe/D7AZIfgn9vnP6cM=";
|
||||
npmDepsHash = "sha256-2etugV/fdw/AjznYjEfCSXTv1tkomcNK9UJT7/1T8KY=";
|
||||
|
||||
propagatedBuildInputs = [
|
||||
ripgrep
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "arti";
|
||||
version = "2.0.0";
|
||||
version = "2.1.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.torproject.org";
|
||||
@@ -20,10 +20,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
owner = "core";
|
||||
repo = "arti";
|
||||
tag = "arti-v${finalAttrs.version}";
|
||||
hash = "sha256-eqCQwBP/QLxBwjGvksFwNwNSCng/pf19DiBQ+tA4a7M=";
|
||||
hash = "sha256-+VAuMeGaAZUaDktBvv6KIs7wklenr38emgJHbLWA2sU=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-0CxlvTetxXM+xe6r98T6hzoD/IGfYkI9TqqUe+u1U2I=";
|
||||
cargoHash = "sha256-4ii9Cr5ZNXuy4sKdOeZQat8N0kdR0E1TS3Q6nuV+ZHw=";
|
||||
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ pkg-config ];
|
||||
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "auth0-cli";
|
||||
version = "1.27.2";
|
||||
version = "1.28.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "auth0";
|
||||
repo = "auth0-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-Se3jLcMU+KDkaF5UY18KWs/Q+YK3782e7cKc9BxaYqY=";
|
||||
hash = "sha256-FqMfnousaJg0u8W3o2lR8REIGFThq3vhsQFN1Je65Q8=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Us6NJiSfOK1BBRyrYil26HGaZAgum6k3B5LdV60rCeA=";
|
||||
vendorHash = "sha256-PrcGZ1UJb9fsp7ZsAAxH5VzumDwn/mkyoKVvniuPQrg=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "bitrise";
|
||||
version = "2.38.0";
|
||||
version = "2.39.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bitrise-io";
|
||||
repo = "bitrise";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-WF6+HgGePOvwdo1nU75ifnH8Fddk1vmSyNOOQER4awo=";
|
||||
hash = "sha256-/jD4FZTeT+RgNEJZqNZaSIsL1lSECdE6/fNyg1DJDYE=";
|
||||
};
|
||||
|
||||
# many tests rely on writable $HOME/.bitrise and require network access
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
pkg-config,
|
||||
gnutls,
|
||||
libedit,
|
||||
texinfo,
|
||||
libcap,
|
||||
libseccomp,
|
||||
pps-tools,
|
||||
@@ -31,7 +30,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
buildInputs = [
|
||||
gnutls
|
||||
libedit
|
||||
texinfo
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isLinux [
|
||||
libcap
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
cinny,
|
||||
desktop-file-utils,
|
||||
wrapGAppsHook3,
|
||||
makeBinaryWrapper,
|
||||
pkg-config,
|
||||
openssl,
|
||||
glib-networking,
|
||||
@@ -53,7 +54,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
postInstall =
|
||||
lib.optionalString stdenv.hostPlatform.isDarwin ''
|
||||
mkdir -p "$out/bin"
|
||||
ln -sf "$out/Applications/Cinny.app/Contents/MacOS/Cinny" "$out/bin/cinny"
|
||||
makeWrapper "$out/Applications/Cinny.app/Contents/MacOS/Cinny" "$out/bin/cinny"
|
||||
''
|
||||
+ lib.optionalString stdenv.hostPlatform.isLinux ''
|
||||
desktop-file-edit \
|
||||
@@ -75,6 +76,9 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
desktop-file-utils
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
makeBinaryWrapper
|
||||
];
|
||||
|
||||
buildInputs = lib.optionals stdenv.hostPlatform.isLinux [
|
||||
|
||||
@@ -8,17 +8,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "codebook";
|
||||
version = "0.3.30";
|
||||
version = "0.3.31";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "blopker";
|
||||
repo = "codebook";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-TpHaUtNU6U3OlA7YmqY4roB/NdusMffZCsPkoi/lPUM=";
|
||||
hash = "sha256-pe+u4scmoVgKJupqXejwq1mDpaq5QrTozVcbGfUkXJk=";
|
||||
};
|
||||
|
||||
buildAndTestSubdir = "crates/codebook-lsp";
|
||||
cargoHash = "sha256-hxPgYGBq+KZfEyFiHQG31cNEN6A6hUgKRgZXIHOGalw=";
|
||||
cargoHash = "sha256-T6MCQZ8mWMMsI7+LoHTHZZyMaEq8taME3vWtrfKlzAY=";
|
||||
|
||||
env = {
|
||||
CARGO_PROFILE_RELEASE_LTO = "fat";
|
||||
|
||||
+4
-4
@@ -5,7 +5,7 @@
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"codebuff": "^1.0.615"
|
||||
"codebuff": "^1.0.623"
|
||||
}
|
||||
},
|
||||
"node_modules/@isaacs/fs-minipass": {
|
||||
@@ -30,9 +30,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/codebuff": {
|
||||
"version": "1.0.615",
|
||||
"resolved": "https://registry.npmjs.org/codebuff/-/codebuff-1.0.615.tgz",
|
||||
"integrity": "sha512-AT/26v1mINZyCJurlvTqQo7ga7EGH9UtC+IHppVAnwDZ9XNzZim5/y4EfDUHUnJM5tH1mCnWwsYQVk4X0BeNkw==",
|
||||
"version": "1.0.623",
|
||||
"resolved": "https://registry.npmjs.org/codebuff/-/codebuff-1.0.623.tgz",
|
||||
"integrity": "sha512-2X9DAYduW0uWmEgXFPnq1fS+/aqsFiW38eHSDy2b0Zs18qx623VBx/Stu39sSWrwj20nH0Gzua1YYXXzxoen9A==",
|
||||
"cpu": [
|
||||
"x64",
|
||||
"arm64"
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "codebuff";
|
||||
version = "1.0.615";
|
||||
version = "1.0.623";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://registry.npmjs.org/codebuff/-/codebuff-${version}.tgz";
|
||||
hash = "sha256-4nO7OFr4NDwUo70wHKRJGiGRvKaqOXog0evn5kotxY8=";
|
||||
hash = "sha256-UWYEgtxBIau8a0VN24J+ms4czUj0Dt0PVVq5v5RLfFc=";
|
||||
};
|
||||
|
||||
npmDepsHash = "sha256-VoxULd9oOMvR8LLl6F6XuSM6nkqe+7mXgVFjWjeqdNE=";
|
||||
npmDepsHash = "sha256-kcbYnpyXHLAaVZkay1254SghxdFy/cuUpyt8hLDSISI=";
|
||||
|
||||
postPatch = ''
|
||||
cp ${./package-lock.json} package-lock.json
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p nodePackages.npm nix-update
|
||||
#!nix-shell -i bash -p nodejs nix-update
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
|
||||
@@ -9,15 +9,16 @@
|
||||
unzip,
|
||||
nixosTests,
|
||||
writeText,
|
||||
stdenv,
|
||||
}:
|
||||
let
|
||||
version = "6.2.0";
|
||||
version = "7.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Athou";
|
||||
repo = "commafeed";
|
||||
tag = version;
|
||||
hash = "sha256-M5p3nzlEIuIEMADZyQUqE6WAzlMmP/e4Zh9J8nbhZ9Q=";
|
||||
hash = "sha256-hoRaegcpimIYfUv81txgXSSdwX8iCU4K5EtZMyozjFQ=";
|
||||
};
|
||||
|
||||
frontend = buildNpmPackage {
|
||||
@@ -27,7 +28,7 @@ let
|
||||
|
||||
sourceRoot = "${src.name}/commafeed-client";
|
||||
|
||||
npmDepsHash = "sha256-XkUlsRdqIXwVExvSofZJLKMUSzjxJRRpV549UTP9Cjo=";
|
||||
npmDepsHash = "sha256-z6W0xyOpGbTogqZ0UgVQMNPXjwLW0ulpwLBtXvf00bQ=";
|
||||
|
||||
nativeBuildInputs = [ biome ];
|
||||
|
||||
@@ -53,7 +54,7 @@ maven.buildMavenPackage {
|
||||
|
||||
pname = "commafeed";
|
||||
|
||||
mvnHash = "sha256-vZ7BPA2N3jgRnTwF3k9En2Pn+zTrXbtB9FGbmU4wJgY=";
|
||||
mvnHash = "sha256-YY/etqDtnobarg8Cj4vDv7rmzPrOqz6YCyAxjIQlzeU=";
|
||||
mvnJdk = jdk25;
|
||||
|
||||
mvnParameters = lib.escapeShellArgs [
|
||||
@@ -100,5 +101,6 @@ maven.buildMavenPackage {
|
||||
license = lib.licenses.asl20;
|
||||
mainProgram = "commafeed";
|
||||
maintainers = [ ];
|
||||
broken = stdenv.hostPlatform.isDarwin || stdenv.hostPlatform.isAarch64;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
git,
|
||||
}:
|
||||
let
|
||||
version = "1.1.10";
|
||||
version = "1.1.11";
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "committed";
|
||||
@@ -17,10 +17,10 @@ rustPlatform.buildRustPackage {
|
||||
owner = "crate-ci";
|
||||
repo = "committed";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-shYfKpQl0hv9m/x9UuWFksdNB6mkeQPFPP16vGxUbVw=";
|
||||
hash = "sha256-6uWiZRvR7QszZQbGwo+fPbKtr+wsIHVl6iomODz2cu0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-CK/vYcxYXE/hEq1h9mgwrYyeS36hfiYC8WDJN9iNH6s=";
|
||||
cargoHash = "sha256-qV5WaszJ/VeC6XkgBim3IRmDCU7ieAIGl7Vr5t1F8Ow=";
|
||||
|
||||
nativeCheckInputs = [
|
||||
git
|
||||
|
||||
@@ -11,16 +11,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "convco";
|
||||
version = "0.6.2";
|
||||
version = "0.6.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "convco";
|
||||
repo = "convco";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-giVaDOYYH3YE9Gy0byt92vGEfyM4rTjpHDsKm5lqlP4=";
|
||||
hash = "sha256-fJrP4XtlUX0RvH8T76YxqUCM/R+QvUpsaumn3Z1SOh0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-DTeZDpS3OaGcem9AaAPFN+2AWuqWSGfk2KknbcgFzi0=";
|
||||
cargoHash = "sha256-ySTXy8Jqw/EZl/olbWjMaDD8dryUFyWFvyapfvglFHI=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "copybara";
|
||||
version = "20260216";
|
||||
version = "20260302";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/google/copybara/releases/download/v${finalAttrs.version}/copybara_deploy.jar";
|
||||
hash = "sha256-M36kpWy2LWUQt4gGBQexY+ZmYaJbwJDEu/QcdLhEBxQ=";
|
||||
hash = "sha256-hThILMYr9XoTMOvTBEySLivEc0iPTD0Vhmpi8hwl5zY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -69,7 +69,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
homepage = "https://github.com/google/copybara";
|
||||
changelog = "https://github.com/google/copybara/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ cameroncuttingedge ];
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.all;
|
||||
mainProgram = "copybara";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
|
||||
|
||||
@@ -25,16 +25,16 @@
|
||||
let
|
||||
self = rustPlatform.buildRustPackage {
|
||||
pname = "czkawka";
|
||||
version = "10.0.0";
|
||||
version = "11.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "qarmin";
|
||||
repo = "czkawka";
|
||||
tag = self.version;
|
||||
hash = "sha256-r6EdTv95R8+XhaoA9OeqnGGl09kz8kMJaDPDRV6wQe8=";
|
||||
hash = "sha256-ke6N3vuKPGolfh6XpAg3/9dtwd09eX53fN2klUwwNwQ=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-o4XjHJ7eCckTXqjz1tS4OSCP8DZzjxfWoMMy5Gab2rI=";
|
||||
cargoHash = "sha256-fx2ZH4I2WYCdMgNoKQuBBEJrPjmgTRPeVM2L+TWYn54=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
gobject-introspection
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
}:
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "daisydisk";
|
||||
version = "4.33.2";
|
||||
version = "4.33.3";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://daisydiskapp.com/download/DaisyDisk.zip";
|
||||
hash = "sha256-YkXjaDbnwkQUsfhzCA5xQ6C6NGjQV6qj7znyjcKgwIg=";
|
||||
hash = "sha256-2QhaY4oQV+bkvcyC88Zsk7eZJ6dySsb5G2+juH8HNjI=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ let
|
||||
davinci = (
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "davinci-resolve${lib.optionalString studioVariant "-studio"}";
|
||||
version = "20.3.1";
|
||||
version = "20.3.2";
|
||||
|
||||
nativeBuildInputs = [
|
||||
appimageTools.appimage-exec
|
||||
@@ -77,9 +77,9 @@ let
|
||||
outputHashAlgo = "sha256";
|
||||
outputHash =
|
||||
if studioVariant then
|
||||
"sha256-JaP0O+bSc9wd2YTqRwRQo35kdDkq//5WMb+7MtC9S/A="
|
||||
"sha256-wUrx/cMIyMI+sYi8n8xHH4Q7c0MSAoGbpI0E1NtzcXg="
|
||||
else
|
||||
"sha256-3mZWP58UZYS4U1f9M3TZ9wyto0cGy+KdB+GIJlvCVng=";
|
||||
"sha256-q3/QFUFmTuToIhc+r9L5/DCqpRjbLfECVxhlburly7M=";
|
||||
|
||||
impureEnvVars = lib.fetchers.proxyImpureEnvVars;
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
cmake,
|
||||
pkg-config,
|
||||
spdlog,
|
||||
@@ -35,6 +36,22 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-CK7YEtJtrx/Mto72RHT4Qjg5StO28Et+FeCYxk5T+8s=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix wrong span extent in _lift_bc_interior_facets
|
||||
# https://github.com/FEniCS/dolfinx/pull/4102
|
||||
(fetchpatch {
|
||||
url = "https://github.com/FEniCS/dolfinx/commit/6daca34a075a6dcdfdf77feb13d55d5dbd20e4dd.patch";
|
||||
hash = "sha256-b/C1MqslS2OBCt+kK/+vJjW8pmsJx2FQ36qDtFA1ewI=";
|
||||
includes = [ "cpp/dolfinx/fem/assemble_vector_impl.h" ];
|
||||
})
|
||||
# Fix hdf5 interface for rank 1
|
||||
# https://github.com/FEniCS/dolfinx/pull/4043
|
||||
(fetchpatch {
|
||||
url = "https://github.com/FEniCS/dolfinx/commit/fce7c44f220d4cb94c5149ad28cd1ab00909c319.patch";
|
||||
hash = "sha256-EVm4Rx5UO/3pKIVvjgYAkN+i5QR+u0Nxwxotlf41t+Q=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
}:
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "drasl";
|
||||
version = "3.4.2";
|
||||
version = "3.4.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "unmojang";
|
||||
repo = "drasl";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-SOH6WXhBBx5JShr18Q0SyDFYVE7LMRUONdCJ1NB2HRQ=";
|
||||
hash = "sha256-kisClBALEESxuGh2gtwCyB02/SrYvabouaApho7z7GY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
installFonts,
|
||||
python3,
|
||||
ttfautohint-nox,
|
||||
}:
|
||||
@@ -16,7 +17,13 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-ajieKhTeH6yv2qiE2xqnHFoMS65//4ZKiccAlC2PXGQ=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"webfont"
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
installFonts
|
||||
(python3.withPackages (p: [ p.fontforge ]))
|
||||
ttfautohint-nox
|
||||
];
|
||||
@@ -32,13 +39,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
# installFonts adds a hook to `postInstall` that installs fonts
|
||||
# into the correct directories
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
install -Dm644 build/*.ttf -t $out/share/fonts/truetype
|
||||
install -Dm644 build/*.otf -t $out/share/fonts/opentype
|
||||
install -Dm644 build/*.woff -t $out/share/fonts/woff
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
||||
@@ -33,14 +33,14 @@ in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "edk2";
|
||||
version = "202511";
|
||||
version = "202602";
|
||||
|
||||
srcWithVendoring = fetchFromGitHub {
|
||||
owner = "tianocore";
|
||||
repo = "edk2";
|
||||
tag = "edk2-stable${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-R/rgz8dWcDYVoiM67K2UGuq0xXbjjJYBPtJ1FmfGIaU=";
|
||||
hash = "sha256-TeMGpqVpXYRaeLjjg/aWHjtvfJpEfauA7Xg7dfe3XNg=";
|
||||
};
|
||||
|
||||
src = applyPatches {
|
||||
@@ -55,20 +55,33 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
})
|
||||
|
||||
./fix-cross-compilation-antlr-dlg.patch
|
||||
|
||||
# fix compatibility with nasm 3.01 (https://github.com/tianocore/edk2/pull/11691)
|
||||
# TODO: remove when updating beyond 202511
|
||||
(fetchpatch {
|
||||
name = "UefiCpuPkg-CpuExceptionHandlerLib-fix-push-instructions.patch";
|
||||
url = "https://github.com/tianocore/edk2/commit/9ccf8751a74f26142e584c7b7c7572a182b67997.patch";
|
||||
hash = "sha256-0aqpuQDxLdbSJMBXzY/57GzL2wLn0m8dkT7X6uXtKMg=";
|
||||
})
|
||||
];
|
||||
|
||||
# FIXME: unvendor OpenSSL again once upstream updates
|
||||
# to a compatible version.
|
||||
# Upstream PR: https://github.com/tianocore/edk2/pull/10946
|
||||
postPatch = ''
|
||||
# de-vendor OpenSSL
|
||||
rm -r CryptoPkg/Library/OpensslLib/openssl
|
||||
mkdir -p CryptoPkg/Library/OpensslLib/openssl
|
||||
(
|
||||
cd CryptoPkg/Library/OpensslLib/openssl
|
||||
tar --strip-components=1 -xf ${buildPackages.openssl_3_5.src}
|
||||
|
||||
# Apply OpenSSL patches.
|
||||
${lib.pipe buildPackages.openssl_3_5.patches [
|
||||
(builtins.filter (
|
||||
patch:
|
||||
!builtins.elem (baseNameOf patch) [
|
||||
# Exclude patches not required in this context.
|
||||
"nix-ssl-cert-file.patch"
|
||||
"openssl-disable-kernel-detection.patch"
|
||||
"use-etc-ssl-certs-darwin.patch"
|
||||
"use-etc-ssl-certs.patch"
|
||||
]
|
||||
))
|
||||
(map (patch: "patch -p1 < ${patch}\n"))
|
||||
lib.concatStrings
|
||||
]}
|
||||
)
|
||||
|
||||
# enable compilation using Clang
|
||||
# https://bugzilla.tianocore.org/show_bug.cgi?id=4620
|
||||
substituteInPlace BaseTools/Conf/tools_def.template --replace-fail \
|
||||
|
||||
@@ -48,7 +48,12 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
jq '.plugins.updater.endpoints = [ ] | .bundle.createUpdaterArtifacts = false' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json
|
||||
# disable updater and disable mac codesigning
|
||||
jq '
|
||||
.plugins.updater.endpoints = [ ] |
|
||||
.bundle.createUpdaterArtifacts = false |
|
||||
.bundle.macOS.signingIdentity = null
|
||||
' src-tauri/tauri.conf.json | sponge src-tauri/tauri.conf.json
|
||||
'';
|
||||
|
||||
cargoRoot = "src-tauri";
|
||||
|
||||
@@ -7,11 +7,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "entr";
|
||||
version = "5.7";
|
||||
version = "5.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://eradman.com/entrproject/code/entr-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-kMXZQ4IMcM7zfrQaOCpupPXdf9le/vE7K1Ug0yD10Gc=";
|
||||
hash = "sha256-3Jor3FVrK+kAwdjN9DLeJkkt5a8/+t4ADUv9l/MSK/s=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "erofs-utils";
|
||||
version = "1.9";
|
||||
version = "1.9.1";
|
||||
outputs = [
|
||||
"out"
|
||||
"man"
|
||||
@@ -30,7 +30,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs-utils.git/snapshot/erofs-utils-${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-0byEtdYLyuEhp/V+qX1BVRiQh+F4+BJ/MIRtn1N8nXM=";
|
||||
hash = "sha256-qe9atnxLjS0+ntcfOc0Ai9plMUKnINijlaNvERDQxDI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -33,14 +33,14 @@ let
|
||||
in
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
pname = "esphome";
|
||||
version = "2026.2.2";
|
||||
version = "2026.2.4";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "esphome";
|
||||
repo = "esphome";
|
||||
tag = version;
|
||||
hash = "sha256-VfiIeuwvc7CLuR3SjHH8foS2b4bKVOw/bjOYnDnmWkw=";
|
||||
hash = "sha256-SN9XfXFFogxKwstcS4ZQxJEGHpLpjyGzRWz2X0XQdIc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -18,6 +18,11 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
hash = "sha256-y4BhU2kSn+RWqc5+pJQFhbwfat9cMWD0ED0EXJp25cY=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# https://github.com/etesync/etesync-dav/pull/365
|
||||
./radicale-3-6-compat.patch
|
||||
];
|
||||
|
||||
build-system = with python3Packages; [ setuptools ];
|
||||
|
||||
pythonRelaxDeps = [ "radicale" ];
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
diff --git a/etesync_dav/radicale/storage.py b/etesync_dav/radicale/storage.py
|
||||
index d6312b1..8d4b0e1 100644
|
||||
--- a/etesync_dav/radicale/storage.py
|
||||
+++ b/etesync_dav/radicale/storage.py
|
||||
@@ -22,6 +22,8 @@ from contextlib import contextmanager
|
||||
|
||||
import etesync as api
|
||||
import vobject
|
||||
+import radicale
|
||||
+from packaging.version import Version
|
||||
from radicale import pathutils
|
||||
from radicale.item import Item, get_etag
|
||||
from radicale.storage import (
|
||||
@@ -421,7 +423,10 @@ class Collection(BaseCollection):
|
||||
href_mapper = HrefMapper(content=etesync_item._cache_obj, href=href)
|
||||
href_mapper.save(force_insert=True)
|
||||
|
||||
- return self._get(href)
|
||||
+ uploaded = self._get(href)
|
||||
+ if Version(radicale.VERSION) >= Version("3.5.5"):
|
||||
+ return (uploaded, item)
|
||||
+ return uploaded
|
||||
|
||||
def delete(self, href=None):
|
||||
"""Delete an item.
|
||||
diff --git a/etesync_dav/radicale/storage_etebase_collection.py b/etesync_dav/radicale/storage_etebase_collection.py
|
||||
index 1ccc6dd..0f68561 100644
|
||||
--- a/etesync_dav/radicale/storage_etebase_collection.py
|
||||
+++ b/etesync_dav/radicale/storage_etebase_collection.py
|
||||
@@ -1,6 +1,8 @@
|
||||
import re
|
||||
|
||||
import vobject
|
||||
+import radicale
|
||||
+from packaging.version import Version
|
||||
from radicale import pathutils
|
||||
from radicale.item import Item
|
||||
from radicale.storage import (
|
||||
@@ -294,7 +296,10 @@ class Collection(BaseCollection):
|
||||
href_mapper = HrefMapper(content=etesync_item.cache_item, href=href)
|
||||
href_mapper.save(force_insert=True)
|
||||
|
||||
- return self._get(href)
|
||||
+ uploaded = self._get(href)
|
||||
+ if Version(radicale.VERSION) >= Version("3.5.5"):
|
||||
+ return (uploaded, item)
|
||||
+ return uploaded
|
||||
|
||||
def delete(self, href=None):
|
||||
"""Delete an item.
|
||||
diff --git a/etesync_dav/radicale/web.py b/etesync_dav/radicale/web.py
|
||||
index 869624f..6b4c515 100644
|
||||
--- a/etesync_dav/radicale/web.py
|
||||
+++ b/etesync_dav/radicale/web.py
|
||||
@@ -12,6 +12,8 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
+import radicale
|
||||
+from packaging.version import Version
|
||||
from radicale import web
|
||||
|
||||
from etesync_dav.mac_helpers import has_ssl
|
||||
@@ -31,6 +33,8 @@ class Web(web.BaseWeb):
|
||||
environ["wsgi.url_scheme"] = "https"
|
||||
body = list(app(environ, start_response))[0]
|
||||
ret_response.append(body)
|
||||
+ if Version(radicale.VERSION) >= Version("3.5.10"):
|
||||
+ ret_response.append(None) # xml_request field
|
||||
return tuple(ret_response)
|
||||
|
||||
def get(self, environ, base_prefix, path, user):
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "exiv2";
|
||||
version = "0.28.7";
|
||||
version = "0.28.8";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
owner = "exiv2";
|
||||
repo = "exiv2";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-a7nPjDjTcwsQeypARvy2rRsv9jpasSSxSyCTLWNDDtA=";
|
||||
hash = "sha256-9Qe+lNBO24qQyKDXe7RMCqoDa61iha2QFhRpLJlCSMo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "faudio";
|
||||
version = "26.02";
|
||||
version = "26.03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FNA-XNA";
|
||||
repo = "FAudio";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-m7kIzdgRfYQ+OEIH6+VlbLpTMINRb6u/5aSWjbjYiTg=";
|
||||
hash = "sha256-sJR3GdTC5/bTGj4J1ENxGn+U3l2vcqEgAb//btpJxnA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchFromGitHub,
|
||||
installFonts,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
@@ -15,22 +16,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-owzoM0zfKYxLJCQbL1eUE0cdSLVmm+QNRUGxbsNJ37I=";
|
||||
};
|
||||
|
||||
sourceRoot = "fonts";
|
||||
sourceRoot = "source/fonts";
|
||||
|
||||
setSourceRoot = "sourceRoot=$(pwd)";
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
find . -type f -iname '*.ttf' | while read f; do
|
||||
d="$out/share/fonts/truetype/figtree/$(basename "$f")"
|
||||
install -Dm644 -D "$f" "$d"
|
||||
done
|
||||
find . -type f -iname '*.otf' | while read f; do
|
||||
d="$out/share/fonts/opentype/figtree/$(basename "$f")"
|
||||
install -Dm644 -D "$f" "$d"
|
||||
done
|
||||
runHook postInstall
|
||||
'';
|
||||
nativeBuildInputs = [ installFonts ];
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/erikdkennedy/figtree";
|
||||
|
||||
@@ -86,20 +86,20 @@ let
|
||||
in
|
||||
linkFarm name [
|
||||
{
|
||||
name = "flow_syntax-0.1.0-X8jOoU8VAQCOYNTiuB7y2aIBP1V3OXXHa8WvE3eXtpDK";
|
||||
name = "flow_syntax-0.6.0-X8jOoWgVAQBBTuGGE9r1ECSDFzi8z6_XNCW1oF5B4fL8";
|
||||
path = fetchZigArtifact {
|
||||
name = "syntax";
|
||||
url = "git+https://github.com/neurocyte/flow-syntax?ref=master#10b92330cf0ecaa39a52d3a8d190f7fb384b7b09";
|
||||
hash = "sha256-w6h8KN6oNS5PPTgOfMlCz3aRH6o2CY2Fl/LnUd1PVq8=";
|
||||
rev = "10b92330cf0ecaa39a52d3a8d190f7fb384b7b09";
|
||||
url = "git+https://github.com/neurocyte/flow-syntax?ref=master#6992eddeb9a4a013886db0cbca2156686d01efe4";
|
||||
hash = "sha256-TJJTGiQbdzVNQAjKg9R1NP9kXqEcMNy33rwqnQG8se4=";
|
||||
rev = "6992eddeb9a4a013886db0cbca2156686d01efe4";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "tree_sitter-0.22.4-150-g7e3f5726-z0LhyI7XuS7mSbx26jCz5VkJ_c1oL8vvC6WBgx0Idkpg";
|
||||
name = "tree_sitter-0.22.4-150-g7e3f5726-z0LhyGeG1y67PeOltaplVkxRNT2jMMexQhbUlrh0vdxM";
|
||||
path = fetchZigArtifact {
|
||||
name = "tree_sitter";
|
||||
url = "https://github.com/neurocyte/tree-sitter/releases/download/master-3cfb01c2f3349791a500f59bcc89b867d017d5b8/source.tar.gz";
|
||||
hash = "sha256-2vIwHvTyXAjLT6qC1zrtCM1OjSJAta4z/2MkctSbl2g=";
|
||||
url = "https://github.com/neurocyte/tree-sitter/releases/download/master-6e2827ee231e220467bf04d2a2746faff5cb204a/source.tar.gz";
|
||||
hash = "sha256-k8eOWun2ANzWJOa8XAakXN4Vldgwzly3FESYAlsbVVw=";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -138,12 +138,21 @@ linkFarm name [
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "thespian-0.0.1-owFOjjMiBgCXFa9f0-RKTDgWwYzQp1Mnec_p6hsGXj_G";
|
||||
name = "thespian-0.0.1-owFOjlgiBgC8w4XqkCOegxz5vMy6kNErcssWQWf2QHeE";
|
||||
path = fetchZigArtifact {
|
||||
name = "thespian";
|
||||
url = "git+https://github.com/neurocyte/thespian?ref=master#6eadc0fe29795f88752f3b6f296dc582b16cb5a1";
|
||||
hash = "sha256-+Jlg6ai/C0/0/Ou4b/SErtQR8AkEylG0kNwA+qw9bDU=";
|
||||
rev = "6eadc0fe29795f88752f3b6f296dc582b16cb5a1";
|
||||
url = "git+https://github.com/neurocyte/thespian?ref=master#7da13f44e8462d1ac0cac87c6f00cc4fcb62b0f9";
|
||||
hash = "sha256-FDrgVtZQg+sFsMYE2TGOv1Xl6QqzE8+WtuKRulVnKjo=";
|
||||
rev = "7da13f44e8462d1ac0cac87c6f00cc4fcb62b0f9";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "cbor-1.0.0-RcQE_HwwAQAiNkKC9ezLxHUMkWgHeVa3QyTfv4hi3VZR";
|
||||
path = fetchZigArtifact {
|
||||
name = "cbor";
|
||||
url = "git+https://github.com/neurocyte/cbor?ref=master#b6fc137250b7d3f70459652ee78c7b6cd9ad2826";
|
||||
hash = "sha256-axyiz0+WqM9HCz9xbyl/UtdwJsKC/LIiQPZn/SdzxDU=";
|
||||
rev = "b6fc137250b7d3f70459652ee78c7b6cd9ad2826";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -173,11 +182,11 @@ linkFarm name [
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "N-V-__8AAKhUIwB6OywBocsytyvp6XiVu4fZwzFJHjumxGLY";
|
||||
name = "N-V-__8AAOKzJACguNxU76WX9M7RIhOYGuLnlasJ1-GDdhqT";
|
||||
path = fetchZigArtifact {
|
||||
name = "themes";
|
||||
url = "https://github.com/neurocyte/flow-themes/releases/download/master-638f6f95c391420f0f140599ed5f87cc37834559/flow-themes.tar.gz";
|
||||
hash = "sha256-CnG0htnCQBoyMGXGguyRUonbseBAgSKwWTm3pH6CXks=";
|
||||
url = "https://github.com/neurocyte/flow-themes/releases/download/master-c6c7f18cfb2e3945cd0b71dab24271465074dbc3/flow-themes.tar.gz";
|
||||
hash = "sha256-h4oVrZqXwsQa57ywc8Ez7c2Fur4MhyJ8xyRTpKUJh9E=";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -189,29 +198,30 @@ linkFarm name [
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "vaxis-0.5.1-BWNV_PIfCQBrMQyEAPPSOyupQYEud7vTs0jXEq5drkC9";
|
||||
name = "vaxis-0.5.1-BWNV_PJJCQArtOy_n76jGWoqoBpnM5FKElA_i1IaYYcF";
|
||||
path = fetchZigArtifact {
|
||||
name = "vaxis";
|
||||
url = "git+https://github.com/neurocyte/libvaxis?ref=main#4debeaf0774a6db5de8bab212335fae795086035";
|
||||
hash = "sha256-bfcOR5vzytKHbQHR6z71G+GE+iuEUuM23+38y6V+6Ss=";
|
||||
rev = "4debeaf0774a6db5de8bab212335fae795086035";
|
||||
url = "git+https://github.com/neurocyte/libvaxis?ref=main#95034c7114601178467b42e69588cdd4c1d39eb1";
|
||||
hash = "sha256-IuToUtK3WdoOy+UzYy5OlXNR5E3DUSO5VwZvSIF28qc=";
|
||||
rev = "95034c7114601178467b42e69588cdd4c1d39eb1";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "zigimg-0.1.0-8_eo2vHnEwCIVW34Q14Ec-xUlzIoVg86-7FU2ypPtxms";
|
||||
name = "zigimg-0.1.0-8_eo2vUZFgAAtN1c6dAO5DdqL0d4cEWHtn6iR5ucZJti";
|
||||
path = fetchZigArtifact {
|
||||
name = "zigimg";
|
||||
url = "https://github.com/ivanstepanovftw/zigimg/archive/d7b7ab0ba0899643831ef042bd73289510b39906.tar.gz";
|
||||
hash = "sha256-LB7Xa6KzVRRUSwwnyWM+y6fDG+kIDjfnoBDJO1obxVM=";
|
||||
url = "git+https://github.com/zigimg/zigimg#eab2522c023b9259db8b13f2f90d609b7437e5f6";
|
||||
hash = "sha256-e42T/ZmRzuzWAhwWkcWScukcOd6rNZ1VK1wk0XGTVKs=";
|
||||
rev = "eab2522c023b9259db8b13f2f90d609b7437e5f6";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "zg-0.15.2-oGqU3AtAtAI7gs7zPvzg2_TlVIqi9wCNEw7DLvD5OvDN";
|
||||
name = "uucode-0.1.0-ZZjBPj96QADXyt5sqwBJUnhaDYs_qBeeKijZvlRa0eqM";
|
||||
path = fetchZigArtifact {
|
||||
name = "zg";
|
||||
url = "git+https://codeberg.org/neurocyte/zg?ref=master#cdcab8b9ea3458efd710008055d993c5dbdb1af7";
|
||||
hash = "sha256-dCaDTiZX62SZfJHMZn2IfwADbRegpNIM7u/dBPZ580k=";
|
||||
rev = "cdcab8b9ea3458efd710008055d993c5dbdb1af7";
|
||||
name = "uucode";
|
||||
url = "git+https://github.com/jacobsandlund/uucode#5f05f8f83a75caea201f12cc8ea32a2d82ea9732";
|
||||
hash = "sha256-sHPh+TQSdUGus/QTbj7KSJJkTuNTrK4VNmQDjS30Lf8=";
|
||||
rev = "5f05f8f83a75caea201f12cc8ea32a2d82ea9732";
|
||||
};
|
||||
}
|
||||
{
|
||||
@@ -232,4 +242,13 @@ linkFarm name [
|
||||
rev = "5587b16fa040573846a6bf531301f6206d31a6bf";
|
||||
};
|
||||
}
|
||||
{
|
||||
name = "diffz-0.0.1-G2tlIezMAQBwGNGDs7Hn_N25dWSjEzgR_FAx9GFAvCuZ";
|
||||
path = fetchZigArtifact {
|
||||
name = "diffz";
|
||||
url = "git+https://github.com/ziglibs/diffz.git#fbdf690b87db6b1142bbce6d4906f90b09ce60bb";
|
||||
hash = "sha256-zzKnlKQ0Sz8aqJifSSlZImU3jY3QXLBDIfVDBmKcpVc=";
|
||||
rev = "fbdf690b87db6b1142bbce6d4906f90b09ce60bb";
|
||||
};
|
||||
}
|
||||
]
|
||||
|
||||
@@ -8,21 +8,18 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "flow-control";
|
||||
version = "0.6.0";
|
||||
version = "0.7.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "neurocyte";
|
||||
repo = "flow";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-868FK3wr/fjXzrQJ4YVDBvzNuX818lufEx/K0fvJdWo=";
|
||||
hash = "sha256-5+F0DKb4LXtcMXNutUSJuIe7cdBoFUoJhCs8vbm20jg=";
|
||||
};
|
||||
|
||||
deps = callPackage ./build.zig.zon.nix {
|
||||
zig = zig_0_15;
|
||||
};
|
||||
postConfigure = ''
|
||||
ln -s ${
|
||||
callPackage ./build.zig.zon.nix {
|
||||
zig = zig_0_15;
|
||||
}
|
||||
} $ZIG_GLOBAL_CACHE_DIR/p
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ zig_0_15 ];
|
||||
|
||||
@@ -30,8 +27,10 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
dontSetZigDefaultFlags = true;
|
||||
zigBuildFlags = [
|
||||
"--system"
|
||||
"${finalAttrs.deps}"
|
||||
"-Dcpu=baseline"
|
||||
"-Doptimize=ReleaseSafe"
|
||||
"-Doptimize=ReleaseFast"
|
||||
];
|
||||
|
||||
env.VERSION = finalAttrs.version;
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "fna3d";
|
||||
version = "26.02";
|
||||
version = "26.03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FNA-XNA";
|
||||
repo = "FNA3D";
|
||||
tag = finalAttrs.version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-Gwuml5ZR3m7PEqfYz/BySN9/lsb5Rbej9v0fMfUxt/I=";
|
||||
hash = "sha256-P28rm36xG3/IydUKFk6Q7m0D9jpcMtAlfdLpXOrISs4=";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
asciidoc,
|
||||
asciidoctor,
|
||||
deutex,
|
||||
fetchFromGitHub,
|
||||
lib,
|
||||
nix-update-script,
|
||||
python3,
|
||||
stdenvNoCC,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "freedoom";
|
||||
version = "0.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "freedoom";
|
||||
repo = "freedoom";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-uOLyh/epVxv3/N+6P1glBX1ZkGWzHWGaERYZRSL/3AU=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
(python3.withPackages (ps: with ps; [ pillow ]))
|
||||
asciidoc
|
||||
asciidoctor
|
||||
deutex
|
||||
];
|
||||
|
||||
preBuild = ''
|
||||
patchShebangs .
|
||||
'';
|
||||
|
||||
makeFlags = [ "prefix=$(out)" ];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
description = "Game based on the Doom engine";
|
||||
longDescription = ''
|
||||
Freedoom is a complete, free content first person shooter game,
|
||||
based on the Doom engine.
|
||||
|
||||
Freedoom is not a program - rather, it consists of the levels,
|
||||
artwork, sound effects and music that make up the game. To play
|
||||
Freedoom, [it must be paired with an
|
||||
engine](https://github.com/freedoom/freedoom#How-to-play) that
|
||||
can play it.
|
||||
'';
|
||||
homepage = "https://freedoom.github.io";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ yiyu ];
|
||||
platforms = lib.platforms.all;
|
||||
};
|
||||
})
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "fselect";
|
||||
version = "0.9.2";
|
||||
version = "0.9.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jhspetersson";
|
||||
repo = "fselect";
|
||||
rev = finalAttrs.version;
|
||||
sha256 = "sha256-S9WlDpa9Qe3GVVC/L5KAyekH1NegdDttJ6HH5rwI6Dk=";
|
||||
sha256 = "sha256-NNDWKjO0A6ETIC+6Eg6LqyrwwErbP8362YzzNJYgtlE=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-q7FBKzVH2EtP2PjrU8bvQTrzvMZ0T+Cgk7o+lpyuTPc=";
|
||||
cargoHash = "sha256-lDN3b5skS5+e1Lz3StBqW+yTN2dVxy9bWZ5z69o5z7s=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
buildInputs = lib.optional stdenv.hostPlatform.isDarwin libiconv;
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ft2-clone";
|
||||
version = "2.05";
|
||||
version = "2.07";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "8bitbubsy";
|
||||
repo = "ft2-clone";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-wMR0S8knfMncjRVDExXkfKGJlDGOjrgAh+bbe0023dw=";
|
||||
hash = "sha256-g32teMDOv+lYmZNJNCnjlHszFb7cjKLWMHVuxHZvAHo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
@@ -18,16 +18,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "gelly";
|
||||
version = "0.18.2";
|
||||
version = "0.18.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Fingel";
|
||||
repo = "gelly";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-95mpAfS6upV3p0LoieMWwVUnSLn7KistMlegRclZJvw=";
|
||||
hash = "sha256-JDCy6RILbEXRL6Oq2UBrkhdLeEx4aHWrrF5EPkY8pXg=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-+Itmi463TVDfutqPNoxGy1lE/Iv8Qc7d5jXqe9GW4Qg=";
|
||||
cargoHash = "sha256-MmwPCUdZJWBYmMbNklaejkSyTB+x1GwnHLInYxA/1sc=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
||||
@@ -28,7 +28,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
homepage = "https://github.com/andrewring/github-distributed-owners";
|
||||
changelog = "https://github.com/andrewring/github-distributed-owners/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ cameroncuttingedge ];
|
||||
maintainers = [ ];
|
||||
mainProgram = "github-distributed-owners";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "glaze";
|
||||
version = "7.0.0";
|
||||
version = "7.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "stephenberry";
|
||||
repo = "glaze";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-bYXXQmrVnrBTW/r+fgRBPYfKGPtHvEDw0Sk6BYTMm/4=";
|
||||
hash = "sha256-W48BDsxUrFjjqUFwBcBqHr5Y7h+BtGGWdioGukBqzbE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
lib,
|
||||
perlPackages,
|
||||
libiec61850,
|
||||
nix,
|
||||
dmidecode,
|
||||
pciutils,
|
||||
@@ -15,13 +16,13 @@
|
||||
|
||||
perlPackages.buildPerlPackage rec {
|
||||
pname = "glpi-agent";
|
||||
version = "1.15";
|
||||
version = "1.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "glpi-project";
|
||||
repo = "glpi-agent";
|
||||
tag = version;
|
||||
hash = "sha256-+zHTlxfkZ1x21ePZUni7lbRJQ/NUDeoZnvOzM+yzG3M=";
|
||||
hash = "sha256-JocNClbFH6fSZJDAVQCPaRvHrkLboNbQVTpyHjOV7go=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -101,6 +102,7 @@ perlPackages.buildPerlPackage rec {
|
||||
sed -e "s|./lib|$out/lib|" -i "$cur"
|
||||
wrapProgram "$cur" --prefix PATH : ${
|
||||
lib.makeBinPath [
|
||||
libiec61850
|
||||
nix
|
||||
dmidecode
|
||||
pciutils
|
||||
|
||||
@@ -93,7 +93,7 @@ python3Packages.buildPythonApplication (finalAttrs: {
|
||||
description = "Intuitive text extraction tool (OCR) for GNOME desktop";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "frog";
|
||||
maintainers = [ ];
|
||||
maintainers = [ lib.maintainers.axodentally ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
|
||||
buildGo125Module (finalAttrs: {
|
||||
pname = "go-arch-lint";
|
||||
version = "1.13.0";
|
||||
version = "1.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "fe3dback";
|
||||
repo = "go-arch-lint";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-TtYeowoL8NEOw1coiLHJ/epcFMaxT4zsBSsnLgmhKDc=";
|
||||
hash = "sha256-AMPqMtBg1RjbqlfAHz193q1SFeqDmF7WrjvX2psqVro=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-2n7OjF4gl+qq9M5EtU0nmgWwRPZ3YvmLQDAgJ8w9S1M=";
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "go-httpbin";
|
||||
version = "2.20.0";
|
||||
version = "2.21.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mccutchen";
|
||||
repo = "go-httpbin";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-FXD5XgvdQ5b6AcDC2VJPSDJXjb6RwOskPNtBV4fy6Pc=";
|
||||
hash = "sha256-QJskXXieiFr406WI8gGtgcoL4pHEVzNOwM6JyYk+0EA=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "goimports-reviser";
|
||||
version = "3.11.0";
|
||||
version = "3.12.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "incu6us";
|
||||
repo = "goimports-reviser";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-5v10DmJovyDyfAlgLuO4uCKRDZGIUxGLHFJRHsGmSm4=";
|
||||
hash = "sha256-QFnTiFINWprGuBrRwLFMexIbv6Xu+tq7rTVif7YvLsc=";
|
||||
};
|
||||
vendorHash = "sha256-aTPzvqIwjZzEq9LHFdebIgbKMwsBOqLbpEWB7rN7cYY=";
|
||||
|
||||
|
||||
@@ -184,11 +184,11 @@ let
|
||||
|
||||
linux = stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
inherit pname meta passthru;
|
||||
version = "145.0.7632.116";
|
||||
version = "145.0.7632.159";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${finalAttrs.version}-1_amd64.deb";
|
||||
hash = "sha256-lGMopGtpLp3g0PVIfRIACNP6yRarzQDIsuctNbiqCCo=";
|
||||
hash = "sha256-xi7xUT9BSvF7g690gaEsubTwAN181Y08FSPD2+pFJdk=";
|
||||
};
|
||||
|
||||
# With strictDeps on, some shebangs were not being patched correctly
|
||||
@@ -302,11 +302,11 @@ let
|
||||
|
||||
darwin = stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
inherit pname meta passthru;
|
||||
version = "145.0.7632.117";
|
||||
version = "145.0.7632.160";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://dl.google.com/release2/chrome/ej7xgqe26rn6kjtl4mhau5cs44_145.0.7632.117/GoogleChrome-145.0.7632.117.dmg";
|
||||
hash = "sha256-OZWuV9s6vlCcxUXKmrJtMO6KRUadkmQKoMYXrDhKatU=";
|
||||
url = "http://dl.google.com/release2/chrome/adfe2qymqnox7qjswrtl6gacr5ra_145.0.7632.160/GoogleChrome-145.0.7632.160.dmg";
|
||||
hash = "sha256-OcjDKT8jgMg6MsIkAHYduDOJFMqK+prqlCaY4Att6RA=";
|
||||
};
|
||||
|
||||
dontPatch = true;
|
||||
|
||||
@@ -53,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
makeWrapper ${jre}/bin/java $out/bin/gpsprune \
|
||||
--add-flags "-jar $out/share/java/gpsprune.jar"
|
||||
mkdir -p $out/share/pixmaps
|
||||
${unzip}/bin/unzip -p $src tim/prune/gui/images/window_icon_64.png > $out/share/pixmaps/gpsprune.png
|
||||
${unzip}/bin/unzip -p $src tim/prune/gui/images/window_icon_64.png > $out/share/icons/hicolor/64x64/apps/gpsprune.png
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
@@ -7,14 +7,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication (finalAttrs: {
|
||||
pname = "ha-mcp";
|
||||
version = "6.6.1";
|
||||
version = "6.7.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "homeassistant-ai";
|
||||
repo = "ha-mcp";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-yAJbvfIH5ewRTip8whbOKxE479qAihESaiLFTnhpRkY=";
|
||||
hash = "sha256-CQbjPEtCos0Fi6aAaIWSRMCUQKmjYviYkvJZzbCZg6Y=";
|
||||
};
|
||||
|
||||
build-system = with python3Packages; [
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
stdenvNoCC,
|
||||
fetchzip,
|
||||
installFonts,
|
||||
}:
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
@@ -14,14 +15,7 @@ stdenvNoCC.mkDerivation rec {
|
||||
hash = "sha256-Oh8V72tYvVA6Sk0f9UTIkRQYjdUbEB/fmCSaRYfyoP8=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/fonts/truetype
|
||||
mv *.ttf -t $out/share/fonts/truetype
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
nativeBuildInputs = [ installFonts ];
|
||||
|
||||
meta = {
|
||||
description = "UNICODE Han Nom Font Set";
|
||||
|
||||
@@ -9,16 +9,16 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "harbor-cli";
|
||||
version = "0.0.17";
|
||||
version = "0.0.18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "goharbor";
|
||||
repo = "harbor-cli";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-uTXTRfxuEl1A9F9TrEWYvV4tVGPRoH01QRVsO8fBKg0=";
|
||||
hash = "sha256-vR99rFCR/FMpASyCqjIvhWBNO+Va1sACtZxOGbJaiQg=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-lGxv7BK4JZX9fyQEUooflBvcbul8LXkRvpySz4l5zAI=";
|
||||
vendorHash = "sha256-A7Hgzzdu8zIkN/mvHTWU7ZRbInWor+dVtr9al3oyjk4=";
|
||||
|
||||
excludedPackages = [
|
||||
"dagger"
|
||||
|
||||
@@ -13,16 +13,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "hyprshell";
|
||||
version = "4.9.2";
|
||||
version = "4.9.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "H3rmt";
|
||||
repo = "hyprshell";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-1nt+/cAtIsS/3O790W2aMUuPiMV6JEjC334Sw0SD804=";
|
||||
hash = "sha256-GLNl/KujW97Lpn9fjMjt7ZwaBpgMJe1NTD94KxzNNlo=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-WnmK7eUjXqNUWXeaXqloYeRSp/uvg8QoYbcotm5uEt4=";
|
||||
cargoHash = "sha256-IQ15ZxUJzx+pEl0K8IDqDTp05TfBbjxUeTru42s/phw=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
wrapGAppsHook4
|
||||
|
||||
@@ -70,7 +70,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
install -m755 -Dt $out/bin iaito
|
||||
install -m644 -Dt $out/share/metainfo ../org.radare.iaito.appdata.xml
|
||||
install -m644 -Dt $out/share/applications ../org.radare.iaito.desktop
|
||||
install -m644 -Dt $out/share/pixmaps ../img/org.radare.iaito.svg
|
||||
install -m644 -Dt $out/share/icons/hicolor/scalable/apps ../img/org.radare.iaito.svg
|
||||
|
||||
pushd ../../../translations
|
||||
make install -j$NIX_BUILD_CORES PREFIX=$out
|
||||
|
||||
@@ -9,17 +9,17 @@
|
||||
makeWrapper,
|
||||
nix-update-script,
|
||||
}:
|
||||
rustPlatform.buildRustPackage {
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "influxdb3";
|
||||
version = "3.0.1";
|
||||
version = "3.8.3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "influxdata";
|
||||
repo = "influxdb";
|
||||
rev = "8daccb7ee8f82ffae99b25236af9645fd60e448b";
|
||||
hash = "sha256-tHnLD5W3KQ1cILRHNmXAi4lvQQSBVUPxYCXmXLMLwIs=";
|
||||
rev = "73f689bb31d5ca13c4f950fefb40d5f6e6163019";
|
||||
hash = "sha256-+eNv+/LJUBTJEL+jhkAq9sMSzFBAnuNdEaUwdWFtEMA=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-KnmaIbK/2tRXjCpOLHcadIX8Od7lVDOwZ+FgE+yFE+Q=";
|
||||
cargoHash = "sha256-gICiNHbN85gKWY635zonJg6Fed5NeqDuzdQLBGkbm6g=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
@@ -43,13 +43,14 @@ rustPlatform.buildRustPackage {
|
||||
rm influxdb3_process/build.rs
|
||||
'';
|
||||
|
||||
env.INFLUXDB3_BUILD_VERSION = finalAttrs.version;
|
||||
|
||||
buildNoDefaultFeatures = true;
|
||||
buildFeatures = [
|
||||
"aws"
|
||||
"gcp"
|
||||
"azure"
|
||||
"jemalloc_replacing_malloc"
|
||||
"system-py"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
@@ -83,4 +84,4 @@ rustPlatform.buildRustPackage {
|
||||
maintainers = with lib.maintainers; [ oddlama ];
|
||||
mainProgram = "influxdb3";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "inputplumber";
|
||||
version = "0.74.2";
|
||||
version = "0.75.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ShadowBlip";
|
||||
repo = "InputPlumber";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-M/U5XfxNmdBwwgEAVfH71VNif7GYh/vW4WycDgDKRQM=";
|
||||
hash = "sha256-clTcP9BLy8+hO7epvOJeHBAOwPo50HD2EI95TekmQN8=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-7P8hP1WZctoo2ABavCHelePPV/npJQczc+ifZwxHq+k=";
|
||||
cargoHash = "sha256-3+nxRtiQWbm3M+FZyq2xPVgCc4/Ztybeq6RtuxF8FJs=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
||||
@@ -151,7 +151,7 @@ flutter338.buildFlutterApplication {
|
||||
extraWrapProgramArgs = "--chdir $out/app/intiface-central";
|
||||
|
||||
postInstall = ''
|
||||
install -Dm644 $out/app/intiface-central/data/flutter_assets/assets/icons/intiface_central_icon.png $out/share/pixmaps/intiface-central.png
|
||||
install -Dm644 $out/app/intiface-central/data/flutter_assets/assets/icons/intiface_central_icon.png $out/share/icons/hicolor/512x512/apps/intiface-central.png
|
||||
'';
|
||||
|
||||
desktopItems = [
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
makeWrapper,
|
||||
unzip,
|
||||
xdg-utils,
|
||||
imagemagick,
|
||||
writeScript,
|
||||
}:
|
||||
|
||||
@@ -40,13 +41,14 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
unzip
|
||||
makeWrapper
|
||||
copyDesktopItems
|
||||
imagemagick
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "irpf";
|
||||
exec = "irpf";
|
||||
icon = "rfb64";
|
||||
icon = "rfb";
|
||||
desktopName = "Imposto de Renda Pessoa Física";
|
||||
comment = "Programa Oficial da Receita para elaboração do IRPF";
|
||||
categories = [ "Office" ];
|
||||
@@ -72,9 +74,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
--set _JAVA_AWT_WM_NONREPARENTING 1 \
|
||||
--set AWT_TOOLKIT MToolkit
|
||||
|
||||
mkdir -p $out/share/pixmaps
|
||||
unzip -j lib/ppgd-icones-4.0.jar icones/rfb64.png -d $out/share/pixmaps
|
||||
|
||||
mkdir -p $out/share/icons/hicolor/{96x96,72x72,32x32}/apps
|
||||
unzip -jp lib/ppgd-icones-4.0.jar icones/rfb64.png | magick - -background none -gravity center -extent 96x96 $out/share/icons/hicolor/96x96/apps/rfb.png
|
||||
unzip -jp lib/ppgd-icones-4.0.jar icones/rfb48.png | magick - -background none -gravity center -extent 72x72 $out/share/icons/hicolor/72x72/apps/rfb.png
|
||||
unzip -j lib/ppgd-icones-4.0.jar icones/rfb.png -d $out/share/icons/hicolor/32x32/apps
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
|
||||
@@ -100,7 +100,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
install -D resources/icons/icon.png $out/share/pixmaps/jamesdsp.png
|
||||
install -D resources/icons/icon.png $out/share/icons/hicolor/512x512/apps/jamesdsp.png
|
||||
install -D resources/icons/icon.svg $out/share/icons/hicolor/scalable/apps/jamesdsp.svg
|
||||
'';
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user