Merge master into staging-next

This commit is contained in:
github-actions[bot]
2024-08-12 18:02:11 +00:00
committed by GitHub
39 changed files with 487 additions and 243 deletions
+48 -5
View File
@@ -13,13 +13,44 @@ set -o errexit -o noclobber -o nounset -o pipefail
shopt -s failglob inherit_errexit
# https://stackoverflow.com/a/246128/6605742
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"
cd "$DIR"/modules
pass=0
fail=0
# loc
# prints the location of the call of to the function that calls it
# loc n
# prints the location n levels up the call stack
loc() {
local caller depth
depth=1
if [[ $# -gt 0 ]]; then
depth=$1
fi
# ( lineno fnname file ) of the caller
caller=( $(caller $depth) )
echo "${caller[2]}:${caller[0]}"
}
line() {
echo "----------------------------------------"
}
logStartFailure() {
line
}
logEndFailure() {
line
echo
}
logFailure() {
# bold red
printf '\033[1;31mTEST FAILED\033[0m at %s\n' "$(loc 2)"
}
evalConfig() {
local attr=$1
shift
@@ -31,7 +62,7 @@ reportFailure() {
local attr=$1
shift
local script="import ./default.nix { modules = [ $* ];}"
echo 2>&1 "$ nix-instantiate -E '$script' -A '$attr' --eval-only --json"
echo "$ nix-instantiate -E '$script' -A '$attr' --eval-only --json"
evalConfig "$attr" "$@" || true
((++fail))
}
@@ -42,8 +73,12 @@ checkConfigOutput() {
if evalConfig "$@" 2>/dev/null | grep -E --silent "$outputContains" ; then
((++pass))
else
echo 2>&1 "error: Expected result matching '$outputContains', while evaluating"
logStartFailure
echo "ACTUAL:"
reportFailure "$@"
echo "EXPECTED: result matching '$outputContains'"
logFailure
logEndFailure
fi
}
@@ -52,14 +87,22 @@ checkConfigError() {
local err=""
shift
if err="$(evalConfig "$@" 2>&1 >/dev/null)"; then
echo 2>&1 "error: Expected error code, got exit code 0, while evaluating"
logStartFailure
echo "ACTUAL: exit code 0, output:"
reportFailure "$@"
echo "EXPECTED: non-zero exit code"
logFailure
logEndFailure
else
if echo "$err" | grep -zP --silent "$errorContains" ; then
((++pass))
else
echo 2>&1 "error: Expected error matching '$errorContains', while evaluating"
logStartFailure
echo "ACTUAL:"
reportFailure "$@"
echo "EXPECTED: error matching '$errorContains'"
logFailure
logEndFailure
fi
fi
}
+6
View File
@@ -20491,6 +20491,12 @@
name = "Thiago K. Okada";
matrix = "@k0kada:matrix.org";
};
thibaultd = {
email = "t@lichess.org";
github = "ornicar";
githubId = 140370;
name = "Thibault D";
};
thibaultlemaire = {
email = "thibault.lemaire@protonmail.com";
github = "ThibaultLemaire";
+31 -18
View File
@@ -76,29 +76,42 @@ in
default = { };
type = types.attrsOf cfgType;
};
enableConfigCheck = mkEnableOption "checking all configurations during build time" // { default = true; };
};
config = mkIf cfg.enable {
config =
let
configFiles =
(optionalAttrs (cfg.settings != null) { "borgmatic/config.yaml".source = cfgfile; }) //
mapAttrs'
(name: value: nameValuePair
"borgmatic.d/${name}.yaml"
{ source = settingsFormat.generate "${name}.yaml" value; })
cfg.configurations;
borgmaticCheck = name: f: pkgs.runCommandCC "${name} validation" { } ''
${pkgs.borgmatic}/bin/borgmatic -c ${f.source} config validate
touch $out
'';
in
mkIf cfg.enable {
warnings = []
++ optional (cfg.settings != null && cfg.settings ? location)
"`services.borgmatic.settings.location` is deprecated, please move your options out of sections to the global scope"
++ optional (catAttrs "location" (attrValues cfg.configurations) != [])
"`services.borgmatic.configurations.<name>.location` is deprecated, please move your options out of sections to the global scope"
;
warnings = []
++ optional (cfg.settings != null && cfg.settings ? location)
"`services.borgmatic.settings.location` is deprecated, please move your options out of sections to the global scope"
++ optional (catAttrs "location" (attrValues cfg.configurations) != [])
"`services.borgmatic.configurations.<name>.location` is deprecated, please move your options out of sections to the global scope"
;
environment.systemPackages = [ pkgs.borgmatic ];
environment.systemPackages = [ pkgs.borgmatic ];
environment.etc = (optionalAttrs (cfg.settings != null) { "borgmatic/config.yaml".source = cfgfile; }) //
mapAttrs'
(name: value: nameValuePair
"borgmatic.d/${name}.yaml"
{ source = settingsFormat.generate "${name}.yaml" value; })
cfg.configurations;
environment.etc = configFiles;
systemd.packages = [ pkgs.borgmatic ];
systemd.packages = [ pkgs.borgmatic ];
# Workaround: https://github.com/NixOS/nixpkgs/issues/81138
systemd.timers.borgmatic.wantedBy = [ "timers.target" ];
};
# Workaround: https://github.com/NixOS/nixpkgs/issues/81138
systemd.timers.borgmatic.wantedBy = [ "timers.target" ];
system.checks = mkIf cfg.enableConfigCheck (mapAttrsToList borgmaticCheck configFiles);
};
}
+2 -2
View File
@@ -1,4 +1,4 @@
{ config, pkgs, lib, ... }: # mailman.nix
{ config, pkgs, lib, ... }:
with lib;
@@ -367,7 +367,7 @@ in {
for more info.
'';
}
(requirePostfixHash [ "relayDomains" ] "postfix_domains")
(requirePostfixHash [ "config" "relay_domains" ] "postfix_domains")
(requirePostfixHash [ "config" "transport_maps" ] "postfix_lmtp")
(requirePostfixHash [ "config" "local_recipient_maps" ] "postfix_lmtp")
]);
+1 -1
View File
@@ -12,7 +12,7 @@ with lib;
enable = mkOption {
default = true;
type = types.bool;
description = lib.mdDoc "Whether to enable the Proxmox VE LXC module.";
description = "Whether to enable the Proxmox VE LXC module.";
};
privileged = mkOption {
type = types.bool;
+14 -14
View File
@@ -124,7 +124,7 @@
};
# Test that server reloads when an alias is removed (and subsequently test removal works in acme)
"${server}-remove-alias".configuration = { nodes, config, ... }: baseConfig {
"${server}_remove_alias".configuration = { nodes, config, ... }: baseConfig {
inherit nodes config;
specialConfig = {
# Remove an alias, but create a standalone vhost in its place for testing.
@@ -140,7 +140,7 @@
};
# Test that the server reloads when only the acme configuration is changed.
"${server}-change-acme-conf".configuration = { nodes, config, ... }: baseConfig {
"${server}_change_acme_conf".configuration = { nodes, config, ... }: baseConfig {
inherit nodes config;
specialConfig = {
security.acme.certs."${server}-http.example.test" = {
@@ -251,7 +251,7 @@ in {
];
# Test OCSP Stapling
ocsp-stapling.configuration = { ... }: lib.mkMerge [
ocsp_stapling.configuration = { ... }: lib.mkMerge [
webserverBasicConfig
{
security.acme.certs."a.example.test".ocspMustStaple = true;
@@ -266,7 +266,7 @@ in {
# Validate service relationships by adding a slow start service to nginx' wants.
# Reproducer for https://github.com/NixOS/nixpkgs/issues/81842
slow-startup.configuration = { ... }: lib.mkMerge [
slow_startup.configuration = { ... }: lib.mkMerge [
webserverBasicConfig
{
systemd.services.my-slow-service = {
@@ -284,7 +284,7 @@ in {
}
];
concurrency-limit.configuration = {pkgs, ...}: lib.mkMerge [
concurrency_limit.configuration = {pkgs, ...}: lib.mkMerge [
webserverBasicConfig {
security.acme.maxConcurrentRenewals = 1;
@@ -317,7 +317,7 @@ in {
# Test lego internal server (listenHTTP option)
# Also tests useRoot option
lego-server.configuration = { ... }: {
lego_server.configuration = { ... }: {
security.acme.useRoot = true;
security.acme.certs."lego.example.test" = {
listenHTTP = ":80";
@@ -358,7 +358,7 @@ in {
caddy.configuration = baseCaddyConfig;
# Test that the server reloads when only the acme configuration is changed.
"caddy-change-acme-conf".configuration = { nodes, config, ... }: lib.mkMerge [
"caddy_change_acme_conf".configuration = { nodes, config, ... }: lib.mkMerge [
(baseCaddyConfig {
inherit nodes config;
})
@@ -629,12 +629,12 @@ in {
webserver.succeed("systemctl start nginx-config-reload.service")
with subtest("Correctly implements OCSP stapling"):
switch_to(webserver, "ocsp-stapling")
switch_to(webserver, "ocsp_stapling")
webserver.wait_for_unit("acme-finished-a.example.test.target")
check_stapling(client, "a.example.test")
with subtest("Can request certificate with HTTP-01 using lego's internal web server"):
switch_to(webserver, "lego-server")
switch_to(webserver, "lego_server")
webserver.wait_for_unit("acme-finished-lego.example.test.target")
webserver.wait_for_unit("nginx.service")
webserver.succeed("echo HENLO && systemctl cat nginx.service")
@@ -644,14 +644,14 @@ in {
with subtest("Can request certificate with HTTP-01 when nginx startup is delayed"):
webserver.execute("systemctl stop nginx")
switch_to(webserver, "slow-startup")
switch_to(webserver, "slow_startup")
webserver.wait_for_unit("acme-finished-slow.example.test.target")
check_issuer(webserver, "slow.example.test", "pebble")
webserver.wait_for_unit("nginx.service")
check_connection(client, "slow.example.test")
with subtest("Can limit concurrency of running renewals"):
switch_to(webserver, "concurrency-limit")
switch_to(webserver, "concurrency_limit")
webserver.wait_for_unit("acme-finished-f.example.test.target")
webserver.wait_for_unit("acme-finished-g.example.test.target")
webserver.wait_for_unit("acme-finished-h.example.test.target")
@@ -669,7 +669,7 @@ in {
check_connection(client, "a.example.test")
with subtest("security.acme changes reflect on caddy"):
switch_to(webserver, "caddy-change-acme-conf")
switch_to(webserver, "caddy_change_acme_conf")
webserver.wait_for_unit("acme-finished-example.test.target")
webserver.wait_for_unit("caddy.service")
# FIXME reloading caddy is not sufficient to load new certs.
@@ -721,7 +721,7 @@ in {
with subtest("Can remove an alias from a domain + cert is updated"):
test_alias = f"{server}-{domains[0]}-alias.example.test"
switch_to(webserver, f"{server}-remove-alias")
switch_to(webserver, f"{server}_remove_alias")
webserver.wait_for_unit(f"acme-finished-{test_domain}.target")
wait_for_server()
check_connection(client, test_domain)
@@ -736,7 +736,7 @@ in {
# Switch back to normal server config first, reset everything.
switch_to(webserver, server)
wait_for_server()
switch_to(webserver, f"{server}-change-acme-conf")
switch_to(webserver, f"{server}_change_acme_conf")
webserver.wait_for_unit(f"acme-finished-{test_domain}.target")
wait_for_server()
check_connection_key_bits(client, test_domain, "384")
+1
View File
@@ -160,6 +160,7 @@ in {
bootspec = handleTestOn ["x86_64-linux"] ./bootspec.nix {};
boot-stage1 = handleTest ./boot-stage1.nix {};
borgbackup = handleTest ./borgbackup.nix {};
borgmatic = handleTest ./borgmatic.nix {};
botamusique = handleTest ./botamusique.nix {};
bpf = handleTestOn ["x86_64-linux" "aarch64-linux"] ./bpf.nix {};
bpftune = handleTest ./bpftune.nix {};
+24
View File
@@ -0,0 +1,24 @@
import ./make-test-python.nix ({ pkgs, ... }:
{
name = "borgmatic";
nodes.machine = { ... }: {
services.borgmatic = {
enable = true;
settings = {
source_directories = [ "/home" ];
repositories = [
{
label = "local";
path = "/var/backup";
}
];
keep_daily = 7;
};
};
};
testScript = ''
machine.succeed("borgmatic rcreate -e none")
machine.succeed("borgmatic")
'';
})
@@ -27,7 +27,7 @@ let
libPath = lib.makeLibraryPath [ xorg.libX11 glib gtk3 cairo pango ];
redirects = [ "/usr/bin/pkexec=${pkexecPath}" ];
in let
binaryPackage = stdenv.mkDerivation {
pname = "${pname}-bin";
version = buildVersion;
@@ -61,8 +61,7 @@ let
] ++ lib.optionals (lib.versionAtLeast buildVersion "4145") [
sqlite
];
in
let
binaryPackage = stdenv.mkDerivation rec {
pname = "${pnameBase}-bin";
version = buildVersion;
-2
View File
@@ -21,9 +21,7 @@ let
perl = perl536;
# Ruby 3.2
ruby = ruby_3_2;
in
let
# Building requires a few system tools to be in PATH.
# Some of these we could patch into the relevant source files (such as xcodebuild and
# qlmanage) but some are used by Xcode itself and we have no choice but to put them in PATH.
@@ -8,16 +8,16 @@
buildGoModule rec {
pname = "kubeone";
version = "1.8.1";
version = "1.8.2";
src = fetchFromGitHub {
owner = "kubermatic";
repo = "kubeone";
rev = "v${version}";
hash = "sha256-P/x6HigXnAhpUnycm9B8TO33hdPzREiM8kwL+/GedZY=";
hash = "sha256-H+EzSsXCjURMBJW9+1EWXsfO4faUXcTcYckK/QJYEFk=";
};
vendorHash = "sha256-tAThtZJ5DRzveJRG58VPxJWrZjB+dnXhX/50lZEHUGc=";
vendorHash = "sha256-z1BBE+PH2s7VxWNxneu5y2ZerfzCZNPJowZJVq821Kk=";
ldflags = [
"-s"
@@ -15,9 +15,7 @@ let
}.${stdenv.hostPlatform.system};
installer = "https://clientupdates.dropboxstatic.com/dbx-releng/client/dropbox-lnx.${arch}-${version}.tar.gz";
in
let
desktopItem = makeDesktopItem {
name = "dropbox";
exec = "dropbox";
@@ -4,16 +4,12 @@
let
pname = "hol4";
vnum = "14";
in
let
version = "k.${vnum}";
longVersion = "kananaskis-${vnum}";
holsubdir = "hol-${longVersion}";
kernelFlag = if experimentalKernel then "--expk" else "--stdknl";
in
let
polymlEnableShared = with pkgs; lib.overrideDerivation polyml (attrs: {
configureFlags = [ "--enable-shared" ];
});
@@ -60,8 +60,7 @@ let
"/usr/bin/pkexec=${pkexecPath}"
"/bin/true=${coreutils}/bin/true"
];
in
let
binaryPackage = stdenv.mkDerivation rec {
pname = "${pnameBase}-bin";
version = buildVersion;
@@ -167,8 +167,7 @@ let
inherit (lib) optional optionals optionalString versions;
in
let
self = stdenv.mkDerivation rec {
pname = "handbrake";
inherit version src;
@@ -7,13 +7,13 @@
}:
mkHyprlandPlugin hyprland rec {
pluginName = "hy3";
version = "0.41.2";
version = "0.42.0";
src = fetchFromGitHub {
owner = "outfoxxed";
repo = "hy3";
rev = "refs/tags/hl${version}";
hash = "sha256-aZuNKBwTwj8EXkDBMWNdRKbHPx647wJLWm55h6jOKbo=";
hash = "sha256-gyhpW3Mv9RgWsB8jAMoA7yoMSb01ol0jyPFNsghaZ0w=";
};
nativeBuildInputs = [ cmake ];
@@ -24,7 +24,7 @@ mkHyprlandPlugin hyprland rec {
homepage = "https://github.com/outfoxxed/hy3";
description = "Hyprland plugin for an i3 / sway like manual tiling layout";
license = lib.licenses.gpl3;
platforms = lib.platforms.linux;
inherit (hyprland.meta) platforms;
maintainers = with lib.maintainers; [
aacebedo
johnrtitor
@@ -14,13 +14,13 @@ let
mkHyprlandPlugin,
}:
let
version = "0.41.2";
version = "0.42.0";
hyprland-plugins-src = fetchFromGitHub {
owner = "hyprwm";
repo = "hyprland-plugins";
rev = "refs/tags/v${version}";
hash = "sha256-TnlAcO5K2gkab0mpKurP5Co6eWRycP/KbFqWNS2rsMA=";
hash = "sha256-aPzAbDgAyxJlUjyaFPDhjcL7WnyDP5uDZKOqlQRD8eM=";
};
in
mkHyprlandPlugin hyprland {
@@ -37,7 +37,7 @@ let
fufexan
johnrtitor
];
platforms = lib.platforms.linux;
inherit (hyprland.meta) platforms;
};
}
)
@@ -127,6 +127,8 @@ let
else if (with targetPlatform; isAarch32 && isLinux) then "${sharedLibraryLoader}/lib/ld-linux*.so.3"
else if targetPlatform.system == "aarch64-linux" then "${sharedLibraryLoader}/lib/ld-linux-aarch64.so.1"
else if targetPlatform.system == "powerpc-linux" then "${sharedLibraryLoader}/lib/ld.so.1"
else if targetPlatform.system == "s390-linux" then "${sharedLibraryLoader}/lib/ld.so.1"
else if targetPlatform.system == "s390x-linux" then "${sharedLibraryLoader}/lib/ld64.so.1"
else if targetPlatform.isMips then "${sharedLibraryLoader}/lib/ld.so.1"
# `ld-linux-riscv{32,64}-<abi>.so.1`
else if targetPlatform.isRiscV then "${sharedLibraryLoader}/lib/ld-linux-riscv*.so.1"
+15 -14
View File
@@ -22,17 +22,17 @@ let
in
rec {
/**
A generic function that returns a derivation which, when beeing built outputs the script in an executable format.
`makeScriptWriter` returns a derivation which creates an executable script.
# Inputs
config (AttrSet)
: `interpreter` (String)
: the interpreter to use for the script
: the [interpreter](https://en.wikipedia.org/wiki/Shebang_(Unix)) to use for the script.
: `check` (String)
: A command to check the script. I.e. some linting check.
: A command to check the script. For example, this could be a linting check.
: `makeWrapperArgs` (Optional, [ String ], Default: [])
: Arguments forwarded to (`makeWrapper`)[#fun-makeWrapper]
: Arguments forwarded to (`makeWrapper`)[#fun-makeWrapper].
`nameOrPath` (String)
: The name of the script or the path to the script.
@@ -40,8 +40,8 @@ rec {
When a `string` starting with "/" is passed, the script will be created at the specified path in $out.
I.e. `"/bin/hello"` will create a script at `$out/bin/hello`.
Any other `string` is interpreted as filename.
It must be a simple unix filename starting with a letter, digit, dot, or underscore.
Any other `string` is interpreted as a filename.
It must be a [POSIX filename](https://en.wikipedia.org/wiki/Filename) starting with a letter, digit, dot, or underscore.
Spaces or special characters are not allowed.
`content` (String)
@@ -51,6 +51,7 @@ rec {
This function is used as base implementation for other high-level writer functions.
For example, `writeBash` can (roughly) be implemented as:
```nix
writeBash = makeScriptWriter { interpreter = "${pkgs.bash}/bin/bash"; }
```
@@ -103,7 +104,8 @@ rec {
name = last (builtins.split "/" nameOrPath);
path = if nameIsPath then nameOrPath else "/bin/${name}";
# The inner derivation which creates the executable under $out/bin (never at $out directly)
# This is required in order to support wrapping, as wrapped programs consist of at least two files: the executable and the wrapper.
# This is required in order to support wrapping, as wrapped programs consist of
# at least two files: the executable and the wrapper.
inner =
pkgs.runCommandLocal name
(
@@ -178,11 +180,10 @@ rec {
'';
/**
This is a generic function that returns a derivation which, when built, compiles the given script into an executable format.
`makeBinWriter` returns a derivation which compiles the given script into an executable format.
:::{.note}
This function is the base implementation for other compile language `writers`.
i.e. `writeHaskell`, `writeRust`.
This function is the base implementation for other compile language `writers`, such as `writeHaskell` and `writeRust`.
:::
# Inputs
@@ -192,7 +193,7 @@ rec {
: The script that compiles the given content into an executable.
: `strip` (Boolean, Default: true)
: Whether to strip the executable or not.
: Whether to [strip](https://nixos.org/manual/nixpkgs/stable/#ssec-fixup-phase) the executable or not.
: `makeWrapperArgs` (Optional, [ String ], Default: [])
: Arguments forwarded to (`makeWrapper`)[#fun-makeWrapper]
@@ -201,10 +202,10 @@ rec {
: The name of the script or the path to the script.
When a `string` starting with "/" is passed, the script will be created at the specified path in $out.
I.e. `"/bin/hello"` will create a script at `$out/bin/hello`.
For example, `"/bin/hello"` will create a script at `$out/bin/hello`.
Any other `string` is interpreted as filename.
It must be a simple unix filename starting with a letter, digit, dot, or underscore.
Any other `string` is interpreted as a filename.
It must be a [POSIX filename](https://en.wikipedia.org/wiki/Filename) starting with a letter, digit, dot, or underscore.
Spaces or special characters are not allowed.
# Examples
+4 -6
View File
@@ -22,13 +22,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "aquamarine";
version = "0.2.0";
version = "0.3.1";
src = fetchFromGitHub {
owner = "hyprwm";
repo = "aquamarine";
rev = "v${finalAttrs.version}";
hash = "sha256-UKdFUKA/h6SeiXpQ06BSZkBJKDwFOFaGI3NtiuaDOhg=";
hash = "sha256-1RYuBS/CQhtyIeXrLDvGWJhuVG1kiQMG+aYaBkoGnEU=";
};
nativeBuildInputs = [
@@ -62,9 +62,7 @@ stdenv.mkDerivation (finalAttrs: {
cmakeBuildType = "RelWithDebInfo";
passthru = {
updateScript = nix-update-script { };
};
passthru.updateScript = nix-update-script { };
meta = {
changelog = "https://github.com/hyprwm/aquamarine/releases/tag/${finalAttrs.version}";
@@ -75,6 +73,6 @@ stdenv.mkDerivation (finalAttrs: {
fufexan
johnrtitor
];
platforms = lib.platforms.linux;
platforms = lib.platforms.linux ++ lib.platforms.freebsd;
};
})
+2 -2
View File
@@ -71,13 +71,13 @@ let
in
stdenv.mkDerivation rec {
pname = "cinnamon-common";
version = "6.2.8";
version = "6.2.9";
src = fetchFromGitHub {
owner = "linuxmint";
repo = "cinnamon";
rev = version;
hash = "sha256-d1r+ouomcmiqTMHL/iHNL1kUJZvy35e2Qpv5j3bHDAA=";
hash = "sha256-CW87zZogjdTOCp6mx5ctV6T9YQVQGo3yw0lPTkiCNkE=";
};
patches = [
+2 -2
View File
@@ -5,10 +5,10 @@
let
pname = "fflogs";
version = "8.12.0";
version = "8.12.19";
src = fetchurl {
url = "https://github.com/RPGLogs/Uploaders-fflogs/releases/download/v${version}/fflogs-v${version}.AppImage";
hash = "sha256-2hpCcA/RN7fpNhaqMAyVC4d1fTRhp+lwYf/Wc0FjXxI=";
hash = "sha256-/TGmUHMNowQFIw09OGw1ybiYE7ADPLbsZpAMPw3G5NE=";
};
extracted = appimageTools.extractType2 { inherit pname version src; };
in
+4 -4
View File
@@ -1,7 +1,7 @@
{
"branch": "main",
"commit_hash": "918d8340afd652b011b937d29d5eea0be08467f5",
"commit_message": "flake.lock: update",
"date": "2024-06-25",
"tag": "v0.41.2"
"commit_hash": "9a09eac79b85c846e3a865a9078a3f8ff65a9259",
"commit_message": "props: bump version to 0.42.0",
"date": "2024-08-07",
"tag": "v0.42.0"
}
+114 -109
View File
@@ -1,77 +1,78 @@
{ lib
, stdenv
, fetchFromGitHub
, pkg-config
, makeWrapper
, meson
, cmake
, ninja
, binutils
, cairo
, epoll-shim
, expat
, fribidi
, git
, hyprcursor
, hyprland-protocols
, hyprlang
, hyprutils
, hyprwayland-scanner
, jq
, libGL
, libdrm
, libdatrie
, libexecinfo
, libinput
, libselinux
, libsepol
, libthai
, libuuid
, libxkbcommon
, mesa
, pango
, pciutils
, pcre2
, pkgconf
, python3
, systemd
, tomlplusplus
, wayland
, wayland-protocols
, wayland-scanner
, xwayland
, hwdata
, seatd
, libdisplay-info
, libliftoff
, xorg
, debug ? false
, enableXWayland ? true
, legacyRenderer ? false
, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd
, wrapRuntimeDeps ? true
{
lib,
stdenv,
fetchFromGitHub,
pkg-config,
makeWrapper,
cmake,
ninja,
aquamarine,
binutils,
cairo,
epoll-shim,
expat,
fribidi,
git,
hwdata,
hyprcursor,
hyprlang,
hyprutils,
hyprwayland-scanner,
jq,
libGL,
libdatrie,
libdisplay-info,
libdrm,
libexecinfo,
libinput,
libliftoff,
libselinux,
libsepol,
libthai,
libuuid,
libxkbcommon,
mesa,
pango,
pciutils,
pcre2,
pkgconf,
python3,
seatd,
systemd,
tomlplusplus,
wayland,
wayland-protocols,
wayland-scanner,
xorg,
xwayland,
debug ? false,
enableXWayland ? true,
legacyRenderer ? false,
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
wrapRuntimeDeps ? true,
# deprecated flags
, nvidiaPatches ? false
, hidpiXWayland ? false
, enableNvidiaPatches ? false
nvidiaPatches ? false,
hidpiXWayland ? false,
enableNvidiaPatches ? false,
}:
let
info = builtins.fromJSON (builtins.readFile ./info.json);
in
assert lib.assertMsg (!nvidiaPatches) "The option `nvidiaPatches` has been removed.";
assert lib.assertMsg (!enableNvidiaPatches) "The option `enableNvidiaPatches` has been removed.";
assert lib.assertMsg (!hidpiXWayland) "The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland";
assert lib.assertMsg (!hidpiXWayland)
"The option `hidpiXWayland` has been removed. Please refer https://wiki.hyprland.org/Configuring/XWayland";
stdenv.mkDerivation (finalAttrs: {
pname = "hyprland" + lib.optionalString debug "-debug";
version = "0.41.2";
version = "0.42.0";
src = fetchFromGitHub {
owner = "hyprwm";
repo = "hyprland";
fetchSubmodules = true;
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-JmfnYz+9a4TjNl3mAus1VpoWtTI9d1xkW9MHbkcV0Po=";
hash = "sha256-deu8zvgseDg2gQEnZiCda4TrbA6pleE9iItoZlsoMtE=";
};
postPatch = ''
@@ -97,16 +98,14 @@ stdenv.mkDerivation (finalAttrs: {
];
nativeBuildInputs = [
hwdata
hyprwayland-scanner
jq
makeWrapper
cmake
meson # for wlroots
ninja
pkg-config
wayland-scanner
python3 # for udis86
wayland-scanner
];
outputs = [
@@ -115,54 +114,54 @@ stdenv.mkDerivation (finalAttrs: {
"dev"
];
buildInputs = [
cairo
expat
fribidi
git
hyprcursor.dev
hyprland-protocols
hyprlang
hyprutils
libGL
libdatrie
libdrm
libinput
libselinux
libsepol
libthai
libuuid
libxkbcommon
mesa
wayland
wayland-protocols
pango
pciutils
pcre2
tomlplusplus
# for subproject wlroots-hyprland
seatd
libliftoff
libdisplay-info
xorg.xcbutilerrors
xorg.xcbutilrenderutil
]
++ lib.optionals stdenv.hostPlatform.isBSD [ epoll-shim ]
++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
++ lib.optionals enableXWayland [
xorg.libxcb
xorg.libXdmcp
xorg.xcbutil
xorg.xcbutilwm
xwayland
]
++ lib.optionals withSystemd [ systemd ];
buildInputs =
[
aquamarine
cairo
expat
fribidi
git
hwdata
hyprcursor.dev
hyprlang
hyprutils
libGL
libdatrie
libdisplay-info
libdrm
libinput
libliftoff
libselinux
libsepol
libthai
libuuid
libxkbcommon
mesa
pango
pciutils
pcre2
seatd
tomlplusplus
wayland
wayland-protocols
]
++ lib.optionals stdenv.hostPlatform.isBSD [ epoll-shim ]
++ lib.optionals stdenv.hostPlatform.isMusl [ libexecinfo ]
++ lib.optionals enableXWayland [
xorg.libxcb
xorg.libXcursor
xorg.libXdmcp
xorg.xcbutil
xorg.xcbutilerrors
xorg.xcbutilrenderutil
xorg.xcbutilwm
xwayland
]
++ lib.optionals withSystemd [ systemd ];
cmakeBuildType =
if debug
then "Debug"
else "RelWithDebInfo";
cmakeBuildType = if debug then "Debug" else "RelWithDebInfo";
dontStrip = debug;
cmakeFlags = [
(lib.cmakeBool "NO_XWAYLAND" (!enableXWayland))
@@ -173,7 +172,13 @@ stdenv.mkDerivation (finalAttrs: {
postInstall = ''
${lib.optionalString wrapRuntimeDeps ''
wrapProgram $out/bin/Hyprland \
--suffix PATH : ${lib.makeBinPath [binutils pciutils pkgconf]}
--suffix PATH : ${
lib.makeBinPath [
binutils
pciutils
pkgconf
]
}
''}
'';
@@ -191,6 +196,6 @@ stdenv.mkDerivation (finalAttrs: {
wozeparrot
];
mainProgram = "Hyprland";
platforms = lib.platforms.linux;
platforms = lib.platforms.linux ++ lib.platforms.freebsd;
};
})
+3 -4
View File
@@ -22,9 +22,8 @@ date=${date%T*}
# update version; otherwise fail
update-source-version hyprland "$version" --ignore-same-hash
# find hyprland dir
files="$(fd --full-path /hyprland/ | head -1)"
dir="${files%/*}"
# set hyprland dir
dir="pkgs/by-name/hy/hyprland"
echo -e '{
"branch": "'"$branch"'",
@@ -32,4 +31,4 @@ echo -e '{
"commit_message": "'"$commit_message"'",
"date": "'"$date"'",
"tag": "'"$tag"'"
}' >"$dir/info.json"
}' >"$dir/info.json" || echo "Please run the script in the root of the Nixpkgs repo"
+118
View File
@@ -0,0 +1,118 @@
{
dbus,
openssl,
gtk3,
webkitgtk,
pkg-config,
wrapGAppsHook3,
fetchFromGitHub,
buildNpmPackage,
rustPlatform,
lib,
stdenv,
copyDesktopItems,
makeDesktopItem,
alsa-lib,
darwin,
}:
rustPlatform.buildRustPackage rec {
pname = "lrcget";
version = "0.4.0";
src = fetchFromGitHub {
owner = "tranxuanthang";
repo = "lrcget";
rev = "${version}";
hash = "sha256-OrmSaRKhGCl5sTirzICx8PBsQm23pYUBBtb07+P1ZbY=";
};
sourceRoot = "${src.name}/src-tauri";
cargoHash = "sha256-V9+/sfCxeZJ39nOuMBv2YlkzewoS+N3kFyBGdIqkw/A=";
frontend = buildNpmPackage {
inherit version src;
pname = "lrcget-ui";
# FIXME: This is a workaround, because we have a git dependency node_modules/lrc-kit contains install scripts
# but has no lockfile, which is something that will probably break.
forceGitDeps = true;
distPhase = "true";
dontInstall = true;
# To fix `npm ERR! Your cache folder contains root-owned files`
makeCacheWritable = true;
npmDepsHash = "sha256-qQ5UMO3UuD6IvUveTRF35qTlGq5PMbxp1Q4UroDqVtk=";
postBuild = ''
cp -r dist/ $out
'';
};
# copy the frontend static resources to final build directory
# Also modify tauri.conf.json so that it expects the resources at the new location
postPatch = ''
cp -r $frontend ./frontend
substituteInPlace tauri.conf.json --replace-fail '"distDir": "../dist"' '"distDir": "./frontend"'
'';
nativeBuildInputs = [
pkg-config
wrapGAppsHook3
copyDesktopItems
rustPlatform.bindgenHook
];
buildInputs =
[
dbus
openssl
gtk3
]
++ lib.optionals (!stdenv.isDarwin) [
webkitgtk
alsa-lib
]
++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.CoreAudio
darwin.apple_sdk.frameworks.WebKit
];
# Disable checkPhase, since the project doesn't contain tests
doCheck = false;
postInstall = ''
install -DT icons/128x128@2x.png $out/share/icons/hicolor/128x128@2/apps/lrcget.png
install -DT icons/128x128.png $out/share/icons/hicolor/128x128/apps/lrcget.png
install -DT icons/32x32.png $out/share/icons/hicolor/32x32/apps/lrcget.png
'';
# WEBKIT_DISABLE_COMPOSITING_MODE essential in NVIDIA + compositor https://github.com/NixOS/nixpkgs/issues/212064#issuecomment-1400202079
postFixup = ''
wrapProgram "$out/bin/lrcget" \
--set WEBKIT_DISABLE_COMPOSITING_MODE 1
'';
desktopItems = [
(makeDesktopItem {
name = "LRCGET";
exec = "lrcget";
icon = "lrcget";
desktopName = "LRCGET";
comment = meta.description;
})
];
meta = {
description = "Utility for mass-downloading LRC synced lyrics for your offline music library";
homepage = "https://github.com/tranxuanthang/lrcget";
changelog = "https://github.com/tranxuanthang/lrcget/releases/tag/${version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
anas
Scrumplex
];
mainProgram = "lrcget";
platforms = with lib.platforms; unix ++ windows;
};
}
+11 -3
View File
@@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec {
pname = "mountpoint-s3";
version = "1.6.0";
version = "1.8.0";
src = fetchFromGitHub {
owner = "awslabs";
repo = "mountpoint-s3";
rev = "v${version}";
hash = "sha256-1d2PPbTheUcHw2xS5LEcdchnfwu7szBApv+FnPaxt+I=";
hash = "sha256-0SygSRp2HXgLhW0BscRhH3H/WUstAf6VbQPJ35ffrRM=";
fetchSubmodules = true;
};
cargoHash = "sha256-tBi41kdaa4mVHh0MkXJ8kaG1e3CQURIKVk9Lboy1N8Y=";
cargoHash = "sha256-nkTvVfbpi5yvWpRd1Tm6INi3PrR6mP8VkBpIVeCEkw0=";
# thread 'main' panicked at cargo-auditable/src/collect_audit_data.rs:77:9:
# cargo metadata failure: error: none of the selected packages contains these features: libfuse3
@@ -31,9 +31,17 @@ rustPlatform.buildRustPackage rec {
#thread 's3_crt_client::tests::test_expected_bucket_owner' panicked at mountpoint-s3-client/src/s3_crt_client.rs:1123:47:
#Create test client: ProviderFailure(Error(1173, "aws-c-io: AWS_IO_TLS_ERROR_DEFAULT_TRUST_STORE_NOT_FOUND, Default TLS trust store not found on this system. Trusted CA certificates must be installed, or \"override default trust store\" must be used while creating the TLS context."))
#
"--skip=s3_crt_client::tests::client_new_fails_with_greater_part_size"
"--skip=s3_crt_client::tests::client_new_fails_with_smaller_part_size"
"--skip=s3_crt_client::tests::test_endpoint_favors_env_variable"
"--skip=s3_crt_client::tests::test_endpoint_favors_parameter_over_env_variable"
"--skip=s3_crt_client::tests::test_endpoint_with_invalid_env_variable"
"--skip=s3_crt_client::tests::test_expected_bucket_owner"
"--skip=s3_crt_client::tests::test_user_agent_with_prefix"
"--skip=s3_crt_client::tests::test_user_agent_without_prefix"
"--skip=test_lookup_throttled_mock::head_object"
"--skip=test_lookup_throttled_mock::list_object"
"--skip=test_lookup_unhandled_error_mock"
"--skip=tests::smoke"
# fuse module not available on build machine ?
#
+2 -6
View File
@@ -14,7 +14,6 @@
, xapp
, libexif
, json-glib
, gtk-layer-shell
, exempi
, intltool
, shared-mime-info
@@ -24,13 +23,13 @@
stdenv.mkDerivation rec {
pname = "nemo";
version = "6.2.7";
version = "6.2.8";
src = fetchFromGitHub {
owner = "linuxmint";
repo = pname;
rev = version;
sha256 = "sha256-wYzBrFRCgfmvmjSP6X1cCAFU5aFydO2FNl86j5rAfgA=";
sha256 = "sha256-1GJLsUlptwXcZUWIOztskV0nHA9BnPmnVeTgUwJ+QDQ=";
};
patches = [
@@ -52,7 +51,6 @@ stdenv.mkDerivation rec {
gvfs
libgsf
json-glib
gtk-layer-shell
];
nativeBuildInputs = [
@@ -68,8 +66,6 @@ stdenv.mkDerivation rec {
mesonFlags = [
# use locales from cinnamon-translations
"--localedir=${cinnamon-translations}/share/locale"
# enabled by default in Mint packaging (see debian/rules)
"-Dgtk_layer_shell=true"
];
postInstall = ''
+6 -9
View File
@@ -1,7 +1,8 @@
{ lib
, fetchFromGitHub
, installShellFiles
, php
{
lib,
fetchFromGitHub,
installShellFiles,
php,
}:
php.buildComposerProject (finalAttrs: {
@@ -19,13 +20,9 @@ php.buildComposerProject (finalAttrs: {
nativeBuildInputs = [ installShellFiles ];
postPatch = ''
patchShebangs bin/phpactor
'';
postInstall = ''
installShellCompletion --cmd phpactor \
--bash <($out/bin/phpactor completion bash)
--bash <(php $out/bin/phpactor completion bash)
'';
meta = {
+36
View File
@@ -0,0 +1,36 @@
{
lib,
stdenv,
fetchFromGitHub,
libX11,
libXrandr,
}:
stdenv.mkDerivation rec {
pname = "yeahconsole";
version = "0.1.3";
src = fetchFromGitHub {
owner = "jceb";
repo = pname;
rev = "v${version}";
hash = "sha256-Ea6erNF9hEhDHlWLctu1SHFVoXXXsPeWUbvCBSZwn4s=";
};
buildInputs = [
libX11
libXrandr
];
preConfigure = ''
sed -i "s@PREFIX = /usr/local@PREFIX = $out@g" Makefile
'';
meta = {
description = "Turns an xterm into a gamelike console";
homepage = "https://github.com/jceb/yeahconsole";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ jceb ];
platforms = lib.platforms.all;
};
}
@@ -10,11 +10,11 @@
stdenv.mkDerivation rec {
pname = "evisum";
version = "0.6.0";
version = "0.6.1";
src = fetchurl {
url = "https://download.enlightenment.org/rel/apps/${pname}/${pname}-${version}.tar.xz";
sha256 = "1ip3rmp0hcn0pk6lv089cayx18p1b2wycgvwpnf7ghbdxg7n4q15";
sha256 = "gy8guN4T4pCJCBAmfPQe2Ey7DITi4goU9ng2MmEtrbk=";
};
nativeBuildInputs = [
@@ -35,9 +35,7 @@ packageNames:
let
util = callPackage ./util.nix {};
in
let
# Some Julia packages require access to Python. Provide a Nixpkgs version so it
# doesn't try to install its own.
pythonToUse = let
+1 -1
View File
@@ -24,9 +24,9 @@ stdenv.mkDerivation rec {
'';
meta = with lib; {
inherit (attr.meta) platforms badPlatforms;
homepage = "https://savannah.nongnu.org/projects/acl";
description = "Library and tools for manipulating access control lists";
platforms = platforms.linux;
license = licenses.gpl2Plus;
};
}
@@ -28,6 +28,7 @@ stdenv.mkDerivation rec {
homepage = "https://savannah.nongnu.org/projects/attr/";
description = "Library and tools for manipulating extended attributes";
platforms = platforms.linux;
badPlatforms = platforms.microblaze;
license = licenses.gpl2Plus;
};
}
+16 -9
View File
@@ -11,29 +11,36 @@ let
if stdenv.isAarch64 then "armv8" else
"unknown";
nnueFile = "nn-5af11540bbfe.nnue";
nnue = fetchurl {
name = nnueFile;
url = "https://tests.stockfishchess.org/api/nn/${nnueFile}";
sha256 = "sha256-WvEVQLv+/LVOOMXdAAyrS0ad+nWZodVb5dJyLCCokps=";
# These files can be found in src/evaluate.h
nnueBigFile = "nn-b1a57edbea57.nnue";
nnueBig = fetchurl {
name = nnueBigFile;
url = "https://tests.stockfishchess.org/api/nn/${nnueBigFile}";
sha256 = "sha256-saV+2+pXTKi4jWg3RzhFeRvrU9iF+H+G1czdVln787I=";
};
nnueSmallFile = "nn-baff1ede1f90.nnue";
nnueSmall = fetchurl {
name = nnueSmallFile;
url = "https://tests.stockfishchess.org/api/nn/${nnueSmallFile}";
sha256 = "sha256-uv8e3h+Qwd0bT3cvHv8phIghgB6BhjRdp/DrQSG9b2M=";
};
in
stdenv.mkDerivation rec {
pname = "stockfish";
version = "16";
version = "16.1";
src = fetchFromGitHub {
owner = "official-stockfish";
repo = "Stockfish";
rev = "sf_${version}";
sha256 = "sha256-ASy2vIP94lnSKgxixK1GoC84yAysaJpxeyuggV4MrP4=";
sha256 = "sha256-xTtjfJgEHF0SQT9Fw/9RLZA0Quh00jrIbihr7IYCm2U=";
};
postUnpack = ''
sourceRoot+=/src
echo ${nnue}
cp "${nnue}" "$sourceRoot/${nnueFile}"
cp "${nnueBig}" "$sourceRoot/${nnueBigFile}"
cp "${nnueSmall}" "$sourceRoot/${nnueSmallFile}"
'';
makeFlags = [ "PREFIX=$(out)" "ARCH=${arch}" "CXX=${stdenv.cc.targetPrefix}c++" ];
+5 -2
View File
@@ -1,4 +1,7 @@
{ lib, stdenv, fetchurl, autoreconfHook, updateAutotoolsGnuConfigScriptsHook, acl, libintl }:
{ lib, stdenv, fetchurl, autoreconfHook, updateAutotoolsGnuConfigScriptsHook
, libintl
, aclSupport ? lib.meta.availableOn stdenv.hostPlatform acl, acl
}:
# Note: this package is used for bootstrapping fetchurl, and thus
# cannot use fetchpatch! All mutable patches (generated by GitHub or
@@ -37,7 +40,7 @@ stdenv.mkDerivation rec {
# "_libintl_textdomain", referenced from:
# _main in tar.o
# ld: symbol(s) not found for architecture x86_64
buildInputs = lib.optional stdenv.isLinux acl ++ lib.optional stdenv.isDarwin libintl;
buildInputs = lib.optional aclSupport acl ++ lib.optional stdenv.isDarwin libintl;
# May have some issues with root compilation because the bootstrap tool
# cannot be used as a login shell for now.
+1 -2
View File
@@ -5,8 +5,7 @@
let
avro-cpp = avro-cpp_llvm;
nanodbc = nanodbc_llvm;
in
let
common = import ./common.nix {
inherit lib stdenv bzip2 zlib autoconf automake cmake
help2man texinfo libtool cppzmq libarchive
+2 -2
View File
@@ -10,8 +10,8 @@
, binlore
, coreutils
, gmpSupport ? true, gmp
, aclSupport ? stdenv.isLinux, acl
, attrSupport ? stdenv.isLinux, attr
, aclSupport ? lib.meta.availableOn stdenv.hostPlatform acl, acl
, attrSupport ? lib.meta.availableOn stdenv.hostPlatform attr, attr
, selinuxSupport ? false, libselinux, libsepol
# No openssl in default version, so openssl-induced rebuilds aren't too big.
# It makes *sum functions significantly faster.