Merge remote-tracking branch 'origin/staging-next' into staging

This commit is contained in:
K900
2024-12-01 10:29:27 +03:00
133 changed files with 2818 additions and 1332 deletions
+3
View File
@@ -212,3 +212,6 @@ ce21e97a1f20dee15da85c084f9d1148d84f853b
# format files with nixfmt (#347275)
adb9714bd909df283c66bbd641bd631ff50a4260
# treewide: incus packages
9ab59bb5fb943ad6740f64f5a79eae9642fb8211
+1 -1
View File
@@ -345,7 +345,7 @@ See [Nix Channel Status](https://status.nixos.org/) for the current channels and
Here's a brief overview of the main Git branches and what channels they're used for:
- `master`: The main branch, used for the unstable channels such as `nixpkgs-unstable`, `nixos-unstable` and `nixos-unstable-small`.
- `release-YY.MM` (e.g. `release-24.11`): The NixOS release branches, used for the stable channels such as `nixos-24.11`, `nixos-24.11-small` and `nixpkgs-24.11-darwin`.
- `release-YY.MM` (e.g. `release-25.05`): The NixOS release branches, used for the stable channels such as `nixos-25.05`, `nixos-25.05-small` and `nixpkgs-25.05-darwin`.
When a channel is updated, a corresponding Git branch is also updated to point to the corresponding commit.
So e.g. the [`nixpkgs-unstable` branch](https://github.com/nixos/nixpkgs/tree/nixpkgs-unstable) corresponds to the Git commit from the [`nixpkgs-unstable` channel](https://channels.nixos.org/nixpkgs-unstable).
+2 -2
View File
@@ -52,9 +52,9 @@ Nixpkgs and NixOS are built and tested by our continuous integration
system, [Hydra](https://hydra.nixos.org/).
* [Continuous package builds for unstable/master](https://hydra.nixos.org/jobset/nixos/trunk-combined)
* [Continuous package builds for the NixOS 24.05 release](https://hydra.nixos.org/jobset/nixos/release-24.05)
* [Continuous package builds for the NixOS 24.11 release](https://hydra.nixos.org/jobset/nixos/release-24.11)
* [Tests for unstable/master](https://hydra.nixos.org/job/nixos/trunk-combined/tested#tabs-constituents)
* [Tests for the NixOS 24.05 release](https://hydra.nixos.org/job/nixos/release-24.05/tested#tabs-constituents)
* [Tests for the NixOS 24.11 release](https://hydra.nixos.org/job/nixos/release-24.11/tested#tabs-constituents)
Artifacts successfully built with Hydra are published to cache at
https://cache.nixos.org/. When successful build and test criteria are
+5
View File
@@ -16805,6 +16805,11 @@
githubId = 33826198;
name = "Philipp Arras";
};
parth = {
github = "parth";
githubId = 821972;
name = "Parth Mehrotra";
};
pashashocky = {
email = "pashashocky@gmail.com";
github = "pashashocky";
@@ -6,7 +6,7 @@ expressions and associated binaries. The NixOS channels are updated
automatically from NixOS's Git repository after certain tests have
passed and all packages have been built. These channels are:
- *Stable channels*, such as [`nixos-24.05`](https://channels.nixos.org/nixos-24.05).
- *Stable channels*, such as [`nixos-24.11`](https://channels.nixos.org/nixos-24.11).
These only get conservative bug fixes and package upgrades. For
instance, a channel update may cause the Linux kernel on your system
to be upgraded from 4.19.34 to 4.19.38 (a minor bug fix), but not
@@ -19,7 +19,7 @@ passed and all packages have been built. These channels are:
radical changes between channel updates. It's not recommended for
production systems.
- *Small channels*, such as [`nixos-24.05-small`](https://channels.nixos.org/nixos-24.05-small)
- *Small channels*, such as [`nixos-24.11-small`](https://channels.nixos.org/nixos-24.11-small)
or [`nixos-unstable-small`](https://channels.nixos.org/nixos-unstable-small).
These are identical to the stable and unstable channels described above,
except that they contain fewer binary packages. This means they get updated
@@ -38,8 +38,8 @@ supported stable release.
When you first install NixOS, you're automatically subscribed to the
NixOS channel that corresponds to your installation source. For
instance, if you installed from a 24.05 ISO, you will be subscribed to
the `nixos-24.05` channel. To see which NixOS channel you're subscribed
instance, if you installed from a 24.11 ISO, you will be subscribed to
the `nixos-24.11` channel. To see which NixOS channel you're subscribed
to, run the following as root:
```ShellSession
@@ -54,16 +54,16 @@ To switch to a different NixOS channel, do
```
(Be sure to include the `nixos` parameter at the end.) For instance, to
use the NixOS 24.05 stable channel:
use the NixOS 24.11 stable channel:
```ShellSession
# nix-channel --add https://channels.nixos.org/nixos-24.05 nixos
# nix-channel --add https://channels.nixos.org/nixos-24.11 nixos
```
If you have a server, you may want to use the "small" channel instead:
```ShellSession
# nix-channel --add https://channels.nixos.org/nixos-24.05-small nixos
# nix-channel --add https://channels.nixos.org/nixos-24.11-small nixos
```
And if you want to live on the bleeding edge:
@@ -117,6 +117,6 @@ modules. You can also specify a channel explicitly, e.g.
```nix
{
system.autoUpgrade.channel = "https://channels.nixos.org/nixos-24.05";
system.autoUpgrade.channel = "https://channels.nixos.org/nixos-24.11";
}
```
@@ -1,4 +1,4 @@
# Release 24.11 (“Vicuña”, 2024.11/??) {#sec-release-24.11}
# Release 24.11 (“Vicuña”, 2024.11/28) {#sec-release-24.11}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
+1 -1
View File
@@ -67,7 +67,7 @@ in
environment.systemPackages = [ cfg.package ];
environment.shellInit = ''
test -e ${cfg.package}/nix-support/setup-hook && source ${cfg.package}/nix-support/setup-hook
test -e ${cfg.package}/nix-support/setup-hook && . ${cfg.package}/nix-support/setup-hook
'';
};
+76 -15
View File
@@ -8,14 +8,16 @@ let
cfg = config.services.zapret;
whitelist = lib.optionalString (
cfg.whitelist != null
(builtins.length cfg.whitelist) != 0
) "--hostlist ${pkgs.writeText "zapret-whitelist" (lib.concatStringsSep "\n" cfg.whitelist)}";
blacklist =
lib.optionalString (cfg.blacklist != null)
lib.optionalString ((builtins.length cfg.blacklist) != 0)
"--hostlist-exclude ${pkgs.writeText "zapret-blacklist" (lib.concatStringsSep "\n" cfg.blacklist)}";
ports = if cfg.httpSupport then "80,443" else "443";
params = lib.concatStringsSep " " cfg.params;
qnum = toString cfg.qnum;
in
{
options.services.zapret = {
@@ -29,7 +31,7 @@ in
"--dpi-desync=fake,disorder2"
"--dpi-desync-ttl=1"
"--dpi-desync-autottl=2"
];
]
'';
description = ''
Specify the bypass parameters for Zapret binary.
@@ -40,8 +42,8 @@ in
'';
};
whitelist = lib.mkOption {
default = null;
type = with lib.types; nullOr (listOf str);
default = [ ];
type = with lib.types; listOf str;
example = ''
[
"youtube.com"
@@ -59,8 +61,8 @@ in
'';
};
blacklist = lib.mkOption {
default = null;
type = with lib.types; nullOr (listOf str);
default = [ ];
type = with lib.types; listOf str;
example = ''
[
"example.com"
@@ -96,6 +98,43 @@ in
Http bypass rarely works and you might want to disable it if you don't utilise http connections.
'';
};
httpMode = lib.mkOption {
default = "first";
type = lib.types.enum [
"first"
"full"
];
example = "full";
description = ''
By default this service only changes the first packet sent, which is enough in most cases.
But there are DPIs that monitor the whole traffic within a session.
That requires full processing of every packet, which increases the CPU usage.
Set the mode to `full` if http doesn't work.
'';
};
udpSupport = lib.mkOption {
default = false;
type = lib.types.bool;
description = ''
Enable UDP routing.
This requires you to specify `udpPorts` and `--dpi-desync-any-protocol` parameter.
'';
};
udpPorts = lib.mkOption {
default = [ ];
type = with lib.types; listOf str;
example = ''
[
"50000:50099"
"1234"
]
'';
description = ''
List of UDP ports to route.
Port ranges are delimited with a colon like this "50000:50099".
'';
};
};
config = lib.mkIf cfg.enable (
@@ -103,13 +142,21 @@ in
{
assertions = [
{
assertion = (cfg.whitelist == null) || (cfg.blacklist == null);
assertion = (builtins.length cfg.whitelist) == 0 || (builtins.length cfg.blacklist) == 0;
message = "Can't specify both whitelist and blacklist.";
}
{
assertion = (builtins.length cfg.params) != 0;
message = "You have to specify zapret parameters. See the params option's description.";
}
{
assertion = cfg.udpSupport -> (builtins.length cfg.udpPorts) != 0;
message = "You have to specify UDP ports or disable UDP support.";
}
{
assertion = !cfg.configureFirewall || !config.networking.nftables.enable;
message = "You need to manually configure you firewall for Zapret service when using nftables.";
}
];
systemd.services.zapret = {
@@ -117,13 +164,13 @@ in
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ExecStart = "${cfg.package}/bin/nfqws --pidfile=/run/nfqws.pid ${lib.concatStringsSep " " cfg.params} ${whitelist} ${blacklist} --qnum=${toString cfg.qnum}";
ExecStart = "${cfg.package}/bin/nfqws --pidfile=/run/nfqws.pid ${params} ${whitelist} ${blacklist} --qnum=${qnum}";
Type = "simple";
PIDFile = "/run/nfqws.pid";
Restart = "always";
RuntimeMaxSec = "1h"; # This service loves to crash silently or cause network slowdowns. It also restarts instantly. In my experience restarting it hourly provided the best experience.
RuntimeMaxSec = "1h"; # This service loves to crash silently or cause network slowdowns. It also restarts instantly. Restarting it at least hourly provided the best experience.
# hardening
# Hardening.
DevicePolicy = "closed";
KeyringMode = "private";
PrivateTmp = true;
@@ -145,9 +192,23 @@ in
# Route system traffic via service for specified ports.
(lib.mkIf cfg.configureFirewall {
networking.firewall.extraCommands = ''
iptables -t mangle -I POSTROUTING -p tcp -m multiport --dports ${ports} -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${toString cfg.qnum} --queue-bypass
'';
networking.firewall.extraCommands =
let
httpParams = lib.optionalString (
cfg.httpMode == "first"
) "-m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6";
udpPorts = lib.concatStringsSep "," cfg.udpPorts;
in
''
ip46tables -t mangle -I POSTROUTING -p tcp --dport 443 -m connbytes --connbytes-dir=original --connbytes-mode=packets --connbytes 1:6 -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${qnum} --queue-bypass
''
+ lib.optionalString (cfg.httpSupport) ''
ip46tables -t mangle -I POSTROUTING -p tcp --dport 80 ${httpParams} -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${qnum} --queue-bypass
''
+ lib.optionalString (cfg.udpSupport) ''
ip46tables -t mangle -A POSTROUTING -p udp -m multiport --dports ${udpPorts} -m mark ! --mark 0x40000000/0x40000000 -j NFQUEUE --queue-num ${qnum} --queue-bypass
'';
})
]
);
+1 -1
View File
@@ -56,7 +56,7 @@ let
mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
pgsqlLocal = cfg.database.createLocally && cfg.database.type == "pgsql";
phpExt = pkgs.php81.buildEnv {
phpExt = pkgs.php83.buildEnv {
extensions = { all, ... }: with all; [ iconv mbstring curl openssl tokenizer soap ctype zip gd simplexml dom intl sqlite3 pgsql pdo_sqlite pdo_pgsql pdo_odbc pdo_mysql pdo mysqli session zlib xmlreader fileinfo filter opcache exif sodium ];
extraConfig = "max_input_vars = 5000";
};
@@ -1,51 +1,71 @@
{ lib, config, pkgs, ... }:
{
lib,
config,
pkgs,
...
}:
let
templateSubmodule = {...}: {
options = {
enable = lib.mkEnableOption "this template";
templateSubmodule =
{ ... }:
{
options = {
enable = lib.mkEnableOption "this template";
target = lib.mkOption {
description = "Path in the container";
type = lib.types.path;
};
template = lib.mkOption {
description = ".tpl file for rendering the target";
type = lib.types.path;
};
when = lib.mkOption {
description = "Events which trigger a rewrite (create, copy)";
type = lib.types.listOf (lib.types.str);
};
properties = lib.mkOption {
description = "Additional properties";
type = lib.types.attrs;
default = {};
target = lib.mkOption {
description = "Path in the container";
type = lib.types.path;
};
template = lib.mkOption {
description = ".tpl file for rendering the target";
type = lib.types.path;
};
when = lib.mkOption {
description = "Events which trigger a rewrite (create, copy)";
type = lib.types.listOf (lib.types.str);
};
properties = lib.mkOption {
description = "Additional properties";
type = lib.types.attrs;
default = { };
};
};
};
};
toYAML = name: data: pkgs.writeText name (lib.generators.toYAML {} data);
toYAML = name: data: pkgs.writeText name (lib.generators.toYAML { } data);
cfg = config.virtualisation.lxc;
templates = if cfg.templates != {} then let
list = lib.mapAttrsToList (name: value: { inherit name; } // value)
(lib.filterAttrs (name: value: value.enable) cfg.templates);
in
{
files = map (tpl: {
source = tpl.template;
target = "/templates/${tpl.name}.tpl";
}) list;
properties = lib.listToAttrs (map (tpl: lib.nameValuePair tpl.target {
when = tpl.when;
template = "${tpl.name}.tpl";
properties = tpl.properties;
}) list);
}
else { files = []; properties = {}; };
templates =
if cfg.templates != { } then
let
list = lib.mapAttrsToList (name: value: { inherit name; } // value) (
lib.filterAttrs (name: value: value.enable) cfg.templates
);
in
{
files = map (tpl: {
source = tpl.template;
target = "/templates/${tpl.name}.tpl";
}) list;
properties = lib.listToAttrs (
map (
tpl:
lib.nameValuePair tpl.target {
when = tpl.when;
template = "${tpl.name}.tpl";
properties = tpl.properties;
}
) list
);
}
else
{
files = [ ];
properties = { };
};
in {
in
{
imports = [
../image/file-options.nix
];
@@ -59,7 +79,7 @@ in {
templates = lib.mkOption {
description = "Templates for LXD";
type = lib.types.attrsOf (lib.types.submodule templateSubmodule);
default = {};
default = { };
example = lib.literalExpression ''
{
# create /etc/hostname on container creation
@@ -91,7 +111,10 @@ in {
};
config = {
system.nixos.tags = [ "lxc" "metadata" ];
system.nixos.tags = [
"lxc"
"metadata"
];
image.extension = "tar.xz";
image.filePath = "tarball/${config.image.fileName}";
system.build.image = config.system.build.metadata;
@@ -100,7 +123,9 @@ in {
contents = [
{
source = toYAML "metadata.yaml" {
architecture = builtins.elemAt (builtins.match "^([a-z0-9_]+).+" (toString pkgs.stdenv.hostPlatform.system)) 0;
architecture = builtins.elemAt (builtins.match "^([a-z0-9_]+).+" (
toString pkgs.stdenv.hostPlatform.system
)) 0;
creation_date = 1;
properties = {
description = "${config.system.nixos.distroName} ${config.system.nixos.codeName} ${config.system.nixos.label} ${pkgs.stdenv.hostPlatform.system}";
@@ -1,4 +1,4 @@
{lib, ...}:
{ lib, ... }:
{
meta = {
+53 -48
View File
@@ -1,6 +1,11 @@
# LXC Configuration
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.virtualisation.lxc;
@@ -12,58 +17,53 @@ in
};
options.virtualisation.lxc = {
enable =
lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
This enables Linux Containers (LXC), which provides tools
for creating and managing system or application containers
on Linux.
'';
};
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
This enables Linux Containers (LXC), which provides tools
for creating and managing system or application containers
on Linux.
'';
};
unprivilegedContainers = lib.mkEnableOption "support for unprivileged users to launch containers";
systemConfig =
lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
This is the system-wide LXC config. See
{manpage}`lxc.system.conf(5)`.
'';
};
systemConfig = lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
This is the system-wide LXC config. See
{manpage}`lxc.system.conf(5)`.
'';
};
package = lib.mkPackageOption pkgs "lxc" { };
defaultConfig =
lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
Default config (default.conf) for new containers, i.e. for
network config. See {manpage}`lxc.container.conf(5)`.
'';
};
defaultConfig = lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
Default config (default.conf) for new containers, i.e. for
network config. See {manpage}`lxc.container.conf(5)`.
'';
};
usernetConfig =
lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
This is the config file for managing unprivileged user network
administration access in LXC. See {manpage}`lxc-usernet(5)`.
'';
};
usernetConfig = lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
This is the config file for managing unprivileged user network
administration access in LXC. See {manpage}`lxc-usernet(5)`.
'';
};
bridgeConfig =
lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
This is the config file for override lxc-net bridge default settings.
'';
};
bridgeConfig = lib.mkOption {
type = lib.types.lines;
default = "";
description = ''
This is the config file for override lxc-net bridge default settings.
'';
};
};
###### implementation
@@ -88,7 +88,7 @@ in
};
# We don't need the `lxc-user` group, unless the unprivileged containers are enabled.
users.groups = lib.mkIf cfg.unprivilegedContainers { lxc-user = {}; };
users.groups = lib.mkIf cfg.unprivilegedContainers { lxc-user = { }; };
# `lxc-user-nic` needs suid to attach to bridge for unpriv containers.
security.wrappers = lib.mkIf cfg.unprivilegedContainers {
@@ -108,7 +108,12 @@ in
lxc-net = {
enable = true;
wantedBy = [ "multi-user.target" ];
path = [ pkgs.iproute2 pkgs.iptables pkgs.getent pkgs.dnsmasq ];
path = [
pkgs.iproute2
pkgs.iptables
pkgs.getent
pkgs.dnsmasq
];
};
};
};
+25 -20
View File
@@ -1,29 +1,34 @@
# LXC Configuration
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.virtualisation.lxc.lxcfs;
in {
in
{
meta = {
maintainers = lib.teams.lxc.members;
};
###### interface
options.virtualisation.lxc.lxcfs = {
enable =
lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
This enables LXCFS, a FUSE filesystem for LXC.
To use lxcfs in include the following configuration in your
container configuration:
```
virtualisation.lxc.defaultConfig = "lxc.include = ''${pkgs.lxcfs}/share/lxc/config/common.conf.d/00-lxcfs.conf";
```
'';
};
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
This enables LXCFS, a FUSE filesystem for LXC.
To use lxcfs in include the following configuration in your
container configuration:
```
virtualisation.lxc.defaultConfig = "lxc.include = ''${pkgs.lxcfs}/share/lxc/config/common.conf.d/00-lxcfs.conf";
```
'';
};
};
###### implementation
@@ -34,11 +39,11 @@ in {
before = [ "lxc.service" ];
restartIfChanged = false;
serviceConfig = {
ExecStartPre="${pkgs.coreutils}/bin/mkdir -p /var/lib/lxcfs";
ExecStart="${pkgs.lxcfs}/bin/lxcfs /var/lib/lxcfs";
ExecStopPost="-${pkgs.fuse}/bin/fusermount -u /var/lib/lxcfs";
KillMode="process";
Restart="on-failure";
ExecStartPre = "${pkgs.coreutils}/bin/mkdir -p /var/lib/lxcfs";
ExecStart = "${pkgs.lxcfs}/bin/lxcfs /var/lib/lxcfs";
ExecStopPost = "-${pkgs.fuse}/bin/fusermount -u /var/lib/lxcfs";
KillMode = "process";
Restart = "on-failure";
};
};
};
+132 -118
View File
@@ -1,140 +1,154 @@
import ../make-test-python.nix ({ pkgs, lib, extra ? {}, name ? "incus-container", incus ? pkgs.incus-lts, ... } :
import ../make-test-python.nix (
{
pkgs,
lib,
extra ? { },
name ? "incus-container",
incus ? pkgs.incus-lts,
...
}:
let
releases = import ../../release.nix {
configuration = lib.recursiveUpdate {
let
releases = import ../../release.nix {
configuration = lib.recursiveUpdate {
# Building documentation makes the test unnecessarily take a longer time:
documentation.enable = lib.mkForce false;
boot.kernel.sysctl."net.ipv4.ip_forward" = "1";
}
extra;
};
container-image-metadata = "${releases.incusContainerMeta.${pkgs.stdenv.hostPlatform.system}}/tarball/nixos-system-${pkgs.stdenv.hostPlatform.system}.tar.xz";
container-image-rootfs = "${releases.incusContainerImage.${pkgs.stdenv.hostPlatform.system}}/nixos-lxc-image-${pkgs.stdenv.hostPlatform.system}.squashfs";
in
{
inherit name;
meta = {
maintainers = lib.teams.lxc.members;
};
nodes.machine = { ... }: {
virtualisation = {
# Ensure test VM has enough resources for creating and managing guests
cores = 2;
memorySize = 1024;
diskSize = 4096;
incus = {
enable = true;
package = incus;
};
} extra;
};
networking.nftables.enable = true;
};
testScript = # python
''
def instance_is_up(_) -> bool:
status, _ = machine.execute("incus exec container --disable-stdin --force-interactive /run/current-system/sw/bin/systemctl -- is-system-running")
return status == 0
container-image-metadata = "${
releases.incusContainerMeta.${pkgs.stdenv.hostPlatform.system}
}/tarball/nixos-image-lxc-*-${pkgs.stdenv.hostPlatform.system}.tar.xz";
container-image-rootfs = "${
releases.incusContainerImage.${pkgs.stdenv.hostPlatform.system}
}/nixos-lxc-image-${pkgs.stdenv.hostPlatform.system}.squashfs";
in
{
inherit name;
def set_container(config):
machine.succeed(f"incus config set container {config}")
machine.succeed("incus restart container")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
meta = {
maintainers = lib.teams.lxc.members;
};
def check_sysctl(instance):
with subtest("systemd sysctl settings are applied"):
machine.succeed(f"incus exec {instance} -- systemctl status systemd-sysctl")
sysctl = machine.succeed(f"incus exec {instance} -- sysctl net.ipv4.ip_forward").strip().split(" ")[-1]
assert "1" == sysctl, f"systemd-sysctl configuration not correctly applied, {sysctl} != 1"
nodes.machine =
{ ... }:
{
virtualisation = {
# Ensure test VM has enough resources for creating and managing guests
cores = 2;
memorySize = 1024;
diskSize = 4096;
machine.wait_for_unit("incus.service")
incus = {
enable = true;
package = incus;
};
};
networking.nftables.enable = true;
};
# no preseed should mean no service
machine.fail("systemctl status incus-preseed.service")
testScript = # python
''
def instance_is_up(_) -> bool:
status, _ = machine.execute("incus exec container --disable-stdin --force-interactive /run/current-system/sw/bin/systemctl -- is-system-running")
return status == 0
machine.succeed("incus admin init --minimal")
with subtest("Container image can be imported"):
machine.succeed("incus image import ${container-image-metadata} ${container-image-rootfs} --alias nixos")
with subtest("Container can be launched and managed"):
machine.succeed("incus launch nixos container")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.succeed("echo true | incus exec container /run/current-system/sw/bin/bash -")
with subtest("Container mounts lxcfs overlays"):
machine.succeed("incus exec container mount | grep 'lxcfs on /proc/cpuinfo type fuse.lxcfs'")
machine.succeed("incus exec container mount | grep 'lxcfs on /proc/meminfo type fuse.lxcfs'")
with subtest("resource limits"):
with subtest("Container CPU limits can be managed"):
set_container("limits.cpu 1")
cpuinfo = machine.succeed("incus exec container grep -- -c ^processor /proc/cpuinfo").strip()
assert cpuinfo == "1", f"Wrong number of CPUs reported from /proc/cpuinfo, want: 1, got: {cpuinfo}"
set_container("limits.cpu 2")
cpuinfo = machine.succeed("incus exec container grep -- -c ^processor /proc/cpuinfo").strip()
assert cpuinfo == "2", f"Wrong number of CPUs reported from /proc/cpuinfo, want: 2, got: {cpuinfo}"
with subtest("Container memory limits can be managed"):
set_container("limits.memory 64MB")
meminfo = machine.succeed("incus exec container grep -- MemTotal /proc/meminfo").strip()
meminfo_bytes = " ".join(meminfo.split(' ')[-2:])
assert meminfo_bytes == "62500 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '62500 kB', got: '{meminfo_bytes}'"
set_container("limits.memory 128MB")
meminfo = machine.succeed("incus exec container grep -- MemTotal /proc/meminfo").strip()
meminfo_bytes = " ".join(meminfo.split(' ')[-2:])
assert meminfo_bytes == "125000 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '125000 kB', got: '{meminfo_bytes}'"
with subtest("virtual tpm can be configured"):
machine.succeed("incus config device add container vtpm tpm path=/dev/tpm0 pathrm=/dev/tpmrm0")
machine.succeed("incus exec container -- test -e /dev/tpm0")
machine.succeed("incus exec container -- test -e /dev/tpmrm0")
machine.succeed("incus config device remove container vtpm")
machine.fail("incus exec container -- test -e /dev/tpm0")
with subtest("lxc-generator"):
with subtest("lxc-container generator configures plain container"):
# reuse the existing container to save some time
machine.succeed("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
check_sysctl("container")
with subtest("lxc-container generator configures nested container"):
machine.execute("incus delete --force container")
machine.succeed("incus launch nixos container --config security.nesting=true")
def set_container(config):
machine.succeed(f"incus config set container {config}")
machine.succeed("incus restart container")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.fail("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
target = machine.succeed("incus exec container readlink -- -f /run/systemd/system/systemd-binfmt.service").strip()
assert target == "/dev/null", "lxc generator did not correctly mask /run/systemd/system/systemd-binfmt.service"
def check_sysctl(instance):
with subtest("systemd sysctl settings are applied"):
machine.succeed(f"incus exec {instance} -- systemctl status systemd-sysctl")
sysctl = machine.succeed(f"incus exec {instance} -- sysctl net.ipv4.ip_forward").strip().split(" ")[-1]
assert "1" == sysctl, f"systemd-sysctl configuration not correctly applied, {sysctl} != 1"
check_sysctl("container")
machine.wait_for_unit("incus.service")
with subtest("lxc-container generator configures privileged container"):
machine.execute("incus delete --force container")
machine.succeed("incus launch nixos container --config security.privileged=true")
# no preseed should mean no service
machine.fail("systemctl status incus-preseed.service")
machine.succeed("incus admin init --minimal")
with subtest("Container image can be imported"):
machine.succeed("incus image import ${container-image-metadata} ${container-image-rootfs} --alias nixos")
with subtest("Container can be launched and managed"):
machine.succeed("incus launch nixos container")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.succeed("echo true | incus exec container /run/current-system/sw/bin/bash -")
machine.succeed("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
with subtest("Container mounts lxcfs overlays"):
machine.succeed("incus exec container mount | grep 'lxcfs on /proc/cpuinfo type fuse.lxcfs'")
machine.succeed("incus exec container mount | grep 'lxcfs on /proc/meminfo type fuse.lxcfs'")
check_sysctl("container")
with subtest("resource limits"):
with subtest("Container CPU limits can be managed"):
set_container("limits.cpu 1")
cpuinfo = machine.succeed("incus exec container grep -- -c ^processor /proc/cpuinfo").strip()
assert cpuinfo == "1", f"Wrong number of CPUs reported from /proc/cpuinfo, want: 1, got: {cpuinfo}"
with subtest("softDaemonRestart"):
with subtest("Instance remains running when softDaemonRestart is enabled and services is stopped"):
pid = machine.succeed("incus info container | grep 'PID'").split(":")[1].strip()
machine.succeed(f"ps {pid}")
machine.succeed("systemctl stop incus")
machine.succeed(f"ps {pid}")
'';
})
set_container("limits.cpu 2")
cpuinfo = machine.succeed("incus exec container grep -- -c ^processor /proc/cpuinfo").strip()
assert cpuinfo == "2", f"Wrong number of CPUs reported from /proc/cpuinfo, want: 2, got: {cpuinfo}"
with subtest("Container memory limits can be managed"):
set_container("limits.memory 64MB")
meminfo = machine.succeed("incus exec container grep -- MemTotal /proc/meminfo").strip()
meminfo_bytes = " ".join(meminfo.split(' ')[-2:])
assert meminfo_bytes == "62500 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '62500 kB', got: '{meminfo_bytes}'"
set_container("limits.memory 128MB")
meminfo = machine.succeed("incus exec container grep -- MemTotal /proc/meminfo").strip()
meminfo_bytes = " ".join(meminfo.split(' ')[-2:])
assert meminfo_bytes == "125000 kB", f"Wrong amount of memory reported from /proc/meminfo, want: '125000 kB', got: '{meminfo_bytes}'"
with subtest("virtual tpm can be configured"):
machine.succeed("incus config device add container vtpm tpm path=/dev/tpm0 pathrm=/dev/tpmrm0")
machine.succeed("incus exec container -- test -e /dev/tpm0")
machine.succeed("incus exec container -- test -e /dev/tpmrm0")
machine.succeed("incus config device remove container vtpm")
machine.fail("incus exec container -- test -e /dev/tpm0")
with subtest("lxc-generator"):
with subtest("lxc-container generator configures plain container"):
# reuse the existing container to save some time
machine.succeed("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
check_sysctl("container")
with subtest("lxc-container generator configures nested container"):
machine.execute("incus delete --force container")
machine.succeed("incus launch nixos container --config security.nesting=true")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.fail("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
target = machine.succeed("incus exec container readlink -- -f /run/systemd/system/systemd-binfmt.service").strip()
assert target == "/dev/null", "lxc generator did not correctly mask /run/systemd/system/systemd-binfmt.service"
check_sysctl("container")
with subtest("lxc-container generator configures privileged container"):
machine.execute("incus delete --force container")
machine.succeed("incus launch nixos container --config security.privileged=true")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.succeed("incus exec container test -- -e /run/systemd/system/service.d/zzz-lxc-service.conf")
check_sysctl("container")
with subtest("softDaemonRestart"):
with subtest("Instance remains running when softDaemonRestart is enabled and services is stopped"):
pid = machine.succeed("incus info container | grep 'PID'").split(":")[1].strip()
machine.succeed(f"ps {pid}")
machine.succeed("systemctl stop incus")
machine.succeed(f"ps {pid}")
'';
}
)
+72 -63
View File
@@ -1,69 +1,78 @@
import ../make-test-python.nix ({ pkgs, lib, incus ? pkgs.incus-lts, ... } :
import ../make-test-python.nix (
{
pkgs,
lib,
incus ? pkgs.incus-lts,
...
}:
{
name = "incus-openvswitch";
{
name = "incus-openvswitch";
meta = {
maintainers = lib.teams.lxc.members;
};
nodes.machine = { lib, ... }: {
virtualisation = {
incus = {
enable = true;
package = incus;
};
vswitch.enable = true;
incus.preseed = {
networks = [
{
name = "nixostestbr0";
type = "bridge";
config = {
"bridge.driver" = "openvswitch";
"ipv4.address" = "10.0.100.1/24";
"ipv4.nat" = "true";
};
}
];
profiles = [
{
name = "nixostest_default";
devices = {
eth0 = {
name = "eth0";
network = "nixostestbr0";
type = "nic";
};
root = {
path = "/";
pool = "default";
size = "35GiB";
type = "disk";
};
};
}
];
storage_pools = [
{
name = "nixostest_pool";
driver = "dir";
}
];
};
meta = {
maintainers = lib.teams.lxc.members;
};
networking.nftables.enable = true;
};
testScript = ''
machine.wait_for_unit("incus.service")
machine.wait_for_unit("incus-preseed.service")
nodes.machine =
{ lib, ... }:
{
virtualisation = {
incus = {
enable = true;
package = incus;
};
with subtest("Verify openvswitch bridge"):
machine.succeed("incus network info nixostestbr0")
vswitch.enable = true;
incus.preseed = {
networks = [
{
name = "nixostestbr0";
type = "bridge";
config = {
"bridge.driver" = "openvswitch";
"ipv4.address" = "10.0.100.1/24";
"ipv4.nat" = "true";
};
}
];
profiles = [
{
name = "nixostest_default";
devices = {
eth0 = {
name = "eth0";
network = "nixostestbr0";
type = "nic";
};
root = {
path = "/";
pool = "default";
size = "35GiB";
type = "disk";
};
};
}
];
storage_pools = [
{
name = "nixostest_pool";
driver = "dir";
}
];
};
};
networking.nftables.enable = true;
};
with subtest("Verify openvswitch bridge"):
machine.succeed("ovs-vsctl br-exists nixostestbr0")
'';
})
testScript = ''
machine.wait_for_unit("incus.service")
machine.wait_for_unit("incus-preseed.service")
with subtest("Verify openvswitch bridge"):
machine.succeed("incus network info nixostestbr0")
with subtest("Verify openvswitch bridge"):
machine.succeed("ovs-vsctl br-exists nixostestbr0")
'';
}
)
+35 -26
View File
@@ -1,32 +1,41 @@
import ../make-test-python.nix ({ pkgs, lib, incus ? pkgs.incus-lts, ... } :
import ../make-test-python.nix (
{
pkgs,
lib,
incus ? pkgs.incus-lts,
...
}:
{
name = "incus-socket-activated";
{
name = "incus-socket-activated";
meta = {
maintainers = lib.teams.lxc.members;
};
nodes.machine = { lib, ... }: {
virtualisation = {
incus = {
enable = true;
package = incus;
socketActivation = true;
};
meta = {
maintainers = lib.teams.lxc.members;
};
networking.nftables.enable = true;
};
testScript = ''
machine.wait_for_unit("incus.socket")
nodes.machine =
{ lib, ... }:
{
virtualisation = {
incus = {
enable = true;
package = incus;
socketActivation = true;
};
};
networking.nftables.enable = true;
};
# ensure service is not running by default
machine.fail("systemctl is-active incus.service")
machine.fail("systemctl is-active incus-preseed.service")
testScript = ''
machine.wait_for_unit("incus.socket")
# access the socket and ensure the service starts
machine.succeed("incus list")
machine.wait_for_unit("incus.service")
'';
})
# ensure service is not running by default
machine.fail("systemctl is-active incus.service")
machine.fail("systemctl is-active incus-preseed.service")
# access the socket and ensure the service starts
machine.succeed("incus list")
machine.wait_for_unit("incus.service")
'';
}
)
+70 -53
View File
@@ -1,67 +1,84 @@
import ../make-test-python.nix ({ pkgs, lib, incus ? pkgs.incus-lts, ... }: {
name = "incus-ui";
import ../make-test-python.nix (
{
pkgs,
lib,
incus ? pkgs.incus-lts,
...
}:
{
name = "incus-ui";
meta = {
maintainers = lib.teams.lxc.members;
};
nodes.machine = { lib, ... }: {
virtualisation = {
incus = {
enable = true;
package = incus;
};
incus.ui.enable = true;
meta = {
maintainers = lib.teams.lxc.members;
};
networking.nftables.enable = true;
environment.systemPackages =
let
seleniumScript = pkgs.writers.writePython3Bin "selenium-script"
{
libraries = with pkgs.python3Packages; [ selenium ];
} ''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
nodes.machine =
{ lib, ... }:
{
virtualisation = {
incus = {
enable = true;
package = incus;
};
incus.ui.enable = true;
};
networking.nftables.enable = true;
options = Options()
options.add_argument("--headless")
service = webdriver.FirefoxService(executable_path="${lib.getExe pkgs.geckodriver}") # noqa: E501
environment.systemPackages =
let
seleniumScript =
pkgs.writers.writePython3Bin "selenium-script"
{
libraries = with pkgs.python3Packages; [ selenium ];
}
''
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait
driver = webdriver.Firefox(options=options, service=service)
driver.implicitly_wait(10)
driver.get("https://localhost:8443/ui")
options = Options()
options.add_argument("--headless")
service = webdriver.FirefoxService(executable_path="${lib.getExe pkgs.geckodriver}") # noqa: E501
wait = WebDriverWait(driver, 60)
driver = webdriver.Firefox(options=options, service=service)
driver.implicitly_wait(10)
driver.get("https://localhost:8443/ui")
assert len(driver.find_elements(By.CLASS_NAME, "l-application")) > 0
assert len(driver.find_elements(By.CLASS_NAME, "l-navigation__drawer")) > 0
wait = WebDriverWait(driver, 60)
driver.close()
'';
in
with pkgs; [ curl firefox-unwrapped geckodriver seleniumScript ];
};
assert len(driver.find_elements(By.CLASS_NAME, "l-application")) > 0
assert len(driver.find_elements(By.CLASS_NAME, "l-navigation__drawer")) > 0
driver.close()
'';
in
with pkgs;
[
curl
firefox-unwrapped
geckodriver
seleniumScript
];
};
testScript = ''
machine.wait_for_unit("sockets.target")
machine.wait_for_unit("incus.service")
machine.wait_for_file("/var/lib/incus/unix.socket")
testScript = ''
machine.wait_for_unit("sockets.target")
machine.wait_for_unit("incus.service")
machine.wait_for_file("/var/lib/incus/unix.socket")
# Configure incus listen address
machine.succeed("incus config set core.https_address :8443")
machine.succeed("systemctl restart incus")
# Configure incus listen address
machine.succeed("incus config set core.https_address :8443")
machine.succeed("systemctl restart incus")
# Check that the INCUS_UI environment variable is populated in the systemd unit
machine.succeed("cat /etc/systemd/system/incus.service | grep 'INCUS_UI'")
# Check that the INCUS_UI environment variable is populated in the systemd unit
machine.succeed("cat /etc/systemd/system/incus.service | grep 'INCUS_UI'")
# Ensure the endpoint returns an HTML page with 'Incus UI' in the title
machine.succeed("curl -kLs https://localhost:8443/ui | grep '<title>Incus UI</title>'")
# Ensure the endpoint returns an HTML page with 'Incus UI' in the title
machine.succeed("curl -kLs https://localhost:8443/ui | grep '<title>Incus UI</title>'")
# Ensure the application is actually rendered by the Javascript
machine.succeed("PYTHONUNBUFFERED=1 selenium-script")
'';
})
# Ensure the application is actually rendered by the Javascript
machine.succeed("PYTHONUNBUFFERED=1 selenium-script")
'';
}
)
+79 -70
View File
@@ -1,86 +1,95 @@
import ../make-test-python.nix ({ pkgs, lib, incus ? pkgs.incus-lts, ... }:
import ../make-test-python.nix (
{
pkgs,
lib,
incus ? pkgs.incus-lts,
...
}:
let
releases = import ../../release.nix {
configuration = {
# Building documentation makes the test unnecessarily take a longer time:
documentation.enable = lib.mkForce false;
let
releases = import ../../release.nix {
configuration = {
# Building documentation makes the test unnecessarily take a longer time:
documentation.enable = lib.mkForce false;
# Our tests require `grep` & friends:
environment.systemPackages = with pkgs; [busybox];
};
};
vm-image-metadata = releases.incusVirtualMachineImageMeta.${pkgs.stdenv.hostPlatform.system};
vm-image-disk = releases.incusVirtualMachineImage.${pkgs.stdenv.hostPlatform.system};
instance-name = "instance1";
in
{
name = "incus-virtual-machine";
meta = {
maintainers = lib.teams.lxc.members;
};
nodes.machine = {...}: {
virtualisation = {
# Ensure test VM has enough resources for creating and managing guests
cores = 2;
memorySize = 1024;
diskSize = 4096;
incus = {
enable = true;
package = incus;
# Our tests require `grep` & friends:
environment.systemPackages = with pkgs; [ busybox ];
};
};
networking.nftables.enable = true;
};
testScript = # python
''
def instance_is_up(_) -> bool:
status, _ = machine.execute("incus exec ${instance-name} --disable-stdin --force-interactive /run/current-system/sw/bin/systemctl -- is-system-running")
return status == 0
vm-image-metadata = releases.incusVirtualMachineImageMeta.${pkgs.stdenv.hostPlatform.system};
vm-image-disk = releases.incusVirtualMachineImage.${pkgs.stdenv.hostPlatform.system};
machine.wait_for_unit("incus.service")
instance-name = "instance1";
in
{
name = "incus-virtual-machine";
machine.succeed("incus admin init --minimal")
meta = {
maintainers = lib.teams.lxc.members;
};
with subtest("virtual-machine image can be imported"):
machine.succeed("incus image import ${vm-image-metadata}/*/*.tar.xz ${vm-image-disk}/nixos.qcow2 --alias nixos")
nodes.machine =
{ ... }:
{
virtualisation = {
# Ensure test VM has enough resources for creating and managing guests
cores = 2;
memorySize = 1024;
diskSize = 4096;
with subtest("virtual-machine can be created"):
machine.succeed("incus create nixos ${instance-name} --vm --config limits.memory=512MB --config security.secureboot=false")
incus = {
enable = true;
package = incus;
};
};
networking.nftables.enable = true;
};
with subtest("virtual tpm can be configured"):
machine.succeed("incus config device add ${instance-name} vtpm tpm path=/dev/tpm0")
testScript = # python
''
def instance_is_up(_) -> bool:
status, _ = machine.execute("incus exec ${instance-name} --disable-stdin --force-interactive /run/current-system/sw/bin/systemctl -- is-system-running")
return status == 0
with subtest("virtual-machine can be launched and become available"):
machine.succeed("incus start ${instance-name}")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.wait_for_unit("incus.service")
with subtest("incus-agent is started"):
machine.succeed("incus exec ${instance-name} systemctl is-active incus-agent")
machine.succeed("incus admin init --minimal")
with subtest("incus-agent has a valid path"):
machine.succeed("incus exec ${instance-name} -- bash -c 'true'")
with subtest("virtual-machine image can be imported"):
machine.succeed("incus image import ${vm-image-metadata}/*/*.tar.xz ${vm-image-disk}/nixos.qcow2 --alias nixos")
with subtest("guest supports cpu hotplug"):
machine.succeed("incus config set ${instance-name} limits.cpu=1")
count = int(machine.succeed("incus exec ${instance-name} -- nproc").strip())
assert count == 1, f"Wrong number of CPUs reported, want: 1, got: {count}"
with subtest("virtual-machine can be created"):
machine.succeed("incus create nixos ${instance-name} --vm --config limits.memory=512MB --config security.secureboot=false")
machine.succeed("incus config set ${instance-name} limits.cpu=2")
count = int(machine.succeed("incus exec ${instance-name} -- nproc").strip())
assert count == 2, f"Wrong number of CPUs reported, want: 2, got: {count}"
with subtest("virtual tpm can be configured"):
machine.succeed("incus config device add ${instance-name} vtpm tpm path=/dev/tpm0")
with subtest("Instance remains running when softDaemonRestart is enabled and services is stopped"):
pid = machine.succeed("incus info ${instance-name} | grep 'PID'").split(":")[1].strip()
machine.succeed(f"ps {pid}")
machine.succeed("systemctl stop incus")
machine.succeed(f"ps {pid}")
'';
})
with subtest("virtual-machine can be launched and become available"):
machine.succeed("incus start ${instance-name}")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
with subtest("incus-agent is started"):
machine.succeed("incus exec ${instance-name} systemctl is-active incus-agent")
with subtest("incus-agent has a valid path"):
machine.succeed("incus exec ${instance-name} -- bash -c 'true'")
with subtest("guest supports cpu hotplug"):
machine.succeed("incus config set ${instance-name} limits.cpu=1")
count = int(machine.succeed("incus exec ${instance-name} -- nproc").strip())
assert count == 1, f"Wrong number of CPUs reported, want: 1, got: {count}"
machine.succeed("incus config set ${instance-name} limits.cpu=2")
count = int(machine.succeed("incus exec ${instance-name} -- nproc").strip())
assert count == 2, f"Wrong number of CPUs reported, want: 2, got: {count}"
with subtest("Instance remains running when softDaemonRestart is enabled and services is stopped"):
pid = machine.succeed("incus info ${instance-name} | grep 'PID'").split(":")[1].strip()
machine.succeed(f"ps {pid}")
machine.succeed("systemctl stop incus")
machine.succeed(f"ps {pid}")
'';
}
)
@@ -462,6 +462,7 @@ let
};
bridges.bridge.interfaces = [ "greTunnel" "eth1" ];
interfaces.eth1.ipv4.addresses = lib.mkOverride 0 [];
interfaces.eth1.ipv6.addresses = lib.mkOverride 0 [];
interfaces.bridge.ipv4.addresses = lib.mkOverride 0 [
{ address = "192.168.1.1"; prefixLength = 24; }
];
@@ -498,6 +499,7 @@ let
};
bridges.bridge.interfaces = [ "greTunnel" "eth2" ];
interfaces.eth2.ipv4.addresses = lib.mkOverride 0 [];
interfaces.eth2.ipv6.addresses = lib.mkOverride 0 [];
interfaces.bridge.ipv4.addresses = lib.mkOverride 0 [
{ address = "192.168.1.2"; prefixLength = 24; }
];
+4 -3
View File
@@ -3,7 +3,8 @@ let
wayland = { pkgs, ... }: {
imports = [ ./common/wayland-cage.nix ];
services.cage.program = "${pkgs.vscodium}/bin/codium";
# We scale vscodium to help OCR find the small "Untitled" text.
services.cage.program = "${pkgs.vscodium}/bin/codium --force-device-scale-factor=2";
environment.variables.NIXOS_OZONE_WL = "1";
environment.variables.DISPLAY = "do not use";
@@ -16,7 +17,7 @@ let
virtualisation.memorySize = 2047;
services.xserver.enable = true;
services.xserver.displayManager.sessionCommands = ''
${pkgs.vscodium}/bin/codium
${pkgs.vscodium}/bin/codium --force-device-scale-factor=2
'';
test-support.displayManager.auto.user = "alice";
};
@@ -46,7 +47,7 @@ let
codium_running.wait() # type: ignore[union-attr]
with codium_running: # type: ignore[union-attr]
# Wait until vscodium is visible. "File" is in the menu bar.
machine.wait_for_text('Welcome')
machine.wait_for_text('Get Started with')
machine.screenshot('start_screen')
test_string = 'testfile'
@@ -2898,6 +2898,18 @@ final: prev:
meta.homepage = "https://github.com/chrisbra/csv.vim/";
};
csvview-nvim = buildVimPlugin {
pname = "csvview.nvim";
version = "2024-11-18";
src = fetchFromGitHub {
owner = "hat0uma";
repo = "csvview.nvim";
rev = "63b6585fc22bba2060e6dd4600bd2dd0b77dd446";
sha256 = "0615vjdiwij5j6qxa5hfvylq9swp0z6lm5xc38yk6yxhjrkcdvyg";
};
meta.homepage = "https://github.com/hat0uma/csvview.nvim/";
};
ctrlp-cmatcher = buildVimPlugin {
pname = "ctrlp-cmatcher";
version = "2015-10-15";
@@ -3572,6 +3584,18 @@ final: prev:
meta.homepage = "https://github.com/NTBBloodbath/doom-one.nvim/";
};
dotnet-nvim = buildVimPlugin {
pname = "dotnet.nvim";
version = "2024-10-21";
src = fetchFromGitHub {
owner = "MoaidHathot";
repo = "dotnet.nvim";
rev = "f5c52f9f52a3d8ca8dff6916c2228fb41a075274";
sha256 = "1ysqh2aj3iy2q0cl7i642c03jb7cakqhgbqslcfd7dfvibidd2a2";
};
meta.homepage = "https://github.com/MoaidHathot/dotnet.nvim/";
};
dracula-nvim = buildVimPlugin {
pname = "dracula.nvim";
version = "2024-11-11";
@@ -8766,6 +8790,18 @@ final: prev:
meta.homepage = "https://github.com/leoluz/nvim-dap-go/";
};
nvim-dap-lldb = buildVimPlugin {
pname = "nvim-dap-lldb";
version = "2024-06-09";
src = fetchFromGitHub {
owner = "julianolf";
repo = "nvim-dap-lldb";
rev = "81273514fdb5107b79090364b57a3ff5570bea21";
sha256 = "18ds6kkrip0m2zanmzfqcr31qnw1whara1mvsnmx30z6iwgdp92w";
};
meta.homepage = "https://github.com/julianolf/nvim-dap-lldb/";
};
nvim-dap-python = buildVimPlugin {
pname = "nvim-dap-python";
version = "2024-10-24";
@@ -884,6 +884,13 @@ in
'';
});
dotnet-nvim = super.dotnet-nvim.overrideAttrs {
dependencies = with self; [
telescope-nvim
plenary-nvim
];
};
efmls-configs-nvim = super.efmls-configs-nvim.overrideAttrs {
dependencies = [ self.nvim-lspconfig ];
};
@@ -1853,6 +1860,10 @@ in
dependencies = [ self.nvim-fzf ];
};
nvim-dap-lldb = super.nvim-dap-lldb.overrideAttrs {
dependencies = [ self.nvim-dap ];
};
nvim-dap-python = super.nvim-dap-python.overrideAttrs {
dependencies = [ self.nvim-dap ];
nvimRequireCheck = "dap-python";
@@ -240,6 +240,7 @@ https://github.com/saecki/crates.nvim/,,
https://github.com/godlygeek/csapprox/,,
https://github.com/Decodetalkers/csharpls-extended-lsp.nvim/,HEAD,
https://github.com/chrisbra/csv.vim/,,
https://github.com/hat0uma/csvview.nvim/,HEAD,
https://github.com/JazzCore/ctrlp-cmatcher/,,
https://github.com/FelikZ/ctrlp-py-matcher/,,
https://github.com/amiorin/ctrlp-z/,,
@@ -296,6 +297,7 @@ https://github.com/direnv/direnv.vim/,,
https://github.com/chipsenkbeil/distant.nvim/,HEAD,
https://github.com/doki-theme/doki-theme-vim/,,
https://github.com/NTBBloodbath/doom-one.nvim/,,
https://github.com/MoaidHathot/dotnet.nvim/,HEAD,
https://github.com/dracula/vim/,,dracula-vim
https://github.com/Mofiqul/dracula.nvim/,HEAD,
https://github.com/stevearc/dressing.nvim/,,
@@ -728,6 +730,7 @@ https://github.com/andythigpen/nvim-coverage/,HEAD,
https://github.com/yamatsum/nvim-cursorline/,,
https://github.com/mfussenegger/nvim-dap/,,
https://github.com/leoluz/nvim-dap-go/,HEAD,
https://github.com/julianolf/nvim-dap-lldb/,HEAD,
https://github.com/mfussenegger/nvim-dap-python/,HEAD,
https://github.com/rinx/nvim-dap-rego/,HEAD,
https://github.com/jonboh/nvim-dap-rr/,HEAD,
+2 -2
View File
@@ -27,13 +27,13 @@ assert !(pulseaudioSupport && portaudioSupport);
gnuradioMinimal.pkgs.mkDerivation rec {
pname = "gqrx";
version = "2.17.5";
version = "2.17.6";
src = fetchFromGitHub {
owner = "gqrx-sdr";
repo = "gqrx";
rev = "v${version}";
hash = "sha256-9VePsl/vaSTZ1TMyIeaGoZNrZv+O/7BxQ3ubD5S2EjY=";
hash = "sha256-/ykKcwOotu8kn+EpJI+EUeqSkHZ2IrSh+o7lBGeHrZ0=";
};
nativeBuildInputs = [
@@ -10,12 +10,12 @@ let
let
self = {
inherit pname;
version = "0-unstable-2023-03-03";
version = "0-unstable-2024-11-23";
src = fetchFromGitHub {
owner = "occivink";
repo = "mpv-image-viewer";
rev = "efc82147cba4809f22e9afae6ed7a41ad9794ffd";
hash = "sha256-H7uBwrIb5uNEr3m+rHED/hO2CHypGu7hbcRpC30am2Q=";
rev = "128b498e3e57a14deea5ca9bbf662f8c1ca79e8d";
hash = "sha256-VwIL1529CW9MLK4N9jHHddSSZD5RsJ5bWGWqGJ751C0=";
};
sourceRoot = "source/scripts";
@@ -174,7 +174,7 @@ let
allPaths = paths ++ paths32;
rootfs-builder = pkgs.rustPlatform.buildRustPackage {
rootfs-builder = pkgs.buildPackages.rustPlatform.buildRustPackage {
name = "fhs-rootfs-bulder";
src = ./rootfs-builder;
cargoLock.lockFile = ./rootfs-builder/Cargo.lock;
+19 -23
View File
@@ -88,10 +88,6 @@ rec {
set -- $(IFS==; echo $o)
command=$2
;;
out=*)
set -- $(IFS==; echo $o)
export out=$2
;;
esac
done
@@ -129,15 +125,15 @@ rec {
mkdir -p /fs${storeDir}
mount -t 9p store /fs${storeDir} -o trans=virtio,version=9p2000.L,cache=loose,msize=131072
echo "mounting host's build directory..."
mkdir -p /fs/build
mount -t 9p sa /fs/build -o trans=virtio,version=9p2000.L,cache=loose,msize=131072
mkdir -p /fs/tmp /fs/run /fs/var
mount -t tmpfs -o "mode=1777" none /fs/tmp
mount -t tmpfs -o "mode=755" none /fs/run
ln -sfn /run /fs/var/run
echo "mounting host's temporary directory..."
mkdir -p /fs/tmp/xchg
mount -t 9p xchg /fs/tmp/xchg -o trans=virtio,version=9p2000.L,msize=131072
mkdir -p /fs/proc
mount -t proc none /fs/proc
@@ -153,7 +149,7 @@ rec {
fi
echo "starting stage 2 ($command)"
exec switch_root /fs $command $out
exec switch_root /fs $command
'';
@@ -169,11 +165,12 @@ rec {
stage2Init = writeScript "vm-run-stage2" ''
#! ${bash}/bin/sh
set -euo pipefail
source /build/xchg/saved-env
if [ -f "''${NIX_ATTRS_SH_FILE-}" ]; then
source "$NIX_ATTRS_SH_FILE"
source /tmp/xchg/saved-env
if [ -f /tmp/xchg/.attrs.sh ]; then
source /tmp/xchg/.attrs.sh
export NIX_ATTRS_JSON_FILE=/tmp/xchg/.attrs.json
export NIX_ATTRS_SH_FILE=/tmp/xchg/.attrs.sh
fi
source $stdenv/setup
export NIX_STORE=${storeDir}
export NIX_BUILD_TOP=/tmp
@@ -181,6 +178,8 @@ rec {
export PATH=/empty
cd "$NIX_BUILD_TOP"
source $stdenv/setup
if ! test -e /bin/sh; then
${coreutils}/bin/mkdir -p /bin
${coreutils}/bin/ln -s ${bash}/bin/sh /bin/sh
@@ -205,7 +204,7 @@ rec {
declare -a argsArray=()
concatTo argsArray origArgs
"$origBuilder" "''${argsArray[@]}"
echo $? > /build/xchg/in-vm-exit
echo $? > /tmp/xchg/in-vm-exit
${busybox}/bin/mount -o remount,ro dummy /
@@ -224,8 +223,7 @@ rec {
-nographic -no-reboot \
-device virtio-rng-pci \
-virtfs local,path=${storeDir},security_model=none,mount_tag=store \
-virtfs local,path=/build,security_model=none,mount_tag=sa \
-virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \
-virtfs local,path=xchg,security_model=none,mount_tag=xchg \
''${diskImage:+-drive file=$diskImage,if=virtio,cache=unsafe,werror=report} \
-kernel ${kernel}/${img} \
-initrd ${initrd}/initrd \
@@ -235,15 +233,15 @@ rec {
vmRunCommand = qemuCommand: writeText "vm-run" ''
${coreutils}/bin/mkdir xchg
export > xchg/saved-env
PATH=${coreutils}/bin
if [ -f "''${NIX_ATTRS_SH_FILE-}" ]; then
cp $NIX_ATTRS_JSON_FILE $NIX_ATTRS_SH_FILE xchg
source "$NIX_ATTRS_SH_FILE"
fi
source $stdenv/setup
export > saved-env
PATH=${coreutils}/bin
mkdir xchg
mv saved-env xchg/
eval "$preVM"
@@ -261,8 +259,6 @@ rec {
cat > ./run-vm <<EOF
#! ${bash}/bin/sh
''${diskImage:+diskImage=$diskImage}
TMPDIR=$TMPDIR
cd $TMPDIR
${qemuCommand}
EOF
+1
View File
@@ -24,6 +24,7 @@ in
buildPatchelfInVM = runInLinuxVM patchelf;
buildHelloInVM = runInLinuxVM hello;
buildStructuredAttrsHelloInVM = runInLinuxVM (hello.overrideAttrs { __structuredAttrs = true; });
buildPcmanrmInVM = runInLinuxVM (pcmanfm.overrideAttrs (old: {
# goes out-of-memory with many cores
+2 -2
View File
@@ -33,11 +33,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "apt";
version = "2.9.8";
version = "2.9.16";
src = fetchurl {
url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz";
hash = "sha256-VPt7NL25PqIIESOrNfiTwm/g8+gApU6Onsy18+LslxA=";
hash = "sha256-9ncx162Jm4WZBYFPvtO03ic8/rhcGEUEPxR4x1LsnvQ=";
};
# cycle detection; lib can't be split
+3 -2
View File
@@ -22,7 +22,9 @@ stdenv.mkDerivation rec {
hash = "sha256-m5TGZmAu//e/QC7M5wbDR/OMOctjSY+dOWJoYeVkbiA=";
};
nativeBuildInputs = lib.optionals withAtopgpu [
nativeBuildInputs = [
pkg-config
] ++ lib.optionals withAtopgpu [
python3.pkgs.wrapPython
];
@@ -30,7 +32,6 @@ stdenv.mkDerivation rec {
glib
zlib
ncurses
pkg-config
] ++ lib.optionals withAtopgpu [
python3
];
+2 -2
View File
@@ -22,11 +22,11 @@ let
{
x86_64-linux = {
name = "BombSquad_Linux_x86_64";
hash = "sha256-jrExsqaM6uhnKMGPkJJTsKt2Imek+YDI2soSP/kfPj0=";
hash = "sha256-aujLYzFcKaW0ff7sRdyJ6SvSQowafWVbmwycQfDQUYY=";
};
aarch-64-linux = {
name = "BombSquad_Linux_Arm64";
hash = "sha256-o1Yg0C5k07NZzc9jQrHXR+kkQl8HZ55U9/fqcpe3Iyw=";
hash = "sha256-pPP7QZzToTOQtSxzF7Q3ZzlDjUjQWMBM/y79d6Yf38I=";
};
}
.${stdenv.targetPlatform.system} or (throw "${stdenv.targetPlatform.system} is unsupported.");
+3 -16
View File
@@ -1,9 +1,6 @@
{ lib
, rustPlatform
, fetchFromGitHub
, llvmPackages
, stdenv
, darwin
}:
rustPlatform.buildRustPackage rec {
@@ -19,19 +16,9 @@ rustPlatform.buildRustPackage rec {
cargoHash = "sha256-ma7JVbWSiKfkCXCDwA8DFm2+KPrWR+8nSdgGSqehNg8=";
env = {
LIBCLANG_PATH = "${lib.getLib llvmPackages.libclang}/lib";
};
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin (
with darwin.apple_sdk.frameworks; [
Cocoa
IOKit
Foundation
DiskArbitration
]
);
nativeBuildInputs = [
rustPlatform.bindgenHook
];
RUSTFLAGS = "--cfg tracing_unstable";
+3 -3
View File
@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage rec {
pname = "chainsaw";
version = "2.9.2";
version = "2.10.1";
src = fetchFromGitHub {
owner = "WithSecureLabs";
repo = "chainsaw";
rev = "refs/tags/v${version}";
hash = "sha256-oKlLFKCZNBcHURVvT0i8Hfym6r30ikndV30uuxjYgDM=";
hash = "sha256-ErDIfLhzCiFm3dZzr6ThjYCplfDKbALAqcu8c0gREH4=";
};
cargoHash = "sha256-1w3DYP69aOphoqbsZIF9aX56Lftg2niKClmImLTa5DE=";
cargoHash = "sha256-WuPfYxI61wsQyOKqPF7/a3Hx9vMBCkTkoXsZczgeKpg=";
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
darwin.apple_sdk.frameworks.CoreFoundation
+19 -2
View File
@@ -1,4 +1,14 @@
{ stdenvNoCC, lib, src, version, makeWrapper, coreutils, findutils, gnugrep, systemd }:
{
stdenvNoCC,
lib,
src,
version,
makeWrapper,
coreutils,
findutils,
gnugrep,
systemd,
}:
stdenvNoCC.mkDerivation {
name = "distrobuilder-nixos-generator";
@@ -14,6 +24,13 @@ stdenvNoCC.mkDerivation {
installPhase = ''
install -D -m 0555 distrobuilder/lxc.generator $out/lib/systemd/system-generators/lxc
wrapProgram $out/lib/systemd/system-generators/lxc --prefix PATH : ${lib.makeBinPath [coreutils findutils gnugrep systemd]}:${systemd}/lib/systemd
wrapProgram $out/lib/systemd/system-generators/lxc --prefix PATH : ${
lib.makeBinPath [
coreutils
findutils
gnugrep
systemd
]
}:${systemd}/lib/systemd
'';
}
+31 -29
View File
@@ -1,34 +1,37 @@
{ lib
, buildGoModule
, callPackage
, cdrkit
, coreutils
, debootstrap
, fetchFromGitHub
, gnupg
, gnutar
, hivex
, makeWrapper
, nixosTests
, pkg-config
, squashfsTools
, stdenv
, wimlib
{
lib,
buildGoModule,
callPackage,
cdrkit,
coreutils,
debootstrap,
fetchFromGitHub,
gnupg,
gnutar,
hivex,
makeWrapper,
nixosTests,
pkg-config,
squashfsTools,
stdenv,
wimlib,
}:
let
bins = [
coreutils
debootstrap
gnupg
gnutar
squashfsTools
] ++ lib.optionals stdenv.hostPlatform.isx86_64 [
# repack-windows deps
cdrkit
hivex
wimlib
];
bins =
[
coreutils
debootstrap
gnupg
gnutar
squashfsTools
]
++ lib.optionals stdenv.hostPlatform.isx86_64 [
# repack-windows deps
cdrkit
hivex
wimlib
];
in
buildGoModule rec {
pname = "distrobuilder";
@@ -46,7 +49,6 @@ buildGoModule rec {
buildInputs = bins;
# tests require a local keyserver (mkg20001/nixpkgs branch distrobuilder-with-tests) but gpg is currently broken in tests
doCheck = false;
@@ -7,7 +7,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "dmarc-metrics-exporter";
version = "1.1.0";
version = "1.2.0";
pyproject = true;
@@ -15,7 +15,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "jgosmann";
repo = "dmarc-metrics-exporter";
rev = "refs/tags/v${version}";
hash = "sha256-xzIYlOZ1HeW+jbVDVlUPTIooFraQ0cJltsDoCzVMNsA=";
hash = "sha256-cIsI4TNYuLK0fpUg9lnbl5KSBtzQoT/pTByI9hiy/7o=";
};
pythonRelaxDeps = true;
+2 -2
View File
@@ -3,7 +3,7 @@
, nixosTests
, python3
, fetchFromGitHub
, radicale3
, radicale
}:
python3.pkgs.buildPythonApplication {
@@ -25,7 +25,7 @@ python3.pkgs.buildPythonApplication {
flask-wtf
msgpack
setuptools
(python.pkgs.toPythonModule (radicale3.override { python3 = python; }))
(python.pkgs.toPythonModule (radicale.override { python3 = python; }))
requests
types-setuptools
] ++ requests.optional-dependencies.socks;
+1 -1
View File
@@ -5,7 +5,7 @@
stdenv.mkDerivation {
pname = "etlegacy-assets";
version = "2.82.0";
version = "2.83.1";
srcs = let
fetchAsset = { asset, hash }: fetchurl {
@@ -22,7 +22,7 @@
, zlib
}:
let
version = "2.82.1";
version = "2.83.1";
fakeGit = writeShellApplication {
name = "git";
@@ -41,7 +41,7 @@ stdenv.mkDerivation {
owner = "etlegacy";
repo = "etlegacy";
rev = "refs/tags/v${version}";
hash = "sha256-DA5tudbehXIU+4hX3ggcxWZ7AAOa8LUkIvUHbgMgDY8=";
hash = "sha256-k1H3irA9UVOICY3keKGVJMtBczW/b5ObyNvB7fGAcFA=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -7,7 +7,7 @@
symlinkJoin {
name = "etlegacy";
version = "2.82.1";
version = "2.83.1";
paths = [
etlegacy-assets
etlegacy-unwrapped
+3 -3
View File
@@ -16,20 +16,20 @@
buildGoModule rec {
pname = "evcc";
version = "0.131.6";
version = "0.131.8";
src = fetchFromGitHub {
owner = "evcc-io";
repo = "evcc";
rev = version;
hash = "sha256-r9GaihxC9ZQtTzKqfJ3LLDMzDEXeud7vTFEMOf0whFU=";
hash = "sha256-W04iXqABwp5fDesOZf633mS6caEsGv0lHEyCzqEv1WA=";
};
vendorHash = "sha256-x0EWFsR/O2Ztg39DL+yZx2ZDzJHADo2aPAeg/i+5KqM=";
npmDeps = fetchNpmDeps {
inherit src;
hash = "sha256-4pQYv5UKoz3Gu5OS0zoYrjrFYD796MDb7ofWbTv3HlU=";
hash = "sha256-MjmqVyIj/foI6FFMydpbZA3wL09qs02eAq7Tk872JKM=";
};
nativeBuildInputs = [
+3 -25
View File
@@ -1,28 +1,13 @@
{ lib
, buildPackages
, clang
, fetchFromGitHub
, libclang
, libiconv
, llvmPackages_12
, openssl
, pkg-config
, protobuf
, rustPlatform
, stdenv
, Security
, SystemConfiguration
}:
let
# Rust rocksdb bindings have C++ compilation/linking errors on Darwin when using newer clang
# Forcing it to clang 12 fixes the issue.
buildRustPackage =
if stdenv.hostPlatform.isDarwin then
rustPlatform.buildRustPackage.override { stdenv = llvmPackages_12.stdenv; }
else
rustPlatform.buildRustPackage;
in
buildRustPackage rec {
rustPlatform.buildRustPackage rec {
pname = "fedimint";
version = "0.4.4";
@@ -38,17 +23,11 @@ buildRustPackage rec {
nativeBuildInputs = [
protobuf
pkg-config
clang
(lib.getLib libclang)
rustPlatform.bindgenHook
];
buildInputs = [
openssl
] ++ lib.optionals stdenv.hostPlatform.isDarwin [
Security
libiconv
Security
SystemConfiguration
];
outputs = [ "out" "fedimintCli" "fedimint" "gateway" "gatewayCli" "devimint" ];
@@ -79,7 +58,6 @@ buildRustPackage rec {
PROTOC = "${buildPackages.protobuf}/bin/protoc";
PROTOC_INCLUDE = "${protobuf}/include";
OPENSSL_DIR = openssl.dev;
LIBCLANG_PATH = "${lib.getLib libclang}/lib";
FEDIMINT_BUILD_FORCE_GIT_HASH = "0000000000000000000000000000000000000000";
+2 -2
View File
@@ -15,14 +15,14 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "gapless";
version = "4.0";
version = "4.2";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "neithern";
repo = "g4music";
rev = "v${finalAttrs.version}";
hash = "sha256-t9YthW8HZz2kXYPvidVRy7GVB2cRGEOCrXZtIpW65MA=";
hash = "sha256-lH3bogDbUjfNC6rC1UG2MiLRmc8YDaP0+STNKzg54dQ=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -5,13 +5,13 @@
buildGoModule rec {
pname = "gcov2lcov";
version = "1.1.0";
version = "1.1.1";
src = fetchFromGitHub {
owner = "jandelgado";
repo = "gcov2lcov";
rev = "v${version}";
hash = "sha256-E8TPxaKJTd+5OP9e5S1FD5aZP42nJvjiqqNs4xP9gm4=";
hash = "sha256-ifXpT5jGNaStqvzP5Rq6Hf6PFhpiKMRC+eSYOZfzt+s=";
};
vendorHash = "sha256-/2OIBWXbNch6lmw0C1jkyJfNefJXOVG9/jNW8CYHTsc=";
+12 -4
View File
@@ -1,12 +1,17 @@
{ lib, stdenv, fetchurl, nixosTests }:
{
lib,
stdenv,
fetchurl,
nixosTests,
}:
stdenv.mkDerivation rec {
pname = "gerrit";
version = "3.10.2";
version = "3.10.3";
src = fetchurl {
url = "https://gerrit-releases.storage.googleapis.com/gerrit-${version}.war";
hash = "sha256-jsyL7j4ENzHVi07Uii0ouWXF3hkoGrq3NJi8fB1kj8o=";
hash = "sha256-pVI5YZihvJNuaboh2dLe/Aw371rNPiGbaLUd0ALpANQ=";
};
buildCommand = ''
@@ -40,7 +45,10 @@ stdenv.mkDerivation rec {
license = licenses.asl20;
description = "Web based code review and repository management for the git version control system";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
maintainers = with maintainers; [ flokli zimbatm ];
maintainers = with maintainers; [
flokli
zimbatm
];
platforms = platforms.unix;
};
}
+3 -3
View File
@@ -8,16 +8,16 @@
buildGo123Module rec {
pname = "glab";
version = "1.49.0";
version = "1.50.0";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "cli";
rev = "v${version}";
hash = "sha256-G9z9lISalj3ZXlvDY+qA+0NB6F7flBd1cTcGfxrM91U=";
hash = "sha256-WQO+9Fmlzj21UPJ9cdFc6JC8mbkzOWxz077JR+11BXA=";
};
vendorHash = "sha256-SsWZO77KqDPzyEK57WaK4NpnDWUtZPP0qur2EvEoiL0=";
vendorHash = "sha256-nwHY0221nacHk4M+RKA8BEJLCoJJdIKwP0ZPjhYxc7Q=";
ldflags = [
"-s"
+2 -10
View File
@@ -1,7 +1,6 @@
{ lib
, stdenv
, fetchFromGitLab
, fetchpatch
, meson
, ninja
, pkg-config
@@ -18,21 +17,14 @@
stdenv.mkDerivation rec {
pname = "goodvibes";
version = "0.8.0";
version = "0.8.1";
src = fetchFromGitLab {
owner = pname;
repo = pname;
rev = "v${version}";
hash = "sha256-KflLEc6BFA3pBY9HukEm5NluGi2igFNP6joOMdmZ0Ds=";
hash = "sha256-zqJbtCqdwKXy13WWoAwSRYVhAOJsHqOF0DriSDEigbI=";
};
patches = [
# Fixes a compilation error
(fetchpatch {
url = "https://gitlab.com/goodvibes/goodvibes/-/commit/e332f831b91ee068a1a58846d7607b30ab010116.patch";
hash = "sha256-PzbTltbD0xWJAytCGg1TAwBLrICP+9QZbCbG1QQ8Qmw=";
})
];
nativeBuildInputs = [
meson
+3 -3
View File
@@ -2,16 +2,16 @@
buildGoModule rec {
pname = "grpcui";
version = "1.4.1";
version = "1.4.2";
src = fetchFromGitHub {
owner = "fullstorydev";
repo = pname;
rev = "v${version}";
sha256 = "sha256-OIwfLuWY7Y0t85v+P/0F55vEe0hNohlqMl16Omr8AF0=";
sha256 = "sha256-yk9SgQMUga7htP7XTKFk2JGzixxBV3y3PrnkzsiAMbw=";
};
vendorHash = "sha256-dEek7q8OjFgCn+f/qyiQL/5qu8RJp38vZk3OrBREHx4=";
vendorHash = "sha256-uP5jtFji2E6GqpzjD7X5p59TXu7KQVBgEX+Gh0BIclM=";
doCheck = false;
+10 -9
View File
@@ -1,12 +1,13 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchYarnDeps
, nodejs
, fixup-yarn-lock
, yarn
, nixosTests
, git
{
lib,
stdenv,
fetchFromGitHub,
fetchYarnDeps,
nodejs,
fixup-yarn-lock,
yarn,
nixosTests,
git,
}:
stdenv.mkDerivation rec {
+2 -2
View File
@@ -23,7 +23,7 @@
python3.pkgs.buildPythonApplication rec {
pname = "komikku";
version = "1.63.0";
version = "1.64.0";
format = "other";
@@ -32,7 +32,7 @@ python3.pkgs.buildPythonApplication rec {
owner = "valos";
repo = "Komikku";
rev = "v${version}";
hash = "sha256-+p5iTB98jpCqodvSEZ9Y8SM9W3M57Lpoh9jAzN3OmRs=";
hash = "sha256-EpKLez5gTHCSJYGvDqmzj6YO1dIugZKrEP4zE2G5TxA=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -2,16 +2,16 @@
buildGoModule rec {
pname = "kube-bench";
version = "0.9.0";
version = "0.9.2";
src = fetchFromGitHub {
owner = "aquasecurity";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-x6xCrxePB/TR7BP1kLiVFjv4pLUJu9JVh5/Y0ebOjvY=";
hash = "sha256-wRY40yNXTcixCUYWFMQsfkI7MPE4RuxCEHBoedDpW9Y=";
};
vendorHash = "sha256-d6GhZBHDSRgMVeglw8rhq5QF7gRH4hQOzTn0DZjvhiA=";
vendorHash = "sha256-bTpE8zJ6dCMimTowexehxnWPq3tXd0H9ZduJvCVqAlI=";
nativeBuildInputs = [ installShellFiles ];
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "kubecfg";
version = "0.35.0";
version = "0.35.1";
src = fetchFromGitHub {
owner = "kubecfg";
repo = "kubecfg";
rev = "v${version}";
hash = "sha256-/xfZcykOGYOnCkKQDUJ9k4xh+bwrDmy2iSNFPVLkjew=";
hash = "sha256-5xs9iE6sfFzoTq24DTNKOj4D+A5ezBKN1lfIdJCt+pk=";
};
vendorHash = "sha256-K2IyljE5QS/SZ6EXV42q/a5ru+0UXZ69oLNi94XKxw4=";
+1 -1
View File
@@ -66,7 +66,7 @@ rustPlatform.buildRustPackage rec {
'';
meta = {
description = "Linux AMDGPU Controller";
description = "Linux GPU Configuration Tool for AMD and NVIDIA";
homepage = "https://github.com/ilya-zlobintsev/LACT";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ figsoda atemu ];
+3 -3
View File
@@ -11,20 +11,20 @@
}:
stdenv.mkDerivation rec {
pname = "legcord";
version = "1.0.4";
version = "1.0.5";
src = fetchFromGitHub {
owner = "Legcord";
repo = "Legcord";
rev = "v${version}";
hash = "sha256-1nM0v8cjLcctvRcGHGtbyGxaqonIY8wM9s413NxTo+I=";
hash = "sha256-9CicqDZDetxElD36OLizyVNxkqz3rQOjAtUNTGWVwss=";
};
nativeBuildInputs = [ pnpm.configHook nodejs makeWrapper copyDesktopItems ];
pnpmDeps = pnpm.fetchDeps {
inherit pname version src;
hash = "sha256-E1kT3WiCYkLwrfHa11P1Z6e0fVnZSpXEQStr1NPjEJU=";
hash = "sha256-5GE/I2xLmu2Wu9mjzZMk1YZvtS5PgpwgXnxuY+4nimQ=";
};
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
+1 -4
View File
@@ -11,7 +11,6 @@
, pipewire
, virglrenderer
, libkrunfw
, llvmPackages
, rustc
, withGpu ? false
, withSound ? false
@@ -38,8 +37,8 @@ stdenv.mkDerivation (finalAttrs: {
};
nativeBuildInputs = [
llvmPackages.clang
rustPlatform.cargoSetupHook
rustPlatform.bindgenHook
cargo
rustc
] ++ lib.optional (sevVariant || withGpu) pkg-config;
@@ -52,8 +51,6 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional withSound pipewire
++ lib.optional sevVariant openssl;
env.LIBCLANG_PATH = "${lib.getLib llvmPackages.clang-unwrapped}/lib/libclang.so";
makeFlags = [
"PREFIX=${placeholder "out"}"
] ++ lib.optional withGpu "GPU=1"
+50
View File
@@ -0,0 +1,50 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
installShellFiles,
}:
rustPlatform.buildRustPackage rec {
pname = "lockbook";
version = "0.9.15";
src = fetchFromGitHub {
owner = "lockbook";
repo = "lockbook";
rev = "refs/tags/${version}";
hash = "sha256-hqBjA/6MWlhVjV4m+cIcnoRTApHuzbPzivMsaQHfRcc=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-+M+wL26KDbLKhcujPyWAsTlXwLrQVCUbTnnu/7sXul4=";
doCheck = false; # there are no cli tests
cargoBuildFlags = [
"--package"
"lockbook-cli"
];
nativeBuildInputs = [ installShellFiles ];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --bash --name lockbook.bash <($out/bin/lockbook completions bash)
installShellCompletion --zsh --name _lockbook <($out/bin/lockbook completions zsh)
installShellCompletion --fish --name lockbook.fish <($out/bin/lockbook completions fish)
'';
meta = {
description = "Private, polished note-taking platform";
longDescription = ''
Write notes, sketch ideas, and store files in one secure place.
Share seamlessly, keep data synced, and access it on any
platformeven offline. Lockbook encrypts files so even we
cant see them, but dont take our word for it:
Lockbook is 100% open-source.
'';
homepage = "https://lockbook.net";
license = lib.licenses.unlicense;
platforms = lib.platforms.all;
changelog = "https://github.com/lockbook/lockbook/releases";
maintainers = [ lib.maintainers.parth ];
};
}
+6 -1
View File
@@ -53,7 +53,12 @@ stdenv.mkDerivation rec {
postInstall = ''
# `mount` hook requires access to the `mount` command from `util-linux` and `readlink` from `coreutils`:
wrapProgram "$out/share/lxcfs/lxc.mount.hook" --prefix PATH : ${lib.makeBinPath [ coreutils util-linux ]}
wrapProgram "$out/share/lxcfs/lxc.mount.hook" --prefix PATH : ${
lib.makeBinPath [
coreutils
util-linux
]
}
'';
postFixup = ''
@@ -1,14 +1,15 @@
{ stdenv
, lib
, fetchurl
, dpkg
, openjdk11
, jnr-posix
, makeWrapper
, openjfx17
, zip
, nixosTests
, bash
{
stdenv,
lib,
fetchurl,
dpkg,
openjdk11,
jnr-posix,
makeWrapper,
openjfx17,
zip,
nixosTests,
bash,
}:
stdenv.mkDerivation rec {
pname = "microsoft-identity-broker";
@@ -16,10 +17,15 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://packages.microsoft.com/ubuntu/22.04/prod/pool/main/m/microsoft-identity-broker/microsoft-identity-broker_${version}_amd64.deb";
hash = "sha256-I4Q6ucT6ps8/QGiQTNbMXcKxq6UMcuwJ0Prcqvov56M=";
hash = "sha256-v/FxtdvRaUHYqvFSkJIZyicIdcyxQ8lPpY5rb9smnqA=";
};
nativeBuildInputs = [ dpkg makeWrapper openjdk11 zip ];
nativeBuildInputs = [
dpkg
makeWrapper
openjdk11
zip
];
buildPhase = ''
runHook preBuild
@@ -93,11 +99,11 @@ stdenv.mkDerivation rec {
tests = { inherit (nixosTests) intune; };
};
meta = with lib; {
meta = {
description = "Microsoft Authentication Broker for Linux";
homepage = "https://www.microsoft.com/";
license = licenses.unfree;
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = lib.licenses.unfree;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [ rhysmdnz ];
};
+2 -2
View File
@@ -10,13 +10,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "mlx42";
version = "2.4.0";
version = "2.4.1";
src = fetchFromGitHub {
owner = "codam-coding-college";
repo = "MLX42";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-jYcBvvx0Xfc/wDWSUROfQeRvn+tWvSS0ymKO1iuzg8w=";
hash = "sha256-/HCP6F7N+J97n4orlLxg/4agEoq4+rJdpeW/3q+DI1I=";
};
postPatch =
+33
View File
@@ -0,0 +1,33 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "morf";
version = "1.0.0";
src = fetchFromGitHub {
owner = "amrudesh1";
repo = "morf";
rev = "refs/tags/v${version}";
hash = "sha256-3PJ+YtKSH6HHAXBSHO8iMP2HFiuW1RQ0N8iUjQD7NBw=";
};
vendorHash = "sha256-tK58UGCI7CuJsFSM7htRQT98tzunAOXyYAxhCkdTJdU=";
ldflags = [
"-s"
"-w"
];
meta = {
description = "Offensive mobile security tool designed to identify and address sensitive information";
homepage = "https://github.com/amrudesh1/morf";
changelog = "https://github.com/amrudesh1/morf/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "morf";
};
}
+2 -2
View File
@@ -6,14 +6,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "mqtt-randompub";
version = "0.2.2";
version = "0.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "fabaff";
repo = "mqtt-randompub";
rev = "refs/tags/${version}";
hash = "sha256-vAFEVlw9reRP+4Qwywv+cP27SU1c3seL3Z+b/YfUdl8=";
hash = "sha256-X9gITmzyUNtYW8IMTcBiubPscBEO5OGjdxot9wRD/BY=";
};
build-system = with python3.pkgs; [ setuptools ];
@@ -1,32 +1,35 @@
{ stdenv
, lib
, fetchurl
, dpkg
, alsa-lib
, atk
, cairo
, cups
, dbus
, expat
, fontconfig
, freetype
, gdk-pixbuf
, glib
, pango
, nspr
, nss
, gtk3
, mesa
, libGL
, wayland
, xorg
, autoPatchelfHook
, systemd
, libnotify
, libappindicator
, makeWrapper
, coreutils
, gnugrep
{
stdenv,
lib,
fetchurl,
dpkg,
alsa-lib,
atk,
cairo,
cups,
dbus,
expat,
fontconfig,
freetype,
gdk-pixbuf,
glib,
pango,
nspr,
nss,
gtk3,
mesa,
libGL,
wayland,
xorg,
autoPatchelfHook,
systemd,
libnotify,
libappindicator,
makeWrapper,
coreutils,
gnugrep,
versionCheckHook,
}:
let
@@ -64,9 +67,11 @@ let
systemd
];
version = "2024.6";
version = "2024.7";
selectSystem = attrs: attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
selectSystem =
attrs:
attrs.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
platform = selectSystem {
x86_64-linux = "amd64";
@@ -74,8 +79,8 @@ let
};
hash = selectSystem {
x86_64-linux = "sha256-paP9W23AbA9O4MiTdF5r7N50GgT4xu2vb9ktfBdPqDM=";
aarch64-linux = "sha256-5FRPjiLyWDe7RNlhkiF4NUaCxVkfXZbxeoQxNAAls/I=";
x86_64-linux = "sha256-l6uWrOzMzn8bF5iZzfa/xffLIvAPsCaLwzcRPRW3t0o=";
aarch64-linux = "sha256-/RLTjhkiH9WdYO56njnxQyJ0nSaAq/awrkm0NhctFZY=";
};
in
@@ -99,7 +104,13 @@ stdenv.mkDerivation {
dontBuild = true;
dontConfigure = true;
runtimeDependencies = [ (lib.getLib systemd) libGL libnotify libappindicator wayland ];
runtimeDependencies = [
(lib.getLib systemd)
libGL
libnotify
libappindicator
wayland
];
installPhase = ''
runHook preInstall
@@ -115,7 +126,12 @@ stdenv.mkDerivation {
wrapProgram $out/bin/mullvad-vpn \
--set MULLVAD_DISABLE_UPDATE_NOTIFICATION 1 \
--prefix PATH : ${lib.makeBinPath [ coreutils gnugrep ]}
--prefix PATH : ${
lib.makeBinPath [
coreutils
gnugrep
]
}
wrapProgram $out/bin/mullvad-daemon \
--set-default MULLVAD_RESOURCE_DIR "$out/share/mullvad/resources"
@@ -128,16 +144,26 @@ stdenv.mkDerivation {
runHook postInstall
'';
nativeInstallCheckInputs = [
versionCheckHook
];
versionCheckProgramArg = [ "--version" ];
doInstallCheck = true;
passthru.updateScript = ./update.sh;
meta = with lib; {
meta = {
homepage = "https://github.com/mullvad/mullvadvpn-app";
description = "Client for Mullvad VPN";
changelog = "https://github.com/mullvad/mullvadvpn-app/blob/${version}/CHANGELOG.md";
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
license = licenses.gpl3Only;
platforms = [ "x86_64-linux" "aarch64-linux" ];
maintainers = with maintainers; [ Br1ght0ne ymarkus ataraxiasjel ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.gpl3Only;
platforms = lib.platforms.unix;
badPlatforms = [ lib.systems.inspect.patterns.isDarwin ];
maintainers = with lib.maintainers; [
Br1ght0ne
ymarkus
ataraxiasjel
];
};
}
+2 -2
View File
@@ -1,14 +1,14 @@
{ lib, stdenv, fetchFromGitHub, autoreconfHook, libtool }:
stdenv.mkDerivation rec {
version="1.40";
version="1.41";
pname = "mxt-app";
src = fetchFromGitHub {
owner = "atmel-maxtouch";
repo = "mxt-app";
rev = "v${version}";
sha256 = "sha256-ZquD1aZu/TJQdr7QwKHTbCwSCFxt4drVBm4D1FLlzF0=";
sha256 = "sha256-Sn83k04ctwyVH90wnPIFuH91epPgLt1mWY+07r5eKpk=";
};
nativeBuildInputs = [ autoreconfHook ];
+2 -2
View File
@@ -15,13 +15,13 @@
stdenv.mkDerivation rec {
pname = "nchat";
version = "5.2.11";
version = "5.3.5";
src = fetchFromGitHub {
owner = "d99kris";
repo = "nchat";
rev = "refs/tags/v${version}";
hash = "sha256-LcTVftLKlzHstSaJjdtqoEmQ7kiqft9dbXRXoYjbaus=";
hash = "sha256-Nnu2Bk11Crk2vhvQqlDFo42duDqkNRCwDq4xCKIXwLQ=";
};
postPatch = ''
+1 -6
View File
@@ -6,7 +6,6 @@
, alsa-lib
, wayland
, makeWrapper
, llvmPackages
, libxkbcommon
, vulkan-loader
, xorg
@@ -33,8 +32,8 @@ rustPlatform.buildRustPackage {
nativeBuildInputs = [
pkg-config
llvmPackages.clang
makeWrapper
rustPlatform.bindgenHook
];
cargoLock = {
@@ -54,10 +53,6 @@ rustPlatform.buildRustPackage {
install -Dm 644 flatpak/com.github.polymeilex.neothesia.png $out/share/icons/hicolor/256x256/apps/com.github.polymeilex.neothesia.png
'';
env = {
LIBCLANG_PATH = "${lib.getLib llvmPackages.libclang}/lib";
};
meta = {
description = "Flashy Synthesia Like Software For Linux, Windows and macOS";
homepage = "https://github.com/PolyMeilex/Neothesia";
@@ -238,7 +238,6 @@ def execute(argv: list[str]) -> None:
path_to_config = nix.nixos_build_flake(
"toplevel",
flake,
keep_going=True,
dry_run=dry_run,
**flake_build_flags,
)
@@ -247,7 +246,6 @@ def execute(argv: list[str]) -> None:
"system",
args.attr,
args.file,
keep_going=True,
dry_run=dry_run,
**build_flags,
)
@@ -266,7 +264,6 @@ def execute(argv: list[str]) -> None:
path_to_config = nix.nixos_build_flake(
attr,
flake,
keep_going=True,
**flake_build_flags,
)
else:
@@ -274,7 +271,6 @@ def execute(argv: list[str]) -> None:
attr,
args.attr,
args.file,
keep_going=True,
**build_flags,
)
vm_path = next(path_to_config.glob("bin/run-*-vm"), "./result/bin/run-*-vm")
+9 -8
View File
@@ -4,28 +4,29 @@
fetchFromGitHub,
rustPlatform,
apple-sdk_11,
llvmPackages,
nix-update-script,
...
}:
rustPlatform.buildRustPackage {
pname = "nufmt";
version = "0-unstable-2024-10-20";
version = "0-unstable-2024-11-21";
src = fetchFromGitHub {
owner = "nushell";
repo = "nufmt";
rev = "decc88ef8e11a14081c2dd86c6ea0c94d6d2861d";
hash = "sha256-AurQGIZDYOkMMyAEXP01QziISQcSME3GFtvqjCDoeiw=";
rev = "628a3b73ea637c96f2c191ae066cf1cecadeafa3";
hash = "sha256-ideILLOawU6BNawmr4lqt2LGkf29wvlwQe9gqgdYRiI=";
};
nativeBuildInputs = [
rustPlatform.bindgenHook
];
buildInputs = lib.optionals stdenv.hostPlatform.isDarwin [
apple-sdk_11
];
env.LIBCLANG_PATH = lib.optionalString stdenv.cc.isClang "${lib.getLib llvmPackages.libclang}/lib";
cargoHash = "sha256-5DS6pTYGOQ4qay6+YiUstInRX17n3RViNxKXtFZ6J3k=";
cargoHash = "sha256-MHZlXmHAYIiaB6Isutqjrh45jppRzTZRSE3VqzpFBBA=";
passthru.updateScript = nix-update-script { extraArgs = [ "--version=branch" ]; };
File diff suppressed because it is too large Load Diff
@@ -1,44 +1,51 @@
{ lib
, buildDotnetModule
, fetchFromGitHub
, gtk3
, libX11
, libXrandr
, libappindicator
, libevdev
, libnotify
, udev
, copyDesktopItems
, makeDesktopItem
, nixosTests
, wrapGAppsHook3
, jq
, coreutils
, dotnetCorePackages
{
lib,
buildDotnetModule,
copyDesktopItems,
coreutils,
dotnetCorePackages,
fetchFromGitHub,
gtk3,
jq,
libappindicator,
libevdev,
libnotify,
libX11,
libXrandr,
makeDesktopItem,
nixosTests,
udev,
wrapGAppsHook3,
}:
buildDotnetModule rec {
pname = "OpenTabletDriver";
version = "0.6.4.0";
version = "0.6.4.0-unstable-2024-11-25";
src = fetchFromGitHub {
owner = "OpenTabletDriver";
repo = "OpenTabletDriver";
rev = "v${version}";
hash = "sha256-zK+feU96JOXjmkTndM9VyUid3z+MZFxJGH+MXaB6kzk=";
rev = "8b88b8bdc5144391f10eb61ee77803ba0ee83718"; # 0.6.x branch
hash = "sha256-5JKkSqV9owkHgWXfjiyv5QRh86apDCPzpA6qha1i4D4=";
};
patches = [
./remove-git-from-generate-rules.patch
dotnetInstallFlags = [ "--framework=net8.0" ];
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
projectFile = [
"OpenTabletDriver.Console"
"OpenTabletDriver.Daemon"
"OpenTabletDriver.UX.Gtk"
];
dotnetInstallFlags = [ "--framework=net6.0" ];
dotnet-sdk = dotnetCorePackages.sdk_6_0;
projectFile = [ "OpenTabletDriver.Console" "OpenTabletDriver.Daemon" "OpenTabletDriver.UX.Gtk" ];
nugetDeps = ./deps.nix;
executables = [ "OpenTabletDriver.Console" "OpenTabletDriver.Daemon" "OpenTabletDriver.UX.Gtk" ];
executables = [
"OpenTabletDriver.Console"
"OpenTabletDriver.Daemon"
"OpenTabletDriver.UX.Gtk"
];
nativeBuildInputs = [
copyDesktopItems
@@ -49,11 +56,11 @@ buildDotnetModule rec {
runtimeDeps = [
gtk3
libX11
libXrandr
libappindicator
libevdev
libnotify
libX11
libXrandr
udev
];
@@ -84,6 +91,8 @@ buildDotnetModule rec {
preBuild = ''
patchShebangs generate-rules.sh
substituteInPlace generate-rules.sh \
--replace-fail '/usr/bin/env rm' '${lib.getExe' coreutils "rm"}'
'';
postFixup = ''
@@ -94,10 +103,10 @@ buildDotnetModule rec {
install -Dm644 $src/OpenTabletDriver.UX/Assets/otd.png -t $out/share/pixmaps
# Generate udev rules from source
export OTD_CONFIGURATIONS="$src/OpenTabletDriver.Configurations/Configurations"
mkdir -p $out/lib/udev/rules.d
./generate-rules.sh \
| sed 's@/usr/bin/env rm@${lib.getExe' coreutils "rm"}@' \
> $out/lib/udev/rules.d/70-opentabletdriver.rules
./generate-rules.sh > $out/lib/udev/rules.d/70-opentabletdriver.rules
'';
desktopItems = [
@@ -106,7 +115,7 @@ buildDotnetModule rec {
name = "OpenTabletDriver";
exec = "otd-gui";
icon = "otd";
comment = meta.description;
comment = "Open source, cross-platform, user-mode tablet driver";
categories = [ "Utility" ];
})
];
@@ -118,12 +127,18 @@ buildDotnetModule rec {
};
};
meta = with lib; {
meta = {
description = "Open source, cross-platform, user-mode tablet driver";
homepage = "https://github.com/OpenTabletDriver/OpenTabletDriver";
license = licenses.lgpl3Plus;
maintainers = with maintainers; [ gepbird thiagokokada ];
platforms = [ "x86_64-linux" "aarch64-linux" ];
license = lib.licenses.lgpl3Plus;
maintainers = with lib.maintainers; [
gepbird
thiagokokada
];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
mainProgram = "otd";
};
}
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env nix-shell
#!nix-shell -I nixpkgs=./. -i bash -p curl gnused jq common-updater-scripts nixfmt-rfc-style
set -eo pipefail
verlte() {
printf '%s\n' "$1" "$2" | sort -C -V
}
new_version="$(curl ${GITHUB_TOKEN:+" -u \":$GITHUB_TOKEN\""} -s "https://api.github.com/repos/OpenTabletDriver/OpenTabletDriver/releases" |
jq -r 'map(select(.prerelease == false)) | .[0].tag_name' |
cut -c2-)"
old_version="$(nix --extra-experimental-features 'nix-command' eval --file default.nix opentabletdriver.version --raw)"
if verlte "$new_version" "$old_version"; then
echo "Already up to date!"
[[ "${1}" != "--force" ]] && exit 0
fi
update-source-version opentabletdriver "$new_version"
eval "$(nix-build -A opentabletdriver.fetch-deps --no-out-link)"
cd "$(dirname "${BASH_SOURCE[0]}")"
nixfmt deps.nix
+3 -3
View File
@@ -10,16 +10,16 @@
rustPlatform.buildRustPackage rec {
pname = "ox";
version = "0.7.1";
version = "0.7.2";
src = fetchFromGitHub {
owner = "curlpipe";
repo = pname;
rev = version;
hash = "sha256-7rP/h3MlrMZl9yd655uRrnv1aUB57LzdyKs66wHp33Y=";
hash = "sha256-yAToibHhvHAry7WVZ5uD84CbUTp06RyZ9J12/2deM1I=";
};
cargoHash = "sha256-z9pyMnYQZfCCVdVEakj3q27SFLahMDWRuAopYye6RIY=";
cargoHash = "sha256-YAy5vCxcHUL0wM9+Y3GDqV/V1utL3V05heT92/zQ/X8=";
passthru = {
tests.version = testers.testVersion {
+47
View File
@@ -0,0 +1,47 @@
{
buildGoModule,
fetchFromGitHub,
lib,
stdenv,
}:
buildGoModule rec {
pname = "parca-agent";
version = "0.35.0";
src = fetchFromGitHub {
owner = "parca-dev";
repo = "parca-agent";
rev = "refs/tags/v${version}";
hash = "sha256-5MoHX47uUtQgszNuu9ImLJPYnaN2NKZKOPa60PMHDL0=";
fetchSubmodules = true;
};
proxyVendor = true;
vendorHash = "sha256-v2OnCuOI9inZ4WiU/3PbBwK6ZcvZX21MNsLhRWZ6sGY=";
buildInputs = [
stdenv.cc.libc.static
];
ldflags = [
"-X=main.version=${version}"
"-X=main.commit=${src.rev}"
"-extldflags=-static"
];
tags = [
"osusergo"
"netgo"
];
meta = {
description = "eBPF based, always-on profiling agent";
homepage = "https://github.com/parca-dev/parca-agent";
changelog = "https://github.com/parca-dev/parca-agent/releases/tag/v${version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jnsgruk ];
platforms = lib.platforms.linux;
mainProgram = "parca-agent";
};
}
@@ -0,0 +1,34 @@
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "parca-debuginfo";
version = "0.11.0";
src = fetchFromGitHub {
owner = "parca-dev";
repo = "parca-debuginfo";
rev = "refs/tags/v${version}";
hash = "sha256-gL1BgDtEf2Q7yxzpoiTJY+nsRlsWv3zYzLVvaVijMDM=";
};
vendorHash = "sha256-xtKkKhKQmZcCIFTOH+oM5a2cPlAWlJPRNQWfrAl2948=";
ldflags = [
"-X=main.version=${version}"
"-X=main.commit=${src.rev}"
];
meta = {
description = "Command line utility for handling debuginfos";
changelog = "https://github.com/parca-dev/parca-debuginfo/releases/tag/v${version}";
homepage = "https://github.com/parca-dev/parca-debuginfo";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ jnsgruk ];
platforms = lib.platforms.unix;
mainProgram = "parca-debuginfo";
};
}
+27 -10
View File
@@ -1,30 +1,47 @@
{ lib, stdenv, fetchurl, ncurses, postgresql }:
{
cmake,
fetchurl,
lib,
libbsd,
libelf,
ncurses,
postgresql,
stdenv,
}:
stdenv.mkDerivation rec {
pname = "pg_top";
version = "3.7.0";
version = "4.1.0";
src = fetchurl {
url = "https://pgfoundry.org/frs/download.php/1781/pg_top-${version}.tar.gz";
sha256 = "17xrv0l58rv3an06gkajzw0gg6v810xx6vl137an1iykmhvfh7h2";
url = "https://pg_top.gitlab.io/source/pg_top-${version}.tar.xz";
sha256 = "sha256-WdSiQURJgtBCYoS/maImppcyM8wzUIJzLWmiSZPlx1Q=";
};
buildInputs = [ ncurses postgresql ];
buildInputs = [
libbsd
libelf
ncurses
postgresql
];
nativeBuildInputs = [ cmake ];
meta = with lib; {
description = "'top' like tool for PostgreSQL";
longDescription = ''
pg_top allows you to:
* View currently running SQL statement of a process.
* View query plan of a currently running SQL statement.
* View query plan of a currently running SELECT statement.
* View locks held by a process.
* View user table statistics.
* View user index statistics.
* View I/O statistics per process.
* View replication statistics for downstream nodes.
'';
homepage = "http://ptop.projects.postgresql.org/";
homepage = "https://pg_top.gitlab.io";
changelog = "https://gitlab.com/pg_top/pg_top/-/blob/main/HISTORY.rst";
platforms = platforms.linux;
license = licenses.free; # see commands.c
license = licenses.bsd3;
mainProgram = "pg_top";
};
}
+2 -2
View File
@@ -20,7 +20,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "pragtical";
version = "3.5.0";
version = "3.5.1";
pluginManagerVersion = "1.2.9";
src = fetchFromGitHub {
@@ -44,7 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
find subprojects -type d -name .git -prune -execdir rm -r {} +
'';
hash = "sha256-a9LnLKtJ33YHtlnhWmKBeW5dOjjwa7PmaZjYh0+Nx9g=";
hash = "sha256-o19akSgsWLRTyHT+dvmTeTS4HtNfzEyNXBhVot92OD4=";
};
nativeBuildInputs = [
+4 -4
View File
@@ -8,13 +8,13 @@ let
x86_64-darwin = "x64";
}."${stdenv.hostPlatform.system}" or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
hash = {
x64-linux_hash = "sha256-VI0mdNGPyT45GUrp3hpBQVe1xx/BBbMWz7iJQvvrg9E=";
arm64-linux_hash = "sha256-4ahiRo13qOEUSzrwXFVRj26U0l5GblXfw7sjY8sCLxQ=";
x64-osx_hash = "sha256-1HtarF+eAU2d3dQiw3n/DCIFCbgN4GEUFMlYxy8uglA=";
x64-linux_hash = "sha256-48ZlBTr/lO1AAsYInu48fDB77RXH+b2hXjDPwWdeZW4=";
arm64-linux_hash = "sha256-vyNoI1ffqWyYCfH+3rRNtaECkku3pF3pD+2RBchD+6o=";
x64-osx_hash = "sha256-VeGq+kVuBLGqERcWyvPfcygAG0/262J9/RPr49X4jtE=";
}."${arch}-${os}_hash";
in stdenv.mkDerivation rec {
pname = "readarr";
version = "0.4.3.2665";
version = "0.4.4.2686";
src = fetchurl {
url = "https://github.com/Readarr/Readarr/releases/download/v${version}/Readarr.develop.${version}.${os}-core-${arch}.tar.gz";
+2 -2
View File
@@ -21,13 +21,13 @@ assert !with_boost_asio -> asio != null;
stdenv.mkDerivation (finalAttrs: {
pname = "restinio";
version = "0.7.2";
version = "0.7.3";
src = fetchFromGitHub {
owner = "Stiffstream";
repo = "restinio";
rev = "v.${finalAttrs.version}";
hash = "sha256-Nv/VVdHciCv+DsVu3MqfXeAa8Ef+qi6c1OaTAVrYUg0=";
hash = "sha256-heVdo0MtsWi/r9yse+/FZ55lhiunyEdwB3UkOOY5Vj0=";
};
strictDeps = true;
+2 -2
View File
@@ -8,13 +8,13 @@
stdenvNoCC.mkDerivation rec {
pname = "rfc";
version = "1.0.0";
version = "1.0.1";
src = fetchFromGitHub {
owner = "bfontaine";
repo = "rfc";
rev = "v${version}";
hash = "sha256-zN+MQtHh69PkzbrfceHFpBYCPmTg9qrOf/ML2efq6Xk=";
hash = "sha256-bCqgLkbZGQFcxhLwekVw+rUGinXTc7QJHlVRGtNf6Jc=";
};
nativeBuildInputs = [ installShellFiles makeWrapper ];
+3 -4
View File
@@ -15,19 +15,19 @@
stdenv.mkDerivation (finalAttrs: {
pname = "rustls-ffi";
version = "0.13.0";
version = "0.14.1";
src = fetchFromGitHub {
owner = "rustls";
repo = "rustls-ffi";
rev = "v${finalAttrs.version}";
hash = "sha256-Bc9bVZ2pDsG118l/SlElZpgh9F1JEgPF8LzBX7d4mhE=";
hash = "sha256-ZKAyKcKwhnPE6PrfBFjLJKkTlGbdLcmW1EP/xSv2cpM=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
src = finalAttrs.src;
name = "${finalAttrs.pname}-${finalAttrs.version}";
hash = "sha256-gDQ9AFrJuV7SrzKCAHQBkKj6clXuPLO0DHhnvcBqRLs=";
hash = "sha256-IaOhQfDEgLhGmes0xzhLVym29aP691TY0EXdOIgXEMA=";
};
propagatedBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ libiconv darwin.apple_sdk.frameworks.Security ];
@@ -54,7 +54,6 @@ stdenv.mkDerivation (finalAttrs: {
passthru.tests = {
curl = curl.override { opensslSupport = false; rustlsSupport = true; rustls-ffi = finalAttrs.finalPackage; };
apacheHttpd = apacheHttpd.override { modTlsSupport = true; rustls-ffi = finalAttrs.finalPackage; };
pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage;
};
+1 -2
View File
@@ -110,6 +110,7 @@ rustPlatform.buildRustPackage {
perl
pkg-config
python3
rustPlatform.bindgenHook
taplo
which
yasm
@@ -142,8 +143,6 @@ rustPlatform.buildRustPackage {
--prefix LD_LIBRARY_PATH : ${runtimePaths}
'';
LIBCLANG_PATH = "${lib.getLib llvmPackages.libclang}/lib";
meta = {
description = "The embeddable, independent, memory-safe, modular, parallel web rendering engine";
homepage = "https://servo.org";
+3 -3
View File
@@ -2,14 +2,14 @@
rustPlatform.buildRustPackage rec {
pname = "svd2rust";
version = "0.33.5";
version = "0.35.0";
src = fetchCrate {
inherit pname version;
hash = "sha256-wZfCk8jzTmltpmrp7QWU1uS5ct10iltNFdUCJvnrv98=";
hash = "sha256-KLwIwJtPBQ8Sa94/IEJhIGTx/n3oYQKINmNV5L5TJV0=";
};
cargoHash = "sha256-5m3/5zwjDeDgPuUsTIknXwEMjQs0gtVoksQn4EdPnwM=";
cargoHash = "sha256-4a89Do57KFKu/RDTB4BxUxVlO46HL5aEhhHmnzLuZGo=";
# error: linker `aarch64-linux-gnu-gcc` not found
postPatch = ''
+3 -3
View File
@@ -9,16 +9,16 @@
buildGoModule rec {
pname = "tbls";
version = "1.78.0";
version = "1.79.4";
src = fetchFromGitHub {
owner = "k1LoW";
repo = "tbls";
rev = "v${version}";
hash = "sha256-vqt4IlVvqlUjDqvcdiRctt/VuEkZ5YzCXYHvHfc87Ew=";
hash = "sha256-o/ZhXoenK3xlflRMXS9NtnW23VBiDmDPSGlHtE3cNiM=";
};
vendorHash = "sha256-cnACY+NIjsVe6BU7AjTO+yLDn0f1HO1gHnw5SgqKuy4=";
vendorHash = "sha256-SkddF8ZxvGRQ+/tWnmlcoaTs3MRfVgQWX4MZ05nZ9XA=";
nativeBuildInputs = [ installShellFiles ];
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "terraform-backend-git";
version = "0.1.7";
version = "0.1.8";
src = fetchFromGitHub {
owner = "plumber-cd";
repo = "terraform-backend-git";
rev = "v${version}";
hash = "sha256-mLgUA7f4enlVuQx4VM3QbNuaAq7FgDaRyiG0sbT31ng=";
hash = "sha256-mZbGMv5b9wK/gWqQB75sDJIVURrS6t/L7WBhTonaatQ=";
};
vendorHash = "sha256-vFx59dIdniLRP0xHcD3c22GidZOPdGZvmvg/BvxFBGI=";
+3 -3
View File
@@ -11,16 +11,16 @@
buildGoModule rec {
pname = "updatecli";
version = "0.82.0";
version = "0.88.0";
src = fetchFromGitHub {
owner = "updatecli";
repo = "updatecli";
rev = "v${version}";
hash = "sha256-kNc+Z+v4fvuWO/Ibr9VOekMDT39YEwA/fReP+e3C74U=";
hash = "sha256-qWggdLNF6iWrbcKgdR3Tr19bwK5wS5ffadS3kMFGp5E=";
};
vendorHash = "sha256-fnx0EAGxau0+ktnuUb8ljolNAlwu2595FMjsDbM2MiY=";
vendorHash = "sha256-feBmzBrV6yoepU8CiqKaB/bCWIhuiDNhMTem0y1Lynw=";
# tests require network access
doCheck = false;
+2 -2
View File
@@ -14,13 +14,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "vencord";
version = "1.10.7";
version = "1.10.8";
src = fetchFromGitHub {
owner = "Vendicated";
repo = "Vencord";
rev = "v${finalAttrs.version}";
hash = "sha256-/CZzRIXD0shEok9H+Vx7s9BmzXTI6ly957jvS+nU2fI=";
hash = "sha256-2UOz8o+3jWppk6lWatbG0avcqBFpxHYSMEspCpFWWOk=";
};
pnpmDeps = pnpm.fetchDeps {
+38
View File
@@ -0,0 +1,38 @@
{
lib,
stdenv,
fetchFromGitHub,
libX11,
libXi,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "xautocfg";
version = "1.2";
src = fetchFromGitHub {
owner = "SFTtech";
repo = "xautocfg";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-NxfuBknNRicmEAPBeMaNb57gpM0y0t+JmNMKpSNzlQM=";
};
buildInputs = [
libX11
libXi
];
makeFlags = [
"PREFIX=${placeholder "out"}"
"MANPREFIX=${placeholder "out"}"
];
meta = {
homepage = "https://github.com/SFTtech/xautocfg";
description = "Automatic keyboard repeat rate configuration for new keyboards";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ jceb ];
mainProgram = "xautocfg";
platforms = lib.platforms.linux;
};
})
+50 -42
View File
@@ -1,53 +1,61 @@
{ lib, stdenv, cmake, python3, fetchFromGitHub, emscripten,
gtest, lit, nodejs, filecheck
}:
stdenv.mkDerivation rec {
pname = "binaryen";
version = "118";
src = fetchFromGitHub {
let
testsuite = fetchFromGitHub {
owner = "WebAssembly";
repo = "binaryen";
rev = "version_${version}";
hash = "sha256-akMW3S2/qUyLK8F77EtnaXPDXvIMpkGfNB2jOD6hQho=";
repo = "testsuite";
rev = "e05365077e13a1d86ffe77acfb1a835b7aa78422";
hash = "sha256-yvZ5AZTPUA6nsD3xpFC0VLthiu2CxVto66RTXBXXeJM=";
};
in
stdenv.mkDerivation rec {
pname = "binaryen";
version = "119";
nativeBuildInputs = [ cmake python3 ];
src = fetchFromGitHub {
owner = "WebAssembly";
repo = "binaryen";
rev = "version_${version}";
hash = "sha256-JYXtN3CW4qm/nnjGRvv3GxQ0x9O9wHtNYQLqHIYTTOA=";
};
preConfigure = ''
if [ $doCheck -eq 1 ]; then
sed -i '/googletest/d' third_party/CMakeLists.txt
else
cmakeFlagsArray=($cmakeFlagsArray -DBUILD_TESTS=0)
fi
'';
nativeBuildInputs = [ cmake python3 ];
nativeCheckInputs = [ gtest lit nodejs filecheck ];
checkPhase = ''
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib python3 ../check.py $tests
'';
preConfigure = ''
if [ $doCheck -eq 1 ]; then
sed -i '/googletest/d' third_party/CMakeLists.txt
rmdir test/spec/testsuite
ln -s ${testsuite} test/spec/testsuite
else
cmakeFlagsArray=($cmakeFlagsArray -DBUILD_TESTS=0)
fi
'';
tests = [
"version" "wasm-opt" "wasm-dis"
"crash" "dylink" "ctor-eval"
"wasm-metadce" "wasm-reduce" "spec"
"lld" "wasm2js" "validator"
"example" "unit"
# "binaryenjs" "binaryenjs_wasm" # not building this
"lit" "gtest"
];
doCheck = stdenv.hostPlatform.isLinux;
nativeCheckInputs = [ gtest lit nodejs filecheck ];
checkPhase = ''
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PWD/lib python3 ../check.py $tests
'';
meta = with lib; {
homepage = "https://github.com/WebAssembly/binaryen";
description = "Compiler infrastructure and toolchain library for WebAssembly, in C++";
platforms = platforms.all;
maintainers = with maintainers; [ asppsa willcohen ];
license = licenses.asl20;
};
tests = [
"version" "wasm-opt" "wasm-dis"
"crash" "dylink" "ctor-eval"
"wasm-metadce" "wasm-reduce" "spec"
"lld" "wasm2js" "validator"
"example" "unit"
# "binaryenjs" "binaryenjs_wasm" # not building this
"lit" "gtest"
];
doCheck = stdenv.isLinux;
passthru.tests = {
inherit emscripten;
};
}
meta = with lib; {
homepage = "https://github.com/WebAssembly/binaryen";
description = "Compiler infrastructure and toolchain library for WebAssembly, in C++";
platforms = platforms.all;
maintainers = with maintainers; [ asppsa willcohen ];
license = licenses.asl20;
};
passthru.tests = {
inherit emscripten;
};
}
@@ -8,7 +8,7 @@
stdenv.mkDerivation rec {
pname = "emscripten";
version = "3.1.64";
version = "3.1.73";
llvmEnv = symlinkJoin {
name = "emscripten-llvm-${version}";
@@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
name = "emscripten-node-modules-${version}";
inherit pname version src;
npmDepsHash = "sha256-2dsIuB6P+Z3wflIsn6QaZvjHeHHGzsFAI3GcP3SfiP4=";
npmDepsHash = "sha256-bqxUlxpIH1IAx9RbnaMq4dZW8fy+M/Q02Q7VrW/AKNQ=";
dontBuild = true;
@@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
src = fetchFromGitHub {
owner = "emscripten-core";
repo = "emscripten";
hash = "sha256-AbO1b4pxZ7I6n1dRzxhLC7DnXIUnaCK9SbLy96Qxqr0=";
hash = "sha256-QlC2k2rhF3/Pz+knnrlBDV8AfHHBSlGr7b9Ae6TNsxY=";
rev = version;
};
@@ -51,6 +51,9 @@ stdenv.mkDerivation rec {
patchShebangs .
# emscripten 3.1.67 requires LLVM tip-of-tree instead of LLVM 18
sed -i -e "s/EXPECTED_LLVM_VERSION = 20/EXPECTED_LLVM_VERSION = 19/g" tools/shared.py
# fixes cmake support
sed -i -e "s/print \('emcc (Emscript.*\)/sys.stderr.write(\1); sys.stderr.flush()/g" emcc.py
@@ -169,10 +169,11 @@
patches =
let
# Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux
enableHyperlinkedSource =
lib.versionAtLeast version "9.8" ||
!(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux);
# Disable haddock generating pretty source listings to stay under 3GB on aarch64-linux
!(stdenv.hostPlatform.isAarch64 && stdenv.hostPlatform.isLinux)
# 9.8 and 9.10 don't run into this problem for some reason
|| (lib.versionAtLeast version "9.8" && lib.versionOlder version "9.11");
in
[
# Fix docs build with Sphinx >= 7 https://gitlab.haskell.org/ghc/ghc/-/issues/24129
@@ -207,12 +208,16 @@
then ./Cabal-at-least-3.6-paths-fix-cycle-aarch64-darwin.patch
else ./Cabal-3.12-paths-fix-cycle-aarch64-darwin.patch)
]
# Prevents passing --hyperlinked-source to haddock. This is a custom
# workaround as we wait for this to be configurable via userSettings or
# similar. https://gitlab.haskell.org/ghc/ghc/-/issues/23625
# Prevents passing --hyperlinked-source to haddock. Note that this can
# be configured via a user defined flavour now. Unfortunately, it is
# impossible to import an existing flavour in UserSettings, so patching
# the defaults is actually simpler and less maintenance intensive
# compared to keeping an entire flavour definition in sync with upstream
# manually. See also https://gitlab.haskell.org/ghc/ghc/-/issues/23625
++ lib.optionals (!enableHyperlinkedSource) [
# TODO(@sternenseemann): Doesn't apply for GHC >= 9.8
../../tools/haskell/hadrian/disable-hyperlinked-source.patch
(if lib.versionOlder version "9.8"
then ../../tools/haskell/hadrian/disable-hyperlinked-source-pre-9.8.patch
else ../../tools/haskell/hadrian/disable-hyperlinked-source-extra-args.patch)
]
# Incorrect bounds on Cabal in hadrian
# https://gitlab.haskell.org/ghc/ghc/-/issues/24100
@@ -102,20 +102,33 @@ self: super: {
#######################################
# All jailbreaks in this section due to: https://github.com/haskell/haskell-language-server/pull/4316#discussion_r1667684895
haskell-language-server = doJailbreak (dontCheck (super.haskell-language-server.overrideScope (lself: lsuper: {
# For most ghc versions, we overrideScope Cabal in the configuration-ghc-???.nix,
# because some packages, like ormolu, need a newer Cabal version.
# ghc-paths is special because it depends on Cabal for building
# its Setup.hs, and therefor declares a Cabal dependency, but does
# not actually use it as a build dependency.
# That means ghc-paths can just use the ghc included Cabal version,
# without causing package-db incoherence and we should do that because
# otherwise we have different versions of ghc-paths
# around which have the same abi-hash, which can lead to confusions and conflicts.
ghc-paths = lsuper.ghc-paths.override { Cabal = null; };
})));
haskell-language-server =
lib.pipe
(super.haskell-language-server.overrideScope (lself: lsuper: {
# For most ghc versions, we overrideScope Cabal in the configuration-ghc-???.nix,
# because some packages, like ormolu, need a newer Cabal version.
# ghc-paths is special because it depends on Cabal for building
# its Setup.hs, and therefor declares a Cabal dependency, but does
# not actually use it as a build dependency.
# That means ghc-paths can just use the ghc included Cabal version,
# without causing package-db incoherence and we should do that because
# otherwise we have different versions of ghc-paths
# around which have the same abi-hash, which can lead to confusions and conflicts.
ghc-paths = lsuper.ghc-paths.override { Cabal = null; };
}))
[
doJailbreak
dontCheck
];
hls-plugin-api = doJailbreak super.hls-plugin-api;
ghcide = doJailbreak super.ghcide;
ghcide = doJailbreak (appendPatch (pkgs.fetchpatch {
name = "ghcide-ghc-9.8.3.patch";
url = "https://github.com/haskell/haskell-language-server/commit/6d0a6f220226fe6c1cb5b6533177deb55e755b0b.patch";
sha256 = "1jwxldar9qzkg2z6vsx8f2yih3vkf4yjk9p3mryv0azn929qn3h1";
stripLen = 1;
excludes = [ "cabal.project" ];
}) super.ghcide);
# For -f-auto see cabal.project in haskell-language-server.
ghc-lib-parser-ex = addBuildDepend self.ghc-lib-parser (disableCabalFlag "auto" super.ghc-lib-parser-ex);
@@ -0,0 +1,61 @@
{ pkgs, haskellLib }:
let
inherit (pkgs) lib;
in
self: super: {
llvmPackages = lib.dontRecurseIntoAttrs self.ghc.llvmPackages;
# Disable GHC core libraries
array = null;
base = null;
binary = null;
bytestring = null;
Cabal = null;
Cabal-syntax = null;
containers = null;
deepseq = null;
directory = null;
exceptions = null;
file-io = null;
filepath = null;
ghc-bignum = null;
ghc-boot = null;
ghc-boot-th = null;
ghc-compact = null;
ghc-experimental = null;
ghc-heap = null;
ghc-internal = null;
ghc-platform = null;
ghc-prim = null;
ghc-toolchain = null;
ghci = null;
haddock-api = null;
haddock-library = null;
haskeline = null;
hpc = null;
integer-gmp = null;
mtl = null;
os-string = null;
parsec = null;
pretty = null;
process = null;
rts = null;
semaphore-compat = null;
stm = null;
system-cxx-std-lib = null;
template-haskell = null;
# GHC only builds terminfo if it is a native compiler
terminfo =
if pkgs.stdenv.hostPlatform == pkgs.stdenv.buildPlatform then
null
else
haskellLib.doDistribute self.terminfo_0_4_1_6;
text = null;
time = null;
transformers = null;
unix = null;
xhtml = null;
}
+16 -14
View File
@@ -165,21 +165,23 @@ in
runCommand "julia-${julia.version}-env" {
nativeBuildInputs = [makeWrapper];
inherit julia;
inherit juliaWrapped;
meta = julia.meta;
passthru = {
inherit julia;
inherit juliaWrapped;
inherit (julia) pname version meta;
# Expose the steps we used along the way in case the user wants to use them, for example to build
# expressions and build them separately to avoid IFD.
inherit dependencies;
inherit closureYaml;
inherit dependencyUuidToInfoYaml;
inherit dependencyUuidToRepoYaml;
inherit minimalRegistry;
inherit artifactsNix;
inherit overridesJson;
inherit overridesToml;
inherit projectAndDepot;
# Expose the steps we used along the way in case the user wants to use them, for example to build
# expressions and build them separately to avoid IFD.
inherit dependencies;
inherit closureYaml;
inherit dependencyUuidToInfoYaml;
inherit dependencyUuidToRepoYaml;
inherit minimalRegistry;
inherit artifactsNix;
inherit overridesJson;
inherit overridesToml;
inherit projectAndDepot;
};
} (''
mkdir -p $out/bin
makeWrapper ${juliaWrapped}/bin/julia $out/bin/julia \
+1 -1
View File
@@ -24,7 +24,7 @@ tcl.mkTclDerivation {
''
+ lib.optionalString (stdenv.hostPlatform.isDarwin && lib.versionOlder stdenv.hostPlatform.darwinMinVersion "11") ''
substituteInPlace unix/configure* \
--replace " -framework UniformTypeIdentifiers" ""
--replace-fail " -weak_framework UniformTypeIdentifiers" ""
'';
postInstall = ''
@@ -1,9 +1,11 @@
{
buildPecl,
fetchpatch,
lib,
imagemagick,
pkg-config,
pcre2,
php,
}:
buildPecl {
@@ -16,6 +18,16 @@ buildPecl {
nativeBuildInputs = [ pkg-config ];
buildInputs = [ pcre2 ];
patches = lib.optionals (lib.versionAtLeast php.version "8.4") [
# PHP 8.4 compatibility patch based on https://github.com/Imagick/imagick/pull/690
# These is also an alternative https://github.com/Imagick/imagick/pull/704
# Which includes more changes but doesn't apply cleanly.
(fetchpatch {
url = "https://github.com/Imagick/imagick/commit/65e27f2bc02e7e8f1bf64e26e359e42a1331fca1.patch";
hash = "sha256-I0FwdqtQ/Y/QVkCl+nWPBIxsdQY6qcjdwiA/BaLNl7g=";
})
];
meta = with lib; {
description = "Imagick is a native php extension to create and modify images using the ImageMagick API";
license = licenses.php301;
@@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "aiovlc";
version = "0.6.2";
version = "0.6.3";
pyproject = true;
disabled = pythonOlder "3.11";
@@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "MartinHjelmare";
repo = "aiovlc";
rev = "refs/tags/v${version}";
hash = "sha256-tvMd7kydL4fx9JLTFQgCskBQCV0Zs/swDpPBxtSEvyM=";
hash = "sha256-b4QtTR/p2wmVk4LZdkWwzM1odx1cxjUF08pV/zunTx4=";
};
build-system = [ poetry-core ];
@@ -22,14 +22,14 @@
buildPythonPackage rec {
pname = "databricks-sdk";
version = "0.35.0";
version = "0.38.0";
pyproject = true;
src = fetchFromGitHub {
owner = "databricks";
repo = "databricks-sdk-py";
rev = "refs/tags/v${version}";
hash = "sha256-CEv/+3E7KWV9LXzFPvDQIL1v8iFgbsS3/cTS/4obWas=";
hash = "sha256-g00NRo0FSHujN2mCLZCc1hKGsBFiN7ztEneUMziuQpk=";
};
build-system = [
@@ -11,7 +11,7 @@
buildPythonPackage rec {
pname = "dbt-snowflake";
version = "1.8.3";
version = "1.8.4";
pyproject = true;
disabled = pythonOlder "3.7";
@@ -20,7 +20,7 @@ buildPythonPackage rec {
owner = "dbt-labs";
repo = "dbt-snowflake";
rev = "refs/tags/v${version}";
hash = "sha256-jvhjf+Ce/oyHXFxMryz5Uy6Hq5Sx6vKgaGEJVAzqSdA=";
hash = "sha256-XUHXyxAoIBHXmH2xXOGrCO2+WMwwJ7oVYt4+m/fT/Ko=";
};
build-system = [ setuptools ];
@@ -12,14 +12,14 @@
buildPythonPackage rec {
pname = "eq3btsmart";
version = "1.2.0";
version = "1.4.1";
pyproject = true;
src = fetchFromGitHub {
owner = "EuleMitKeule";
repo = "eq3btsmart";
rev = "refs/tags/${version}";
hash = "sha256-Z3GfUTh3qp5ICJAYsCO6ufw/Jd5FDjOaQE9SaD3H0IU=";
hash = "sha256-FRnCnSMtsiZ1AbZOMwO/I5UoFWP0xAFqRZsnrHG9WJA=";
};
build-system = [ poetry-core ];
@@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "fastcore";
version = "1.7.20";
version = "1.7.22";
pyproject = true;
disabled = pythonOlder "3.8";
@@ -18,7 +18,7 @@ buildPythonPackage rec {
owner = "fastai";
repo = "fastcore";
rev = "refs/tags/${version}";
hash = "sha256-UGY6iSRF8pY5frZqarxpiNkGEQtgNdXY5mMQzbzMjhA=";
hash = "sha256-llD7hDZStgCUfp06byGLtLPgDqiK7BAMw9kLNzOGUec=";
};
build-system = [ setuptools ];

Some files were not shown because too many files have changed in this diff Show More