Merge master into haskell-updates

This commit is contained in:
github-actions[bot] 2023-10-24 00:12:19 +00:00 committed by GitHub
commit a2207ccaf5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
194 changed files with 7381 additions and 4221 deletions

View File

@ -16112,6 +16112,12 @@
fingerprint = "AB63 4CD9 3322 BD42 6231 F764 C404 1EA6 B326 33DE";
}];
};
shivaraj-bh = {
email = "sbh69840@gmail.com";
name = "Shivaraj B H";
github = "shivaraj-bh";
githubId = 23645788;
};
shlevy = {
email = "shea@shealevy.com";
github = "shlevy";

View File

@ -16,7 +16,6 @@ cyrussasl,https://github.com/JorjBauer/lua-cyrussasl.git,,,,,
digestif,https://github.com/astoff/digestif.git,,,0.2-1,5.3,
dkjson,,,,,,
fennel,,,,,,misterio77
ferris.nvim,,,,,,mrcjkb
fifo,,,,,,
fluent,,,,,,alerque
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
@ -101,6 +100,7 @@ plenary.nvim,https://github.com/nvim-lua/plenary.nvim.git,,,,5.1,
rapidjson,https://github.com/xpol/lua-rapidjson.git,,,,,
rest.nvim,,,,,5.1,teto
readline,,,,,,
rustaceanvim,,,,,,mrcjkb
say,https://github.com/Olivine-Labs/say.git,,,,,
serpent,,,,,,lockejan
sqlite,,,,,,

1 name src ref server version luaversion maintainers
16 digestif https://github.com/astoff/digestif.git 0.2-1 5.3
17 dkjson
18 fennel misterio77
ferris.nvim mrcjkb
19 fifo
20 fluent alerque
21 gitsigns.nvim https://github.com/lewis6991/gitsigns.nvim.git 5.1
100 rapidjson https://github.com/xpol/lua-rapidjson.git
101 rest.nvim 5.1 teto
102 readline
103 rustaceanvim mrcjkb
104 say https://github.com/Olivine-Labs/say.git
105 serpent lockejan
106 sqlite

View File

@ -121,6 +121,8 @@
- [Soft Serve](https://github.com/charmbracelet/soft-serve), a tasty, self-hostable Git server for the command line. Available as [services.soft-serve](#opt-services.soft-serve.enable).
- [Rosenpass](https://rosenpass.eu/), a service for post-quantum-secure VPNs with WireGuard. Available as [services.rosenpass](#opt-services.rosenpass.enable).
## Backward Incompatibilities {#sec-release-23.11-incompatibilities}
- `network-online.target` has been fixed to no longer time out for systems with `networking.useDHCP = true` and `networking.useNetworkd = true`.
@ -313,6 +315,8 @@
- `rome` was removed because it is no longer maintained and is succeeded by `biome`.
- The `prometheus-knot-exporter` was migrated to a version maintained by CZ.NIC. Various metric names have changed, so checking existing rules is recommended.
- The `services.mtr-exporter.target` has been removed in favor of `services.mtr-exporter.jobs` which allows specifying multiple targets.
- Setting `nixpkgs.config` options while providing an external `pkgs` instance will now raise an error instead of silently ignoring the options. NixOS modules no longer set `nixpkgs.config` to accomodate this. This specifically affects `services.locate`, `services.xserver.displayManager.lightdm.greeters.tiny` and `programs.firefox` NixOS modules. No manual intervention should be required in most cases, however, configurations relying on those modules affecting packages outside the system environment should switch to explicit overlays.

View File

@ -1,15 +1,22 @@
{ lib, stdenv, squashfsTools, closureInfo
, fileName ? "squashfs"
, # The root directory of the squashfs filesystem is filled with the
# closures of the Nix store paths listed here.
storeContents ? []
# Pseudo files to be added to squashfs image
, pseudoFiles ? []
, noStrip ? false
, # Compression parameters.
# For zstd compression you can use "zstd -Xcompression-level 6".
comp ? "xz -Xdict-size 100%"
}:
let
pseudoFilesArgs = lib.concatMapStrings (f: ''-p "${f}" '') pseudoFiles;
in
stdenv.mkDerivation {
name = "squashfs.img";
name = "${fileName}.img";
__structuredAttrs = true;
nativeBuildInputs = [ squashfsTools ];
@ -31,8 +38,8 @@ stdenv.mkDerivation {
'' + ''
# Generate the squashfs image.
mksquashfs nix-path-registration $(cat $closureInfo/store-paths) $out \
-no-hardlinks -keep-as-directory -all-root -b 1048576 -comp ${comp} \
mksquashfs nix-path-registration $(cat $closureInfo/store-paths) $out ${pseudoFilesArgs} \
-no-hardlinks ${lib.optionalString noStrip "-no-strip"} -keep-as-directory -all-root -b 1048576 -comp ${comp} \
-processors $NIX_BUILD_CORES
'';
}

View File

@ -1047,6 +1047,7 @@
./services/networking/redsocks.nix
./services/networking/resilio.nix
./services/networking/robustirc-bridge.nix
./services/networking/rosenpass.nix
./services/networking/routedns.nix
./services/networking/rpcbind.nix
./services/networking/rxe.nix

View File

@ -27,6 +27,6 @@ with lib;
"opt/brave/native-messaging-hosts/${appId}".source = source "hosts/chromium";
"opt/brave/policies/managed/${appId}".source = source "policies/chromium";
};
programs.firefox.wrapperConfig.enableBrowserpass = true;
programs.firefox.nativeMessagingHosts.packages = [ pkgs.browserpass ];
};
}

View File

@ -5,8 +5,6 @@ with lib;
let
cfg = config.programs.firefox;
nmh = cfg.nativeMessagingHosts;
policyFormat = pkgs.formats.json { };
organisationInfo = ''
@ -17,6 +15,50 @@ let
given control of your browser, unless of course they also control your
NixOS configuration.
'';
# deprecated per-native-messaging-host options
nmhOptions = {
browserpass = {
name = "Browserpass";
package = pkgs.browserpass;
};
bukubrow = {
name = "Bukubrow";
package = pkgs.bukubrow;
};
euwebid = {
name = "Web eID";
package = pkgs.web-eid-app;
};
ff2mpv = {
name = "ff2mpv";
package = pkgs.ff2mpv;
};
fxCast = {
name = "fx_cast";
package = pkgs.fx-cast-bridge;
};
gsconnect = {
name = "GSConnect";
package = pkgs.gnomeExtensions.gsconnect;
};
jabref = {
name = "JabRef";
package = pkgs.jabref;
};
passff = {
name = "PassFF";
package = pkgs.passff-host;
};
tridactyl = {
name = "Tridactyl";
package = pkgs.tridactyl-native;
};
ugetIntegrator = {
name = "Uget Integrator";
package = pkgs.uget-integrator;
};
};
in
{
options.programs.firefox = {
@ -204,46 +246,31 @@ in
'';
};
nativeMessagingHosts = mapAttrs (_: v: mkEnableOption (mdDoc v)) {
browserpass = "Browserpass support";
bukubrow = "Bukubrow support";
euwebid = "Web eID support";
ff2mpv = "ff2mpv support";
fxCast = "fx_cast support";
gsconnect = "GSConnect support";
jabref = "JabRef support";
passff = "PassFF support";
tridactyl = "Tridactyl support";
ugetIntegrator = "Uget Integrator support";
};
nativeMessagingHosts = ({
packages = mkOption {
type = types.listOf types.package;
default = [];
description = mdDoc ''
Additional packages containing native messaging hosts that should be made available to Firefox extensions.
'';
};
}) // (mapAttrs (k: v: mkEnableOption (mdDoc "${v.name} support")) nmhOptions);
};
config = mkIf cfg.enable {
config = let
forEachEnabledNmh = fn: flatten (mapAttrsToList (k: v: lib.optional cfg.nativeMessagingHosts.${k} (fn k v)) nmhOptions);
in mkIf cfg.enable {
warnings = forEachEnabledNmh (k: v:
"The `programs.firefox.nativeMessagingHosts.${k}` option is deprecated, " +
"please add `${v.package.pname}` to `programs.firefox.nativeMessagingHosts.packages` instead."
);
programs.firefox.nativeMessagingHosts.packages = forEachEnabledNmh (_: v: v.package);
environment.systemPackages = [
(cfg.package.override (old: {
extraPrefs = cfg.autoConfig;
extraNativeMessagingHosts =
old.extraNativeMessagingHosts or []
++ optional nmh.ff2mpv pkgs.ff2mpv
++ optional nmh.euwebid pkgs.web-eid-app
++ optional nmh.gsconnect pkgs.gnomeExtensions.gsconnect
++ optional nmh.jabref pkgs.jabref
++ optional nmh.passff pkgs.passff-host;
cfg = let
# copy-pasted from the wrapper; TODO: figure out fix
applicationName = cfg.package.binaryName or (lib.getName cfg.package);
oldCfg = old.cfg or {};
nixpkgsConfig = pkgs.config.${applicationName} or {};
optionConfig = cfg.wrapperConfig;
nmhConfig = {
enableBrowserpass = nmh.browserpass;
enableBukubrow = nmh.bukubrow;
enableTridactylNative = nmh.tridactyl;
enableUgetIntegrator = nmh.ugetIntegrator;
enableFXCastBridge = nmh.fxCast;
};
in oldCfg // nixpkgsConfig // optionConfig // nmhConfig;
extraPrefsFiles = old.extraPrefsFiles or [] ++ [(pkgs.writeText "firefox-autoconfig.js" cfg.autoConfig)];
nativeMessagingHosts = old.nativeMessagingHosts or [] ++ cfg.nativeMessagingHosts.packages;
cfg = (old.cfg or {}) // cfg.wrapperConfig;
}))
];

View File

@ -15,16 +15,16 @@ let
Client {
Name = "${fd_cfg.name}";
FDPort = ${toString fd_cfg.port};
WorkingDirectory = "${libDir}";
Pid Directory = "/run";
WorkingDirectory = ${libDir};
Pid Directory = /run;
${fd_cfg.extraClientConfig}
}
${concatStringsSep "\n" (mapAttrsToList (name: value: ''
Director {
Name = "${name}";
Password = "${value.password}";
Monitor = "${value.monitor}";
Password = ${value.password};
Monitor = ${value.monitor};
}
'') fd_cfg.director)}
@ -41,8 +41,8 @@ let
Storage {
Name = "${sd_cfg.name}";
SDPort = ${toString sd_cfg.port};
WorkingDirectory = "${libDir}";
Pid Directory = "/run";
WorkingDirectory = ${libDir};
Pid Directory = /run;
${sd_cfg.extraStorageConfig}
}
@ -50,8 +50,8 @@ let
Autochanger {
Name = "${name}";
Device = ${concatStringsSep ", " (map (a: "\"${a}\"") value.devices)};
Changer Device = "${value.changerDevice}";
Changer Command = "${value.changerCommand}";
Changer Device = ${value.changerDevice};
Changer Command = ${value.changerCommand};
${value.extraAutochangerConfig}
}
'') sd_cfg.autochanger)}
@ -59,8 +59,8 @@ let
${concatStringsSep "\n" (mapAttrsToList (name: value: ''
Device {
Name = "${name}";
Archive Device = "${value.archiveDevice}";
Media Type = "${value.mediaType}";
Archive Device = ${value.archiveDevice};
Media Type = ${value.mediaType};
${value.extraDeviceConfig}
}
'') sd_cfg.device)}
@ -68,8 +68,8 @@ let
${concatStringsSep "\n" (mapAttrsToList (name: value: ''
Director {
Name = "${name}";
Password = "${value.password}";
Monitor = "${value.monitor}";
Password = ${value.password};
Monitor = ${value.monitor};
}
'') sd_cfg.director)}
@ -85,18 +85,18 @@ let
''
Director {
Name = "${dir_cfg.name}";
Password = "${dir_cfg.password}";
Password = ${dir_cfg.password};
DirPort = ${toString dir_cfg.port};
Working Directory = "${libDir}";
Pid Directory = "/run/";
QueryFile = "${pkgs.bacula}/etc/query.sql";
Working Directory = ${libDir};
Pid Directory = /run/;
QueryFile = ${pkgs.bacula}/etc/query.sql;
${dir_cfg.extraDirectorConfig}
}
Catalog {
Name = "PostgreSQL";
dbname = "bacula";
user = "bacula";
Name = PostgreSQL;
dbname = bacula;
user = bacula;
}
Messages {
@ -533,7 +533,7 @@ in {
};
};
services.postgresql.enable = dir_cfg.enable == true;
services.postgresql.enable = lib.mkIf dir_cfg.enable true;
systemd.services.bacula-dir = mkIf dir_cfg.enable {
after = [ "network.target" "postgresql.service" ];

View File

@ -30,7 +30,7 @@ in
};
description = ''
Additional configuration for FerretDB, see
<https://docs.ferretdb.io/flags/>
<https://docs.ferretdb.io/configuration/flags/>
for supported values.
'';
};

View File

@ -42,6 +42,6 @@ in
services.dbus.packages = [ pkgs.gnome-browser-connector ];
programs.firefox.wrapperConfig.enableGnomeExtensions = true;
programs.firefox.nativeMessagingHosts.packages = [ pkgs.gnome-browser-connector ];
};
}

View File

@ -60,7 +60,6 @@ let
++ lib.optional (cfg.settings ? oidc_providers) "oidc"
++ lib.optional (cfg.settings ? jwt_config) "jwt"
++ lib.optional (cfg.settings ? saml2_config) "saml2"
++ lib.optional (cfg.settings ? opentracing) "opentracing"
++ lib.optional (cfg.settings ? redis) "redis"
++ lib.optional (cfg.settings ? sentry) "sentry"
++ lib.optional (cfg.settings ? user_directory) "user-search"
@ -334,7 +333,6 @@ in {
[
"cache-memory" # Provide statistics about caching memory consumption
"jwt" # JSON Web Token authentication
"opentracing" # End-to-end tracing support using Jaeger
"oidc" # OpenID Connect authentication
"postgres" # PostgreSQL database backend
"redis" # Redis support for the replication stream between worker processes

View File

@ -8,9 +8,9 @@ in {
port = 9433;
extraOpts = {
knotLibraryPath = mkOption {
type = types.str;
default = "${pkgs.knot-dns.out}/lib/libknot.so";
defaultText = literalExpression ''"''${pkgs.knot-dns.out}/lib/libknot.so"'';
type = types.nullOr types.str;
default = null;
example = literalExpression ''"''${pkgs.knot-dns.out}/lib/libknot.so"'';
description = lib.mdDoc ''
Path to the library of `knot-dns`.
'';
@ -25,7 +25,7 @@ in {
};
knotSocketTimeout = mkOption {
type = types.int;
type = types.ints.positive;
default = 2000;
description = lib.mdDoc ''
Timeout in seconds.
@ -33,17 +33,22 @@ in {
};
};
serviceOpts = {
path = with pkgs; [
procps
];
serviceConfig = {
ExecStart = ''
${pkgs.prometheus-knot-exporter}/bin/knot_exporter \
${pkgs.prometheus-knot-exporter}/bin/knot-exporter \
--web-listen-addr ${cfg.listenAddress} \
--web-listen-port ${toString cfg.port} \
--knot-library-path ${cfg.knotLibraryPath} \
--knot-socket-path ${cfg.knotSocketPath} \
--knot-socket-timeout ${toString cfg.knotSocketTimeout} \
${lib.optionalString (cfg.knotLibraryPath != null) "--knot-library-path ${cfg.knotLibraryPath}"} \
${concatStringsSep " \\\n " cfg.extraFlags}
'';
SupplementaryGroups = [ "knot" ];
SupplementaryGroups = [
"knot"
];
RestrictAddressFamilies = [
# Need AF_UNIX to collect data
"AF_UNIX"

View File

@ -0,0 +1,233 @@
{ config
, lib
, options
, pkgs
, ...
}:
let
inherit (lib)
attrValues
concatLines
concatMap
filter
filterAttrsRecursive
flatten
getExe
mdDoc
mkIf
optional
;
cfg = config.services.rosenpass;
opt = options.services.rosenpass;
settingsFormat = pkgs.formats.toml { };
in
{
options.services.rosenpass =
let
inherit (lib)
literalExpression
mdDoc
mkOption
;
inherit (lib.types)
enum
listOf
nullOr
path
str
submodule
;
in
{
enable = lib.mkEnableOption (mdDoc "Rosenpass");
package = lib.mkPackageOption pkgs "rosenpass" { };
defaultDevice = mkOption {
type = nullOr str;
description = mdDoc "Name of the network interface to use for all peers by default.";
example = "wg0";
};
settings = mkOption {
type = submodule {
freeformType = settingsFormat.type;
options = {
public_key = mkOption {
type = path;
description = mdDoc "Path to a file containing the public key of the local Rosenpass peer. Generate this by running {command}`rosenpass gen-keys`.";
};
secret_key = mkOption {
type = path;
description = mdDoc "Path to a file containing the secret key of the local Rosenpass peer. Generate this by running {command}`rosenpass gen-keys`.";
};
listen = mkOption {
type = listOf str;
description = mdDoc "List of local endpoints to listen for connections.";
default = [ ];
example = literalExpression "[ \"0.0.0.0:10000\" ]";
};
verbosity = mkOption {
type = enum [ "Verbose" "Quiet" ];
default = "Quiet";
description = mdDoc "Verbosity of output produced by the service.";
};
peers =
let
peer = submodule {
freeformType = settingsFormat.type;
options = {
public_key = mkOption {
type = path;
description = mdDoc "Path to a file containing the public key of the remote Rosenpass peer.";
};
endpoint = mkOption {
type = nullOr str;
default = null;
description = mdDoc "Endpoint of the remote Rosenpass peer.";
};
device = mkOption {
type = str;
default = cfg.defaultDevice;
defaultText = literalExpression "config.${opt.defaultDevice}";
description = mdDoc "Name of the local WireGuard interface to use for this peer.";
};
peer = mkOption {
type = str;
description = mdDoc "WireGuard public key corresponding to the remote Rosenpass peer.";
};
};
};
in
mkOption {
type = listOf peer;
description = mdDoc "List of peers to exchange keys with.";
default = [ ];
};
};
};
default = { };
description = mdDoc "Configuration for Rosenpass, see <https://rosenpass.eu/> for further information.";
};
};
config = mkIf cfg.enable {
warnings =
let
# NOTE: In the descriptions below, we tried to refer to e.g.
# options.systemd.network.netdevs."<name>".wireguardPeers.*.PublicKey
# directly, but don't know how to traverse "<name>" and * in this path.
extractions = [
{
relevant = config.systemd.network.enable;
root = config.systemd.network.netdevs;
peer = (x: x.wireguardPeers);
key = (x: if x.wireguardPeerConfig ? PublicKey then x.wireguardPeerConfig.PublicKey else null);
description = mdDoc "${options.systemd.network.netdevs}.\"<name>\".wireguardPeers.*.wireguardPeerConfig.PublicKey";
}
{
relevant = config.networking.wireguard.enable;
root = config.networking.wireguard.interfaces;
peer = (x: x.peers);
key = (x: x.publicKey);
description = mdDoc "${options.networking.wireguard.interfaces}.\"<name>\".peers.*.publicKey";
}
rec {
relevant = root != { };
root = config.networking.wg-quick.interfaces;
peer = (x: x.peers);
key = (x: x.publicKey);
description = mdDoc "${options.networking.wg-quick.interfaces}.\"<name>\".peers.*.publicKey";
}
];
relevantExtractions = filter (x: x.relevant) extractions;
extract = { root, peer, key, ... }:
filter (x: x != null) (flatten (concatMap (x: (map key (peer x))) (attrValues root)));
configuredKeys = flatten (map extract relevantExtractions);
itemize = xs: concatLines (map (x: " - ${x}") xs);
descriptions = map (x: "`${x.description}`");
missingKeys = filter (key: !builtins.elem key configuredKeys) (map (x: x.peer) cfg.settings.peers);
unusual = ''
While this may work as expected, e.g. you want to manually configure WireGuard,
such a scenario is unusual. Please double-check your configuration.
'';
in
(optional (relevantExtractions != [ ] && missingKeys != [ ]) ''
You have configured Rosenpass peers with the WireGuard public keys:
${itemize missingKeys}
But there is no corresponding active Wireguard peer configuration in any of:
${itemize (descriptions relevantExtractions)}
${unusual}
'')
++
optional (relevantExtractions == [ ]) ''
You have configured Rosenpass, but you have not configured Wireguard via any of:
${itemize (descriptions extractions)}
${unusual}
'';
environment.systemPackages = [ cfg.package pkgs.wireguard-tools ];
systemd.services.rosenpass =
let
filterNonNull = filterAttrsRecursive (_: v: v != null);
config = settingsFormat.generate "config.toml" (
filterNonNull (cfg.settings
//
(
let
credentialPath = id: "$CREDENTIALS_DIRECTORY/${id}";
# NOTE: We would like to remove all `null` values inside `cfg.settings`
# recursively, since `settingsFormat.generate` cannot handle `null`.
# This would require to traverse both attribute sets and lists recursively.
# `filterAttrsRecursive` only recurses into attribute sets, but not
# into values that might contain other attribute sets (such as lists,
# e.g. `cfg.settings.peers`). Here, we just specialize on `cfg.settings.peers`,
# and this may break unexpectedly whenever a `null` value is contained
# in a list in `cfg.settings`, other than `cfg.settings.peers`.
peersWithoutNulls = map filterNonNull cfg.settings.peers;
in
{
secret_key = credentialPath "pqsk";
public_key = credentialPath "pqpk";
peers = peersWithoutNulls;
}
)
)
);
in
rec {
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
path = [ cfg.package pkgs.wireguard-tools ];
serviceConfig = {
User = "rosenpass";
Group = "rosenpass";
RuntimeDirectory = "rosenpass";
DynamicUser = true;
AmbientCapabilities = [ "CAP_NET_ADMIN" ];
LoadCredential = [
"pqsk:${cfg.settings.secret_key}"
"pqpk:${cfg.settings.public_key}"
];
};
# See <https://www.freedesktop.org/software/systemd/man/systemd.unit.html#Specifiers>
environment.CONFIG = "%t/${serviceConfig.RuntimeDirectory}/config.toml";
preStart = "${getExe pkgs.envsubst} -i ${config} -o \"$CONFIG\"";
script = "rosenpass exchange-config \"$CONFIG\"";
};
};
}

View File

@ -35,7 +35,10 @@ with lib;
};
port = mkOption {
type = types.nullOr port;
description = lib.mdDoc "Port number.";
description = lib.mdDoc ''
Port number to listen on.
If unset and the listen address is not a socket then nginx defaults to 80.
'';
default = null;
};
ssl = mkOption {

View File

@ -379,7 +379,7 @@ in
# Update the start menu for each user that is currently logged in
system.userActivationScripts.plasmaSetup = activationScript;
programs.firefox.wrapperConfig.enablePlasmaBrowserIntegration = true;
programs.firefox.nativeMessagingHosts.packages = [ pkgs.plasma5Packages.plasma-browser-integration ];
})
(mkIf (cfg.kwinrc != {}) {

View File

@ -49,7 +49,7 @@ let
'';
};
checkedSystemdBootBuilder = pkgs.runCommandLocal "systemd-boot" {
checkedSystemdBootBuilder = pkgs.runCommand "systemd-boot" {
nativeBuildInputs = [ pkgs.mypy ];
} ''
install -m755 ${systemdBootBuilder} $out

View File

@ -37,7 +37,6 @@ in {
${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
'';
# TODO: build rootfs as squashfs for faster unpack
system.build.tarball = pkgs.callPackage ../../lib/make-system-tarball.nix {
extraArgs = "--owner=0";
@ -64,6 +63,23 @@ in {
extraCommands = "mkdir -p proc sys dev";
};
system.build.squashfs = pkgs.callPackage ../../lib/make-squashfs.nix {
fileName = "nixos-lxc-image-${pkgs.stdenv.hostPlatform.system}";
noStrip = true; # keep directory structure
comp = "zstd -Xcompression-level 6";
storeContents = [config.system.build.toplevel];
pseudoFiles = [
"/sbin d 0755 0 0"
"/sbin/init s 0555 0 0 ${config.system.build.toplevel}/init"
"/dev d 0755 0 0"
"/proc d 0555 0 0"
"/sys d 0555 0 0"
];
};
system.build.installBootLoader = pkgs.writeScript "install-lxd-sbin-init.sh" ''
#!${pkgs.runtimeShell}
${pkgs.coreutils}/bin/ln -fs "$1/init" /sbin/init

View File

@ -198,6 +198,39 @@ let
fi
''}
${lib.optionalString cfg.tpm.enable ''
NIX_SWTPM_DIR=$(readlink -f "''${NIX_SWTPM_DIR:-${config.system.name}-swtpm}")
mkdir -p "$NIX_SWTPM_DIR"
${lib.getExe cfg.tpm.package} \
socket \
--tpmstate dir="$NIX_SWTPM_DIR" \
--ctrl type=unixio,path="$NIX_SWTPM_DIR"/socket,terminate \
--pid file="$NIX_SWTPM_DIR"/pid --daemon \
--tpm2 \
--log file="$NIX_SWTPM_DIR"/stdout,level=6
# Enable `fdflags` builtin in Bash
# We will need it to perform surgical modification of the file descriptor
# passed in the coprocess to remove `FD_CLOEXEC`, i.e. close the file descriptor
# on exec.
# If let alone, it will trigger the coprocess to read EOF when QEMU is `exec`
# at the end of this script. To work around that, we will just clear
# the `FD_CLOEXEC` bits as a first step.
enable -f ${hostPkgs.bash}/lib/bash/fdflags fdflags
# leave a dangling subprocess because the swtpm ctrl socket has
# "terminate" when the last connection disconnects, it stops swtpm.
# When qemu stops, or if the main shell process ends, the coproc will
# get signaled by virtue of the pipe between main and coproc ending.
# Which in turns triggers a socat connect-disconnect to swtpm which
# will stop it.
coproc waitingswtpm {
read || :
echo "" | ${lib.getExe hostPkgs.socat} STDIO UNIX-CONNECT:"$NIX_SWTPM_DIR"/socket
}
# Clear `FD_CLOEXEC` on the coprocess' file descriptor stdin.
fdflags -s-cloexec ''${waitingswtpm[1]}
''}
cd "$TMPDIR"
${lib.optionalString (cfg.emptyDiskImages != []) "idx=0"}
@ -863,6 +896,32 @@ in
};
};
virtualisation.tpm = {
enable = mkEnableOption "a TPM device in the virtual machine with a driver, using swtpm.";
package = mkPackageOptionMD cfg.host.pkgs "swtpm" { };
deviceModel = mkOption {
type = types.str;
default = ({
"i686-linux" = "tpm-tis";
"x86_64-linux" = "tpm-tis";
"ppc64-linux" = "tpm-spapr";
"armv7-linux" = "tpm-tis-device";
"aarch64-linux" = "tpm-tis-device";
}.${pkgs.hostPlatform.system} or (throw "Unsupported system for TPM2 emulation in QEMU"));
defaultText = ''
Based on the guest platform Linux system:
- `tpm-tis` for (i686, x86_64)
- `tpm-spapr` for ppc64
- `tpm-tis-device` for (armv7, aarch64)
'';
example = "tpm-tis-device";
description = lib.mdDoc "QEMU device model for the TPM, uses the appropriate default based on th guest platform system and the package passed.";
};
};
virtualisation.useDefaultFilesystems =
mkOption {
type = types.bool;
@ -1028,7 +1087,8 @@ in
boot.initrd.availableKernelModules =
optional cfg.writableStore "overlay"
++ optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx";
++ optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx"
++ optional (cfg.tpm.enable) "tpm_tis";
virtualisation.additionalPaths = [ config.system.build.toplevel ];
@ -1099,6 +1159,11 @@ in
(mkIf (!cfg.graphics) [
"-nographic"
])
(mkIf (cfg.tpm.enable) [
"-chardev socket,id=chrtpm,path=\"$NIX_SWTPM_DIR\"/socket"
"-tpmdev emulator,id=tpm_dev_0,chardev=chrtpm"
"-device ${cfg.tpm.deviceModel},tpmdev=tpm_dev_0"
])
];
virtualisation.qemu.drives = mkMerge [

View File

@ -97,6 +97,8 @@ in rec {
(onSystems ["x86_64-linux"] "nixos.tests.installer.simpleUefiSystemdBoot")
(onSystems ["x86_64-linux"] "nixos.tests.installer.simple")
(onSystems ["x86_64-linux"] "nixos.tests.installer.swraid")
(onSystems ["x86_64-linux"] "nixos.tests.nixos-rebuild-install-bootloader")
(onSystems ["x86_64-linux"] "nixos.tests.nixos-rebuild-specialisations")
(onFullSupported "nixos.tests.ipv6")
(onFullSupported "nixos.tests.keymap.azerty")
(onFullSupported "nixos.tests.keymap.colemak")
@ -163,7 +165,6 @@ in rec {
(onFullSupported "nixos.tests.switchTest")
(onFullSupported "nixos.tests.udisks2")
(onFullSupported "nixos.tests.xfce")
(onSystems ["i686-linux"] "nixos.tests.zfs.installer")
(onFullSupported "nixpkgs.emacs")
(onFullSupported "nixpkgs.jdk")
["nixpkgs.tarball"]

View File

@ -328,6 +328,21 @@ in rec {
);
lxdContainerImageSquashfs = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system:
with import ./.. { inherit system; };
hydraJob ((import lib/eval-config.nix {
inherit system;
modules =
[ configuration
versionModule
./maintainers/scripts/lxd/lxd-container-image.nix
];
}).config.system.build.squashfs)
);
# Metadata for the lxd image
lxdContainerMeta = forMatchingSystems [ "x86_64-linux" "aarch64-linux" ] (system:

View File

@ -569,7 +569,8 @@ in {
nix-serve-ssh = handleTest ./nix-serve-ssh.nix {};
nixops = handleTest ./nixops/default.nix {};
nixos-generate-config = handleTest ./nixos-generate-config.nix {};
nixos-rebuild-specialisations = handleTest ./nixos-rebuild-specialisations.nix {};
nixos-rebuild-install-bootloader = handleTestOn ["x86_64-linux"] ./nixos-rebuild-install-bootloader.nix {};
nixos-rebuild-specialisations = handleTestOn ["x86_64-linux"] ./nixos-rebuild-specialisations.nix {};
nixpkgs = pkgs.callPackage ../modules/misc/nixpkgs/test.nix { inherit evalMinimalConfig; };
node-red = handleTest ./node-red.nix {};
nomad = handleTest ./nomad.nix {};
@ -702,6 +703,7 @@ in {
rkvm = handleTest ./rkvm {};
robustirc-bridge = handleTest ./robustirc-bridge.nix {};
roundcube = handleTest ./roundcube.nix {};
rosenpass = handleTest ./rosenpass.nix {};
rshim = handleTest ./rshim.nix {};
rspamd = handleTest ./rspamd.nix {};
rss2email = handleTest ./rss2email.nix {};

View File

@ -50,7 +50,8 @@ import ./make-test-python.nix (
options = Options()
options.add_argument("--headless")
driver = webdriver.Firefox(options=options)
service = webdriver.FirefoxService(executable_path="${lib.getExe pkgs.geckodriver}") # noqa: E501
driver = webdriver.Firefox(options=options, service=service)
driver.implicitly_wait(10)

View File

@ -1,14 +1,7 @@
import ./make-test-python.nix ({ pkgs, firefoxPackage, ... }:
let firefoxPackage' = firefoxPackage.override (args: {
extraPrefsFiles = (args.extraPrefsFiles or []) ++ [
# make sure that autoplay is enabled by default for the audio test
(builtins.toString (builtins.toFile "autoplay-pref.js" ''defaultPref("media.autoplay.default",0);''))
];
});
in
{
name = firefoxPackage'.unwrapped.pname;
name = firefoxPackage.pname;
meta = with pkgs.lib.maintainers; {
maintainers = [ eelco shlevy ];
};
@ -17,10 +10,13 @@ in
{ pkgs, ... }:
{ imports = [ ./common/x11.nix ];
environment.systemPackages = [
firefoxPackage'
pkgs.xdotool
];
environment.systemPackages = [ pkgs.xdotool ];
programs.firefox = {
enable = true;
preferences."media.autoplay.default" = 0;
package = firefoxPackage;
};
# Create a virtual sound device, with mixing
# and all, for recording audio.
@ -58,7 +54,9 @@ in
};
testScript = ''
testScript = let
exe = firefoxPackage.unwrapped.binaryName;
in ''
from contextlib import contextmanager
@ -97,7 +95,7 @@ in
with subtest("Wait until Firefox has finished loading the Valgrind docs page"):
machine.execute(
"xterm -e '${firefoxPackage'.unwrapped.binaryName} file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html' >&2 &"
"xterm -e '${exe} file://${pkgs.valgrind.doc}/share/doc/valgrind/html/index.html' >&2 &"
)
machine.wait_for_window("Valgrind")
machine.sleep(40)
@ -105,7 +103,7 @@ in
with subtest("Check whether Firefox can play sound"):
with record_audio(machine):
machine.succeed(
"${firefoxPackage'.unwrapped.binaryName} file://${pkgs.sound-theme-freedesktop}/share/sounds/freedesktop/stereo/phone-incoming-call.oga >&2 &"
"${exe} file://${pkgs.sound-theme-freedesktop}/share/sounds/freedesktop/stereo/phone-incoming-call.oga >&2 &"
)
wait_for_sound(machine)
machine.copy_from_vm("/tmp/record.wav")

View File

@ -13,6 +13,7 @@ let
lxd-image-metadata = releases.lxdContainerMeta.${pkgs.stdenv.hostPlatform.system};
lxd-image-rootfs = releases.lxdContainerImage.${pkgs.stdenv.hostPlatform.system};
lxd-image-rootfs-squashfs = releases.lxdContainerImageSquashfs.${pkgs.stdenv.hostPlatform.system};
in {
name = "lxd-container";
@ -23,7 +24,7 @@ in {
nodes.machine = { lib, ... }: {
virtualisation = {
diskSize = 4096;
diskSize = 6144;
# Since we're testing `limits.cpu`, we've gotta have a known number of
# cores to lean on
@ -65,6 +66,16 @@ in {
machine.succeed("echo true | lxc exec container /run/current-system/sw/bin/bash -")
machine.succeed("lxc delete -f container")
with subtest("Squashfs image is functional"):
machine.succeed(
"lxc image import ${lxd-image-metadata}/*/*.tar.xz ${lxd-image-rootfs-squashfs} --alias nixos-squashfs"
)
machine.succeed("lxc launch nixos-squashfs container")
with machine.nested("Waiting for instance to start and be usable"):
retry(instance_is_up)
machine.succeed("echo true | lxc exec container /run/current-system/sw/bin/bash -")
machine.succeed("lxc delete -f container")
with subtest("Container is mounted with lxcfs inside"):
machine.succeed("lxc launch nixos container")
with machine.nested("Waiting for instance to start and be usable"):

View File

@ -0,0 +1,73 @@
import ./make-test-python.nix ({ pkgs, ... }: {
name = "nixos-rebuild-install-bootloader";
nodes = {
machine = { lib, pkgs, ... }: {
imports = [
../modules/profiles/installation-device.nix
../modules/profiles/base.nix
];
nix.settings = {
substituters = lib.mkForce [ ];
hashed-mirrors = null;
connect-timeout = 1;
};
system.includeBuildDependencies = true;
virtualisation = {
cores = 2;
memorySize = 2048;
};
virtualisation.useBootLoader = true;
};
};
testScript =
let
configFile = pkgs.writeText "configuration.nix" ''
{ lib, pkgs, ... }: {
imports = [
./hardware-configuration.nix
<nixpkgs/nixos/modules/testing/test-instrumentation.nix>
];
boot.loader.grub = {
enable = true;
device = "/dev/vda";
forceInstall = true;
};
documentation.enable = false;
}
'';
in
''
machine.start()
machine.succeed("udevadm settle")
machine.wait_for_unit("multi-user.target")
machine.succeed("nixos-generate-config")
machine.copy_from_host(
"${configFile}",
"/etc/nixos/configuration.nix",
)
machine.succeed("nixos-rebuild switch")
# Need to run `nixos-rebuild` twice because the first run will install
# GRUB anyway
with subtest("Switch system again and install bootloader"):
result = machine.succeed("nixos-rebuild switch --install-bootloader")
# install-grub2.pl messages
assert "updating GRUB 2 menu..." in result
assert "installing the GRUB 2 boot loader on /dev/vda..." in result
# GRUB message
assert "Installation finished. No error reported." in result
# at this point we've tested regression #262724, but haven't tested the bootloader itself
# TODO: figure out how to how to tell the test driver to start the bootloader instead of
# booting into the kernel directly.
'';
})

View File

@ -512,7 +512,7 @@ let
wait_for_unit("knot.service")
wait_for_unit("prometheus-knot-exporter.service")
wait_for_open_port(9433)
succeed("curl -sSf 'localhost:9433' | grep 'knot_server_zone_count 1.0'")
succeed("curl -sSf 'localhost:9433' | grep '2\.019031301'")
'';
};

217
nixos/tests/rosenpass.nix Normal file
View File

@ -0,0 +1,217 @@
import ./make-test-python.nix ({ pkgs, ... }:
let
deviceName = "rp0";
server = {
ip = "fe80::1";
wg = {
public = "mQufmDFeQQuU/fIaB2hHgluhjjm1ypK4hJr1cW3WqAw=";
secret = "4N5Y1dldqrpsbaEiY8O0XBUGUFf8vkvtBtm8AoOX7Eo=";
listen = 10000;
};
};
client = {
ip = "fe80::2";
wg = {
public = "Mb3GOlT7oS+F3JntVKiaD7SpHxLxNdtEmWz/9FMnRFU=";
secret = "uC5dfGMv7Oxf5UDfdPkj6rZiRZT2dRWp5x8IQxrNcUE=";
};
};
in
{
name = "rosenpass";
nodes =
let
shared = peer: { config, modulesPath, ... }: {
imports = [ "${modulesPath}/services/networking/rosenpass.nix" ];
boot.kernelModules = [ "wireguard" ];
services.rosenpass = {
enable = true;
defaultDevice = deviceName;
settings = {
verbosity = "Verbose";
public_key = "/etc/rosenpass/pqpk";
secret_key = "/etc/rosenpass/pqsk";
};
};
networking.firewall.allowedUDPPorts = [ 9999 ];
systemd.network = {
enable = true;
networks."rosenpass" = {
matchConfig.Name = deviceName;
networkConfig.IPForward = true;
address = [ "${peer.ip}/64" ];
};
netdevs."10-rp0" = {
netdevConfig = {
Kind = "wireguard";
Name = deviceName;
};
wireguardConfig.PrivateKeyFile = "/etc/wireguard/wgsk";
};
};
environment.etc."wireguard/wgsk" = {
text = peer.wg.secret;
user = "systemd-network";
group = "systemd-network";
};
};
in
{
server = {
imports = [ (shared server) ];
networking.firewall.allowedUDPPorts = [ server.wg.listen ];
systemd.network.netdevs."10-${deviceName}" = {
wireguardConfig.ListenPort = server.wg.listen;
wireguardPeers = [
{
wireguardPeerConfig = {
AllowedIPs = [ "::/0" ];
PublicKey = client.wg.public;
};
}
];
};
services.rosenpass.settings = {
listen = [ "0.0.0.0:9999" ];
peers = [
{
public_key = "/etc/rosenpass/peers/client/pqpk";
peer = client.wg.public;
}
];
};
};
client = {
imports = [ (shared client) ];
systemd.network.netdevs."10-${deviceName}".wireguardPeers = [
{
wireguardPeerConfig = {
AllowedIPs = [ "::/0" ];
PublicKey = server.wg.public;
Endpoint = "server:${builtins.toString server.wg.listen}";
};
}
];
services.rosenpass.settings.peers = [
{
public_key = "/etc/rosenpass/peers/server/pqpk";
endpoint = "server:9999";
peer = server.wg.public;
}
];
};
};
testScript = { ... }: ''
from os import system
# Full path to rosenpass in the store, to avoid fiddling with `$PATH`.
rosenpass = "${pkgs.rosenpass}/bin/rosenpass"
# Path in `/etc` where keys will be placed.
etc = "/etc/rosenpass"
start_all()
for machine in [server, client]:
machine.wait_for_unit("multi-user.target")
# Gently stop Rosenpass to avoid crashes during key generation/distribution.
for machine in [server, client]:
machine.execute("systemctl stop rosenpass.service")
for (name, machine, remote) in [("server", server, client), ("client", client, server)]:
pk, sk = f"{name}.pqpk", f"{name}.pqsk"
system(f"{rosenpass} gen-keys --force --secret-key {sk} --public-key {pk}")
machine.copy_from_host(sk, f"{etc}/pqsk")
machine.copy_from_host(pk, f"{etc}/pqpk")
remote.copy_from_host(pk, f"{etc}/peers/{name}/pqpk")
for machine in [server, client]:
machine.execute("systemctl start rosenpass.service")
for machine in [server, client]:
machine.wait_for_unit("rosenpass.service")
with subtest("ping"):
client.succeed("ping -c 2 -i 0.5 ${server.ip}%${deviceName}")
with subtest("preshared-keys"):
# Rosenpass works by setting the WireGuard preshared key at regular intervals.
# Thus, if it is not active, then no key will be set, and the output of `wg show` will contain "none".
# Otherwise, if it is active, then the key will be set and "none" will not be found in the output of `wg show`.
for machine in [server, client]:
machine.wait_until_succeeds("wg show all preshared-keys | grep --invert-match none", timeout=5)
'';
# NOTE: Below configuration is for "interactive" (=developing/debugging) only.
interactive.nodes =
let
inherit (import ./ssh-keys.nix pkgs) snakeOilPublicKey snakeOilPrivateKey;
sshAndKeyGeneration = {
services.openssh.enable = true;
users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
environment.systemPackages = [
(pkgs.writeShellApplication {
name = "gen-keys";
runtimeInputs = [ pkgs.rosenpass ];
text = ''
HOST="$(hostname)"
if [ "$HOST" == "server" ]
then
PEER="client"
else
PEER="server"
fi
# Generate keypair.
mkdir -vp /etc/rosenpass/peers/$PEER
rosenpass gen-keys --force --secret-key /etc/rosenpass/pqsk --public-key /etc/rosenpass/pqpk
# Set up SSH key.
mkdir -p /root/.ssh
cp ${snakeOilPrivateKey} /root/.ssh/id_ecdsa
chmod 0400 /root/.ssh/id_ecdsa
# Copy public key to other peer.
# shellcheck disable=SC2029
ssh -o StrictHostKeyChecking=no $PEER "mkdir -pv /etc/rosenpass/peers/$HOST"
scp /etc/rosenpass/pqpk "$PEER:/etc/rosenpass/peers/$HOST/pqpk"
'';
})
];
};
# Use kmscon <https://www.freedesktop.org/wiki/Software/kmscon/>
# to provide a slightly nicer console, and while we're at it,
# also use a nice font.
# With kmscon, we can for example zoom in/out using [Ctrl] + [+]
# and [Ctrl] + [-]
niceConsoleAndAutologin.services.kmscon = {
enable = true;
autologinUser = "root";
fonts = [{
name = "Fira Code";
package = pkgs.fira-code;
}];
};
in
{
server = sshAndKeyGeneration // niceConsoleAndAutologin;
client = sshAndKeyGeneration // niceConsoleAndAutologin;
};
})

View File

@ -1,13 +1,4 @@
import ./make-test-python.nix ({ lib, pkgs, system, ... }:
let
tpmSocketPath = "/tmp/swtpm-sock";
tpmDeviceModels = {
x86_64-linux = "tpm-tis";
aarch64-linux = "tpm-tis-device";
};
in
import ./make-test-python.nix ({ lib, pkgs, ... }:
{
name = "systemd-credentials-tpm2";
@ -16,51 +7,11 @@ in
};
nodes.machine = { pkgs, ... }: {
virtualisation = {
qemu.options = [
"-chardev socket,id=chrtpm,path=${tpmSocketPath}"
"-tpmdev emulator,id=tpm_dev_0,chardev=chrtpm"
"-device ${tpmDeviceModels.${system}},tpmdev=tpm_dev_0"
];
};
boot.initrd.availableKernelModules = [ "tpm_tis" ];
virtualisation.tpm.enable = true;
environment.systemPackages = with pkgs; [ diffutils ];
};
testScript = ''
import subprocess
from tempfile import TemporaryDirectory
# From systemd-initrd-luks-tpm2.nix
class Tpm:
def __init__(self):
self.state_dir = TemporaryDirectory()
self.start()
def start(self):
self.proc = subprocess.Popen(["${pkgs.swtpm}/bin/swtpm",
"socket",
"--tpmstate", f"dir={self.state_dir.name}",
"--ctrl", "type=unixio,path=${tpmSocketPath}",
"--tpm2",
])
# Check whether starting swtpm failed
try:
exit_code = self.proc.wait(timeout=0.2)
if exit_code is not None and exit_code != 0:
raise Exception("failed to start swtpm")
except subprocess.TimeoutExpired:
pass
"""Check whether the swtpm process exited due to an error"""
def check(self):
exit_code = self.proc.poll()
if exit_code is not None and exit_code != 0:
raise Exception("swtpm process died")
CRED_NAME = "testkey"
CRED_RAW_FILE = f"/root/{CRED_NAME}"
CRED_FILE = f"/root/{CRED_NAME}.cred"
@ -85,12 +36,6 @@ in
machine.log("systemd-run finished successfully")
tpm = Tpm()
@polling_condition
def swtpm_running():
tpm.check()
machine.wait_for_unit("multi-user.target")
with subtest("Check whether TPM device exists"):

View File

@ -8,47 +8,34 @@ import ./make-test-python.nix ({ pkgs, ... }: {
environment.systemPackages = [ pkgs.cryptsetup ];
virtualisation = {
emptyDiskImages = [ 512 ];
qemu.options = [
"-chardev socket,id=chrtpm,path=/tmp/swtpm-sock"
"-tpmdev emulator,id=tpm0,chardev=chrtpm"
"-device tpm-tis,tpmdev=tpm0"
];
tpm.enable = true;
};
};
testScript = ''
import subprocess
import tempfile
machine.start()
def start_swtpm(tpmstate):
subprocess.Popen(["${pkgs.swtpm}/bin/swtpm", "socket", "--tpmstate", "dir="+tpmstate, "--ctrl", "type=unixio,path=/tmp/swtpm-sock", "--log", "level=0", "--tpm2"])
# Verify the TPM device is available and accessible by systemd-cryptenroll
machine.succeed("test -e /dev/tpm0")
machine.succeed("test -e /dev/tpmrm0")
machine.succeed("systemd-cryptenroll --tpm2-device=list")
with tempfile.TemporaryDirectory() as tpmstate:
start_swtpm(tpmstate)
machine.start()
# Create LUKS partition
machine.succeed("echo -n lukspass | cryptsetup luksFormat -q /dev/vdb -")
# Enroll new LUKS key and bind it to Secure Boot state
# For more details on PASSWORD variable, check the following issue:
# https://github.com/systemd/systemd/issues/20955
machine.succeed("PASSWORD=lukspass systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/vdb")
# Add LUKS partition to /etc/crypttab to test auto unlock
machine.succeed("echo 'luks /dev/vdb - tpm2-device=auto' >> /etc/crypttab")
# Verify the TPM device is available and accessible by systemd-cryptenroll
machine.succeed("test -e /dev/tpm0")
machine.succeed("test -e /dev/tpmrm0")
machine.succeed("systemd-cryptenroll --tpm2-device=list")
machine.shutdown()
machine.start()
# Create LUKS partition
machine.succeed("echo -n lukspass | cryptsetup luksFormat -q /dev/vdb -")
# Enroll new LUKS key and bind it to Secure Boot state
# For more details on PASSWORD variable, check the following issue:
# https://github.com/systemd/systemd/issues/20955
machine.succeed("PASSWORD=lukspass systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/vdb")
# Add LUKS partition to /etc/crypttab to test auto unlock
machine.succeed("echo 'luks /dev/vdb - tpm2-device=auto' >> /etc/crypttab")
machine.shutdown()
start_swtpm(tpmstate)
machine.start()
# Test LUKS partition automatic unlock on boot
machine.wait_for_unit("systemd-cryptsetup@luks.service")
# Wipe TPM2 slot
machine.succeed("systemd-cryptenroll --wipe-slot=tpm2 /dev/vdb")
# Test LUKS partition automatic unlock on boot
machine.wait_for_unit("systemd-cryptsetup@luks.service")
# Wipe TPM2 slot
machine.succeed("systemd-cryptenroll --wipe-slot=tpm2 /dev/vdb")
'';
})

View File

@ -9,7 +9,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
# Booting off the TPM2-encrypted device requires an available init script
mountHostNixStore = true;
useEFIBoot = true;
qemu.options = ["-chardev socket,id=chrtpm,path=/tmp/mytpm1/swtpm-sock -tpmdev emulator,id=tpm0,chardev=chrtpm -device tpm-tis,tpmdev=tpm0"];
tpm.enable = true;
};
boot.loader.systemd-boot.enable = true;
@ -33,29 +33,6 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
};
testScript = ''
import subprocess
import os
import time
class Tpm:
def __init__(self):
os.mkdir("/tmp/mytpm1")
self.start()
def start(self):
self.proc = subprocess.Popen(["${pkgs.swtpm}/bin/swtpm", "socket", "--tpmstate", "dir=/tmp/mytpm1", "--ctrl", "type=unixio,path=/tmp/mytpm1/swtpm-sock", "--log", "level=20", "--tpm2"])
def wait_for_death_then_restart(self):
while self.proc.poll() is None:
print("waiting for tpm to die")
time.sleep(1)
assert self.proc.returncode == 0
self.start()
tpm = Tpm()
# Create encrypted volume
machine.wait_for_unit("multi-user.target")
machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
@ -66,8 +43,6 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
machine.succeed("sync")
machine.crash()
tpm.wait_for_death_then_restart()
# Boot and decrypt the disk
machine.wait_for_unit("multi-user.target")
assert "/dev/mapper/cryptroot on / type ext4" in machine.succeed("mount")

View File

@ -45,7 +45,7 @@ in
stdenv.mkDerivation rec {
pname = "touchosc";
version = "1.2.1.171";
version = "1.2.4.180";
suffix = {
aarch64-linux = "linux-arm64";
@ -56,9 +56,9 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://hexler.net/pub/${pname}/${pname}-${version}-${suffix}.deb";
hash = {
aarch64-linux = "sha256-lIm+X+znIp80cbVb8KEkeZwiMkTsqdRLAfI+3a9BgfY=";
armv7l-linux = "sha256-kghoaLQ3aEIytdmxlmVXPuZWBwg/A3Y3NL2WSmHKxMM=";
x86_64-linux = "sha256-iRab2H+TYpGcUBB/x2/M4NuupWLjvt4EvyMc5cfWyeo=";
aarch64-linux = "sha256-Z3vHcfimchshFTRbSsVhAw4DJPetZF59zyAnnbQ3YAM=";
armv7l-linux = "sha256-KUA6UFenEVme0AMuE69dR13RfYSGAd9GEdikh3DS0ko=";
x86_64-linux = "sha256-3RA+piRJ4UE4tPYALaifENJg7+0BZDmSwS36VJiEn8Q=";
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
};

View File

@ -190,10 +190,10 @@
elpaBuild {
pname = "altcaps";
ename = "altcaps";
version = "1.1.0";
version = "1.2.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/altcaps-1.1.0.tar";
sha256 = "15jfhn9v74zi779a0m0v5dx8h135pbsxx0rh472sl13q2ark97bk";
url = "https://elpa.gnu.org/packages/altcaps-1.2.0.tar";
sha256 = "0pfd3j8x2ayqnvg418qcm4rkxjvm5qm2ks9xsw4irv04452zhahc";
};
packageRequires = [ emacs ];
meta = {
@ -265,10 +265,10 @@
elpaBuild {
pname = "auctex";
ename = "auctex";
version = "13.2.1";
version = "13.2.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/auctex-13.2.1.tar";
sha256 = "0q914q1qm5w0yx9cqfmyxzbzxmrdkz321cazy7g7l4mc5qndb9nm";
url = "https://elpa.gnu.org/packages/auctex-13.2.2.tar";
sha256 = "1k8ypxp2iwg7a0m5lyk1sy5chcnmas0gs6frk6xw6k0r974f193s";
};
packageRequires = [ emacs ];
meta = {
@ -535,10 +535,10 @@
elpaBuild {
pname = "buffer-env";
ename = "buffer-env";
version = "0.4";
version = "0.5";
src = fetchurl {
url = "https://elpa.gnu.org/packages/buffer-env-0.4.tar";
sha256 = "0y8ik87dqldhn6q631zp2ln9z5byqgm9icrvr4xrdx6g8mr9c56z";
url = "https://elpa.gnu.org/packages/buffer-env-0.5.tar";
sha256 = "17q0flxp0rp52ksyh5ijcamvvm003icbyzv28r6vknrw3qsphb3p";
};
packageRequires = [ compat emacs ];
meta = {
@ -794,10 +794,10 @@
elpaBuild {
pname = "company";
ename = "company";
version = "0.9.13";
version = "0.10.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/company-0.9.13.tar";
sha256 = "1c9x9wlzzsn7vrsm57l2l44nqx455saa6wrm853szzg09qn8dlnw";
url = "https://elpa.gnu.org/packages/company-0.10.2.tar";
sha256 = "0j2qrnx2w2al4f2n37b89q0pkabh5ccv00gsknvgaylhy0za5gq9";
};
packageRequires = [ emacs ];
meta = {
@ -1132,10 +1132,10 @@
elpaBuild {
pname = "debbugs";
ename = "debbugs";
version = "0.36";
version = "0.37";
src = fetchurl {
url = "https://elpa.gnu.org/packages/debbugs-0.36.tar";
sha256 = "1rzv13shadbvy583vjj4zg13v920zpiqrsnn10r3cqqyli89ivn2";
url = "https://elpa.gnu.org/packages/debbugs-0.37.tar";
sha256 = "0xj0sv5d3y88fsbm7yhm0v59mzj1srxayng1hr418v89ky43rxpr";
};
packageRequires = [ emacs soap-client ];
meta = {
@ -1177,10 +1177,10 @@
elpaBuild {
pname = "denote-menu";
ename = "denote-menu";
version = "1.1.1";
version = "1.2.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/denote-menu-1.1.1.tar";
sha256 = "12ry0rv45hv1vrwx9wih72s9h0f3r18xssnkzfa9ilp77kgbas5q";
url = "https://elpa.gnu.org/packages/denote-menu-1.2.0.tar";
sha256 = "1zm68bz6hya360g5zvs4r5naznykamgzqxhvfhpfyxb70hsnmx5w";
};
packageRequires = [ denote emacs ];
meta = {
@ -1218,16 +1218,22 @@
license = lib.licenses.free;
};
}) {};
dict-tree = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA, trie }:
dict-tree = callPackage ({ elpaBuild
, emacs
, fetchurl
, heap
, lib
, tNFA
, trie }:
elpaBuild {
pname = "dict-tree";
ename = "dict-tree";
version = "0.16";
version = "0.17";
src = fetchurl {
url = "https://elpa.gnu.org/packages/dict-tree-0.16.tar";
sha256 = "1myf26g3jjk2v8yp3k2n8m45vi20452wd7w2bja8csfkk0qx3300";
url = "https://elpa.gnu.org/packages/dict-tree-0.17.tar";
sha256 = "0f9vj6kr8q9mfd522svwy3wmzsl5lc4y2p8ggwmckn88dpz79w02";
};
packageRequires = [ heap tNFA trie ];
packageRequires = [ emacs heap tNFA trie ];
meta = {
homepage = "https://elpa.gnu.org/packages/dict-tree.html";
license = lib.licenses.free;
@ -1372,10 +1378,10 @@
elpaBuild {
pname = "do-at-point";
ename = "do-at-point";
version = "0.1.0";
version = "0.1.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/do-at-point-0.1.0.tar";
sha256 = "01xr3fn10z3986ibhglkx7gbcly0wklagk5yhx7cln1sc5dihkv1";
url = "https://elpa.gnu.org/packages/do-at-point-0.1.1.tar";
sha256 = "0y58a0x0pfk52h1cz930sbwr9y6nzy9g8f3935pk34dj2jf92rsj";
};
packageRequires = [ emacs ];
meta = {
@ -1617,21 +1623,6 @@
license = lib.licenses.free;
};
}) {};
eldoc-eval = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "eldoc-eval";
ename = "eldoc-eval";
version = "0.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/eldoc-eval-0.2.tar";
sha256 = "09g9y1w1dlq3s8sqzczgaj02y53x616ak9w3kynq53pwgaxq14j4";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/eldoc-eval.html";
license = lib.licenses.free;
};
}) {};
electric-spacing = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "electric-spacing";
@ -1681,10 +1672,10 @@
elpaBuild {
pname = "embark";
ename = "embark";
version = "0.22.1";
version = "0.23";
src = fetchurl {
url = "https://elpa.gnu.org/packages/embark-0.22.1.tar";
sha256 = "0dxbvrp057a0kyydnf8vfwnf4m3q3jy4180agcmizlr64lm2pmh1";
url = "https://elpa.gnu.org/packages/embark-0.23.tar";
sha256 = "03qmhi5wlx4wpj8fnqx352cwnx0czrj6majr18hyavx5cih8i8v6";
};
packageRequires = [ compat emacs ];
meta = {
@ -1701,10 +1692,10 @@
elpaBuild {
pname = "embark-consult";
ename = "embark-consult";
version = "0.7";
version = "0.8";
src = fetchurl {
url = "https://elpa.gnu.org/packages/embark-consult-0.7.tar";
sha256 = "12b8p2f1bpy43jzjz3ask9h38z23hq4nxkid5dljnpmvf31d8x9c";
url = "https://elpa.gnu.org/packages/embark-consult-0.8.tar";
sha256 = "1l6fcrf9hx7ll6zrm3igh80nkcig6i7fqwicm3dy9rwsjyjlmy2f";
};
packageRequires = [ consult emacs embark ];
meta = {
@ -1726,10 +1717,10 @@
elpaBuild {
pname = "ement";
ename = "ement";
version = "0.12";
version = "0.13";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ement-0.12.tar";
sha256 = "0v63xfvkdijf8wfy7kafqrqxclq2jvk4amp69kzxx9i0gnp90hzi";
url = "https://elpa.gnu.org/packages/ement-0.13.tar";
sha256 = "15pi9d5nxg3d7xnh36xpd0fa94fv3yra5imqpwbzz98d4wyacrv8";
};
packageRequires = [
emacs
@ -1878,16 +1869,16 @@
license = lib.licenses.free;
};
}) {};
expand-region = callPackage ({ elpaBuild, fetchurl, lib }:
expand-region = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "expand-region";
ename = "expand-region";
version = "0.11.0";
version = "1.0.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/expand-region-0.11.0.tar";
sha256 = "1q6xaqkv40z4c6rgdkxqqkvxgsaj8yjqjrxi40kz5y0ck3bjrk0i";
url = "https://elpa.gnu.org/packages/expand-region-1.0.0.tar";
sha256 = "04xwdcxahymppcyvkfh2bn2f4fs4f8z27kycva67i6qldhashq7y";
};
packageRequires = [];
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/expand-region.html";
license = lib.licenses.free;
@ -1897,10 +1888,10 @@
elpaBuild {
pname = "expreg";
ename = "expreg";
version = "1.2.1";
version = "1.3.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/expreg-1.2.1.tar";
sha256 = "13m08my5pl8k5gj78lpkh0lh05mrbkphg0k0bb40aw4rbnv7yr7v";
url = "https://elpa.gnu.org/packages/expreg-1.3.1.tar";
sha256 = "13s3hq6nfnv4md2z704ad1axqnir0drz9vvhvisrlp2lis16xzik";
};
packageRequires = [ emacs ];
meta = {
@ -1927,10 +1918,10 @@
elpaBuild {
pname = "exwm";
ename = "exwm";
version = "0.27";
version = "0.28";
src = fetchurl {
url = "https://elpa.gnu.org/packages/exwm-0.27.tar";
sha256 = "094k33clmxhnab0wniyrs48sdz28kna2g6fmkhsd7n20nmhhc4sn";
url = "https://elpa.gnu.org/packages/exwm-0.28.tar";
sha256 = "00h5awqazk807zxvb02a9dp8gd5ifi3y1kcwmr1czk6kdmkjx32l";
};
packageRequires = [ xelb ];
meta = {
@ -2020,10 +2011,10 @@
elpaBuild {
pname = "flymake";
ename = "flymake";
version = "1.3.4";
version = "1.3.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/flymake-1.3.4.tar";
sha256 = "0gm08rj83if9cs0jz7zig363zfqp809j6lgaqdb0apzh48fbznkd";
url = "https://elpa.gnu.org/packages/flymake-1.3.6.tar";
sha256 = "1ihv8gh77849rrdc6qpbpjdw7ikr4biaibw6aggv3hzjf508dzi8";
};
packageRequires = [ eldoc emacs project ];
meta = {
@ -2367,10 +2358,10 @@
elpaBuild {
pname = "greader";
ename = "greader";
version = "0.3.0";
version = "0.5.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/greader-0.3.0.tar";
sha256 = "1g0djxa8zplw9dmlpg5263wbhp80nkj4wispyikh09cc2lppidw8";
url = "https://elpa.gnu.org/packages/greader-0.5.0.tar";
sha256 = "11rcppg3850dbrvwsp3y814bibkv0h35rc5sf4w9qlmd5rc5ilxj";
};
packageRequires = [ emacs ];
meta = {
@ -2569,10 +2560,10 @@
elpaBuild {
pname = "inspector";
ename = "inspector";
version = "0.34";
version = "0.36";
src = fetchurl {
url = "https://elpa.gnu.org/packages/inspector-0.34.tar";
sha256 = "1r1gcrhcxixm15ygi4i8brxdpic5a1i2248m7fgwvzij4bvhcg5h";
url = "https://elpa.gnu.org/packages/inspector-0.36.tar";
sha256 = "139w0qc99grd6yzxkpfblgddnbza02mh4hhcpbjgsm4bwdxq8az0";
};
packageRequires = [ emacs ];
meta = {
@ -2709,10 +2700,10 @@
elpaBuild {
pname = "jarchive";
ename = "jarchive";
version = "0.10.0";
version = "0.11.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/jarchive-0.10.0.tar";
sha256 = "0hgxfz6kqammgbr6cx7l8bg9hmakamrkbzbsjycb4k0gbi4r567b";
url = "https://elpa.gnu.org/packages/jarchive-0.11.0.tar";
sha256 = "1hn0lyszm667a54j95v2ppddz4g89cp8byj9pd3k1gha2rplm9d8";
};
packageRequires = [ emacs ];
meta = {
@ -2829,10 +2820,10 @@
elpaBuild {
pname = "jumpc";
ename = "jumpc";
version = "3.0";
version = "3.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/jumpc-3.0.el";
sha256 = "1vhggw3mzaq33al8f16jbg5qq5f95s8365is9qqyb8yq77gqym6a";
url = "https://elpa.gnu.org/packages/jumpc-3.1.tar";
sha256 = "04wqajw4i7sslsw8cwqbw30kbwwf9qlqxjm17v0bsxh5sp27y1jc";
};
packageRequires = [];
meta = {
@ -2980,6 +2971,21 @@
license = lib.licenses.free;
};
}) {};
llm = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "llm";
ename = "llm";
version = "0.4.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/llm-0.4.0.tar";
sha256 = "0jq1q9gmm3nbdsycca2qkjpf04qpp9j615z6l41plmfv7bc0p0x6";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/llm.html";
license = lib.licenses.free;
};
}) {};
lmc = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "lmc";
@ -3164,10 +3170,10 @@
elpaBuild {
pname = "mct";
ename = "mct";
version = "0.5.0";
version = "1.0.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/mct-0.5.0.tar";
sha256 = "0yv0hqkyh5vpmf5i50fdc2rw3ssvrd9pn3n65v3gmb195gzmn6r9";
url = "https://elpa.gnu.org/packages/mct-1.0.0.tar";
sha256 = "1gzk0bjvry8wzi35yvghz003rbkz7ky4zd9vafg328b809n9ggff";
};
packageRequires = [ emacs ];
meta = {
@ -3284,10 +3290,10 @@
elpaBuild {
pname = "mmm-mode";
ename = "mmm-mode";
version = "0.5.9";
version = "0.5.10";
src = fetchurl {
url = "https://elpa.gnu.org/packages/mmm-mode-0.5.9.tar";
sha256 = "12fss1ccb66xc87m5wpr3vg7bfrzz5m0q6s7pa0avvhsm2f8r2yh";
url = "https://elpa.gnu.org/packages/mmm-mode-0.5.10.tar";
sha256 = "1ny9gm87qah4qy0iphw2nlhz2pfc87hzzsv58lrxl18gr69qhndi";
};
packageRequires = [ cl-lib emacs ];
meta = {
@ -3299,10 +3305,10 @@
elpaBuild {
pname = "modus-themes";
ename = "modus-themes";
version = "4.2.0";
version = "4.3.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-themes-4.2.0.tar";
sha256 = "0bki4h3rs1ch47sygb4nib8960lyvvgs7yxgsy009il3hfxzdgsq";
url = "https://elpa.gnu.org/packages/modus-themes-4.3.0.tar";
sha256 = "0zsglzqc36bw9r7fgvxjdcrdjar6xwad29kwyqd2k36bq3pivzq3";
};
packageRequires = [ emacs ];
meta = {
@ -3533,10 +3539,10 @@
elpaBuild {
pname = "notmuch-indicator";
ename = "notmuch-indicator";
version = "1.0.1";
version = "1.1.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/notmuch-indicator-1.0.1.tar";
sha256 = "1n5k2ikk93mdwqqysf6l7gd8i6iazk8yvbqpf8xnz5zny248cc2x";
url = "https://elpa.gnu.org/packages/notmuch-indicator-1.1.0.tar";
sha256 = "0k5csfrs8y1r6g7hs2y0961jpx0ih090kb6rkijljny2qhfj0573";
};
packageRequires = [ emacs ];
meta = {
@ -3589,6 +3595,21 @@
license = lib.licenses.free;
};
}) {};
ob-asymptote = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "ob-asymptote";
ename = "ob-asymptote";
version = "1.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ob-asymptote-1.0.tar";
sha256 = "0m9i21zailg7drglm19v9ysyigzvz3p2r3q069a3n04di56d4629";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/ob-asymptote.html";
license = lib.licenses.free;
};
}) {};
ob-haxe = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "ob-haxe";
@ -3683,10 +3704,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "9.6.9";
version = "9.6.10";
src = fetchurl {
url = "https://elpa.gnu.org/packages/org-9.6.9.tar";
sha256 = "1ixn20gb2mv3bg9h4p0kyqjqr74dsbv9c7n7s2646ff2b9i6l9bv";
url = "https://elpa.gnu.org/packages/org-9.6.10.tar";
sha256 = "1lv503jf556hrv9s85q8sk6lg0rwxkchp2sn0sgdki208l0im8wj";
};
packageRequires = [ emacs ];
meta = {
@ -3743,10 +3764,10 @@
elpaBuild {
pname = "org-notify";
ename = "org-notify";
version = "0.1.0";
version = "0.1.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/org-notify-0.1.0.tar";
sha256 = "1ijwlv8493g19cascv7fl23sjljvdcak6pg4y1wbs595mmsmh409";
url = "https://elpa.gnu.org/packages/org-notify-0.1.1.tar";
sha256 = "0y0zj7sri7m0q3nibwv0m1snkwhma403hbxpcd346xk3s3ljiz2k";
};
packageRequires = [ emacs ];
meta = {
@ -3848,10 +3869,10 @@
elpaBuild {
pname = "osm";
ename = "osm";
version = "0.13";
version = "0.14";
src = fetchurl {
url = "https://elpa.gnu.org/packages/osm-0.13.tar";
sha256 = "13bdp8cz1w396vdfxvv8ygla7cbln178rjliknhfl3kqggg32kqx";
url = "https://elpa.gnu.org/packages/osm-0.14.tar";
sha256 = "03zzdz7l76006x5540121ckbyd5gm10x30k9r43dlj7myd359i90";
};
packageRequires = [ compat emacs ];
meta = {
@ -4058,10 +4079,10 @@
elpaBuild {
pname = "poke-mode";
ename = "poke-mode";
version = "3.0";
version = "3.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/poke-mode-3.0.tar";
sha256 = "0xw50x3fx3ai3rsykh371hwlgkmyx4h37ps2583l69f7id7h2103";
url = "https://elpa.gnu.org/packages/poke-mode-3.1.tar";
sha256 = "1lirhws5d8l16qs5ddrvvz0f9xfl004q9yp333pdgsmcpk3ww7sr";
};
packageRequires = [];
meta = {
@ -4508,10 +4529,10 @@
elpaBuild {
pname = "relint";
ename = "relint";
version = "1.23";
version = "1.24";
src = fetchurl {
url = "https://elpa.gnu.org/packages/relint-1.23.tar";
sha256 = "0cyv9hjlyxy1c2394544ljq5d4prhi296y9j2zy6p1lq6irncmv9";
url = "https://elpa.gnu.org/packages/relint-1.24.tar";
sha256 = "0wc7jzapzc4s7v7yqwp315ymbs6xighy2clx1ylvf60zs49y2bwm";
};
packageRequires = [ emacs xr ];
meta = {
@ -4769,10 +4790,10 @@
elpaBuild {
pname = "site-lisp";
ename = "site-lisp";
version = "0.1.1";
version = "0.1.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/site-lisp-0.1.1.tar";
sha256 = "05fdh7hv3dwm8li4qsyrm9j6zdj43k82al1p5z9ir6xmy1r5b571";
url = "https://elpa.gnu.org/packages/site-lisp-0.1.2.tar";
sha256 = "07704nz5rrzixmvw65h79rf4fpnf58jrrgbp1brvknidp6j95r0n";
};
packageRequires = [ emacs ];
meta = {
@ -4998,10 +5019,10 @@
elpaBuild {
pname = "sql-indent";
ename = "sql-indent";
version = "1.6";
version = "1.7";
src = fetchurl {
url = "https://elpa.gnu.org/packages/sql-indent-1.6.tar";
sha256 = "000pimlg0k4mrv2wpqq8w8l51wpr1lzlaq6ai8iaximm2a92ap5b";
url = "https://elpa.gnu.org/packages/sql-indent-1.7.tar";
sha256 = "043qcy97a5hx68w0ac7xsk380l2i7bphgrdz6aby2zfpp90vrjpn";
};
packageRequires = [ cl-lib ];
meta = {
@ -5219,6 +5240,21 @@
license = lib.licenses.free;
};
}) {};
tam = callPackage ({ elpaBuild, emacs, fetchurl, lib, queue }:
elpaBuild {
pname = "tam";
ename = "tam";
version = "0.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/tam-0.1.tar";
sha256 = "1f66la9mmw1frpy2k9vr9k1q2x3b1y9018z43rdhrp50zx1b2vsg";
};
packageRequires = [ emacs queue ];
meta = {
homepage = "https://elpa.gnu.org/packages/tam.html";
license = lib.licenses.free;
};
}) {};
taxy = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "taxy";
@ -5382,10 +5418,10 @@
elpaBuild {
pname = "tramp";
ename = "tramp";
version = "2.6.1.2";
version = "2.6.1.3";
src = fetchurl {
url = "https://elpa.gnu.org/packages/tramp-2.6.1.2.tar";
sha256 = "0nazcrpkwy59dxbyzarj75zvz7vh4pgq4yzqgf6zfbvqp7q73wbn";
url = "https://elpa.gnu.org/packages/tramp-2.6.1.3.tar";
sha256 = "0z7q55yilwicgzl2m69r275pq6bzpyksxcjaf8fb3bcr3zvzil0y";
};
packageRequires = [ emacs ];
meta = {
@ -5472,10 +5508,10 @@
elpaBuild {
pname = "tree-inspector";
ename = "tree-inspector";
version = "0.3";
version = "0.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/tree-inspector-0.3.tar";
sha256 = "1hns99rfga8p85ylbr4ri14wyfcxf0bcni0fyr09awipxrpn6ikq";
url = "https://elpa.gnu.org/packages/tree-inspector-0.4.tar";
sha256 = "0jsd32qk9rap8mhmm6qkyafvb6c2gyaa0adzdsh3bh03byi3sj6c";
};
packageRequires = [ emacs treeview ];
meta = {
@ -5487,10 +5523,10 @@
elpaBuild {
pname = "trie";
ename = "trie";
version = "0.5";
version = "0.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/trie-0.5.tar";
sha256 = "1qbzxw7h3p3k3r3fzq66pj223vjiw20dvaljkb8w3r5q16fnav3p";
url = "https://elpa.gnu.org/packages/trie-0.6.tar";
sha256 = "0vh0cizpbdiaq0y018rkrzjyv6lq0jwv9pwlvggbjfsz34kd10a4";
};
packageRequires = [ heap tNFA ];
meta = {
@ -6107,6 +6143,21 @@
license = lib.licenses.free;
};
}) {};
wrap-search = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "wrap-search";
ename = "wrap-search";
version = "4.12.10";
src = fetchurl {
url = "https://elpa.gnu.org/packages/wrap-search-4.12.10.tar";
sha256 = "0r1ggggpm7x201r5yp0nhnc9146nrqzb5df1bjg7z2am2150r1i9";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/wrap-search.html";
license = lib.licenses.free;
};
}) {};
xclip = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "xclip";
@ -6171,10 +6222,10 @@
elpaBuild {
pname = "xr";
ename = "xr";
version = "1.24";
version = "1.25";
src = fetchurl {
url = "https://elpa.gnu.org/packages/xr-1.24.tar";
sha256 = "04g7qx6qmhp98pw5iwdhspln9sg9jzjq2zp3nmq3q1yl82pzd214";
url = "https://elpa.gnu.org/packages/xr-1.25.tar";
sha256 = "0w4gaxypl76d1jw9vcq0zhj7ksj44wyfb148l1fb0vl7h6wpv0pg";
};
packageRequires = [ emacs ];
meta = {
@ -6249,10 +6300,10 @@
elpaBuild {
pname = "zones";
ename = "zones";
version = "2019.7.13";
version = "2023.6.11";
src = fetchurl {
url = "https://elpa.gnu.org/packages/zones-2019.7.13.el";
sha256 = "0qp1ba2pkqx9d35g7z8hf8qs2k455krf2a92l4rka3ipsbnmq5k1";
url = "https://elpa.gnu.org/packages/zones-2023.6.11.tar";
sha256 = "1znz720s9pchc7r9g1mpz9jcnz122bppimmh09g1rn94fh3m6vm3";
};
packageRequires = [];
meta = {

View File

@ -64,10 +64,10 @@
elpaBuild {
pname = "annotate";
ename = "annotate";
version = "2.0.2";
version = "2.0.3";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/annotate-2.0.2.tar";
sha256 = "03iigyh9s378jif2vaaii8d31nag6mzairmgl9ffhmryz08jkig1";
url = "https://elpa.nongnu.org/nongnu/annotate-2.0.3.tar";
sha256 = "1kq195nmspysb1kiqcfh0kwxzp40ij9ccw1c204ayr40a0wp7ilc";
};
packageRequires = [];
meta = {
@ -257,6 +257,21 @@
license = lib.licenses.free;
};
}) {};
blueprint-ts-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "blueprint-ts-mode";
ename = "blueprint-ts-mode";
version = "0.0.2";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/blueprint-ts-mode-0.0.2.tar";
sha256 = "0fyvff2zh6iiswhxcvqgnxdhq3yk5f0w4a2w0jp126fvd3ryspym";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/blueprint-ts-mode.html";
license = lib.licenses.free;
};
}) {};
boxquote = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "boxquote";
@ -276,10 +291,10 @@
elpaBuild {
pname = "buttercup";
ename = "buttercup";
version = "1.31";
version = "1.32";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/buttercup-1.31.tar";
sha256 = "1aw9k3dfscqpq2jkk1yqh6i3682yjs85fnm7rzc5i9qawrl9db6h";
url = "https://elpa.nongnu.org/nongnu/buttercup-1.32.tar";
sha256 = "07vxs1iq38m7ng9wia8h6q2sy4cdykv03jksqjqyqaab4cl7yl27";
};
packageRequires = [ emacs ];
meta = {
@ -321,10 +336,10 @@
elpaBuild {
pname = "cdlatex";
ename = "cdlatex";
version = "4.18.2";
version = "4.18.3";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/cdlatex-4.18.2.tar";
sha256 = "1sqmb7qcvdphkrak9bxw3xs0fdlv5vn36ckcqiannpm870s7ajnk";
url = "https://elpa.nongnu.org/nongnu/cdlatex-4.18.3.tar";
sha256 = "0zz73csyjagq4vfv1fdnzwg4jhscggg3vk75kjdl78dg1ly191iz";
};
packageRequires = [];
meta = {
@ -341,14 +356,15 @@
, queue
, seq
, sesman
, spinner }:
, spinner
, transient }:
elpaBuild {
pname = "cider";
ename = "cider";
version = "1.7.0";
version = "1.8.3";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/cider-1.7.0.tar";
sha256 = "0x0acszamylmmly6h8s56lskd5l7lm8hdnf8rbvjd89v0j2anb0l";
url = "https://elpa.nongnu.org/nongnu/cider-1.8.3.tar";
sha256 = "0c77rlpyda4x05fj3d10cpww0pkbsjcbrvwcwy4gh74c9m9xmq1d";
};
packageRequires = [
clojure-mode
@ -358,6 +374,7 @@
seq
sesman
spinner
transient
];
meta = {
homepage = "https://elpa.gnu.org/packages/cider.html";
@ -368,10 +385,10 @@
elpaBuild {
pname = "clojure-mode";
ename = "clojure-mode";
version = "5.17.0";
version = "5.18.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/clojure-mode-5.17.0.tar";
sha256 = "189kyj57q4v8m9r9cd9q2x9db42vl5vb1qvww401lxlappc58fmw";
url = "https://elpa.nongnu.org/nongnu/clojure-mode-5.18.0.tar";
sha256 = "1wh1r3kdjya7aqnnm6ask9q93pxm7h6ff4b7p6lrhwg4iyn2njss";
};
packageRequires = [ emacs ];
meta = {
@ -383,10 +400,10 @@
elpaBuild {
pname = "clojure-ts-mode";
ename = "clojure-ts-mode";
version = "0.1.5";
version = "0.2.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/clojure-ts-mode-0.1.5.tar";
sha256 = "1py4kxw2w9ggkl8ljchbcry14v9anxn9zinbdfls9x120y1cljsa";
url = "https://elpa.nongnu.org/nongnu/clojure-ts-mode-0.2.0.tar";
sha256 = "1jb6n84pk2ybrihh1s472q77pmnn288p4bzvhga0sxxqg88ial2p";
};
packageRequires = [ emacs ];
meta = {
@ -620,10 +637,10 @@
elpaBuild {
pname = "dracula-theme";
ename = "dracula-theme";
version = "1.8.1";
version = "1.8.2";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/dracula-theme-1.8.1.tar";
sha256 = "0j7m9z4y6jh0wlbi8xrg5syjaybhxs4karwshh1919ajzjs0f8ql";
url = "https://elpa.nongnu.org/nongnu/dracula-theme-1.8.2.tar";
sha256 = "17szqyl63nn66sxdz403kcd2diif5afvgv6abgqkw6x01bsr11i0";
};
packageRequires = [ emacs ];
meta = {
@ -646,16 +663,16 @@
license = lib.licenses.free;
};
}) {};
eat = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
eat = callPackage ({ compat, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "eat";
ename = "eat";
version = "0.8";
version = "0.9.3";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/eat-0.8.tar";
sha256 = "1nvwd8iryjdcbm3v2xjgnf4ifcbs4d8hxn7xydxw6i7c5l8vya9f";
url = "https://elpa.nongnu.org/nongnu/eat-0.9.3.tar";
sha256 = "1dck6vvyn1y94z18p1b0kh3x4i587x8x5pk5bin56vwpkw05s40d";
};
packageRequires = [ emacs ];
packageRequires = [ compat emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/eat.html";
license = lib.licenses.free;
@ -725,10 +742,10 @@
elpaBuild {
pname = "engine-mode";
ename = "engine-mode";
version = "2.2.3";
version = "2.2.4";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/engine-mode-2.2.3.tar";
sha256 = "07r5g2xrss175m622npna7c51ra4im7l69mkqp6689m2954g23wk";
url = "https://elpa.nongnu.org/nongnu/engine-mode-2.2.4.tar";
sha256 = "0azc1l9dbalbsd5mcfg1adbkyyy1n4195grzr96w9d7cs7ds23ya";
};
packageRequires = [ cl-lib ];
meta = {
@ -914,6 +931,40 @@
license = lib.licenses.free;
};
}) {};
evil-surround = callPackage ({ elpaBuild, evil, fetchurl, lib }:
elpaBuild {
pname = "evil-surround";
ename = "evil-surround";
version = "1.0.4";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/evil-surround-1.0.4.tar";
sha256 = "1cc6n05j7a3q3n8hzxrhgjwk2a79h0llidh0sqhq5bc9d8ygrl2s";
};
packageRequires = [ evil ];
meta = {
homepage = "https://elpa.gnu.org/packages/evil-surround.html";
license = lib.licenses.free;
};
}) {};
evil-visual-mark-mode = callPackage ({ dash
, elpaBuild
, evil
, fetchurl
, lib }:
elpaBuild {
pname = "evil-visual-mark-mode";
ename = "evil-visual-mark-mode";
version = "0.0.5";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/evil-visual-mark-mode-0.0.5.tar";
sha256 = "1k7slwf6m1brwy40j7j4j6qw4jna4sh0llbywsimdj63zral3fki";
};
packageRequires = [ dash evil ];
meta = {
homepage = "https://elpa.gnu.org/packages/evil-visual-mark-mode.html";
license = lib.licenses.free;
};
}) {};
evil-visualstar = callPackage ({ elpaBuild, evil, fetchurl, lib }:
elpaBuild {
pname = "evil-visualstar";
@ -1609,16 +1660,17 @@
, lib
, map
, persist
, plz }:
, plz
, transient }:
elpaBuild {
pname = "hyperdrive";
ename = "hyperdrive";
version = "0.1.0";
version = "0.2";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/hyperdrive-0.1.0.tar";
sha256 = "1dawm6wxwik7jks0xc2ina2nikdg9x4cnnws4srcf15vwh40van4";
url = "https://elpa.nongnu.org/nongnu/hyperdrive-0.2.tar";
sha256 = "1cvsl7caprdms83mvhlv3crk4ylka1g0swg0klqld04hayzikq0z";
};
packageRequires = [ compat emacs map persist plz ];
packageRequires = [ compat emacs map persist plz transient ];
meta = {
homepage = "https://elpa.gnu.org/packages/hyperdrive.html";
license = lib.licenses.free;
@ -1697,10 +1749,10 @@
elpaBuild {
pname = "inf-ruby";
ename = "inf-ruby";
version = "2.7.0";
version = "2.8.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/inf-ruby-2.7.0.tar";
sha256 = "0wzzhr10q8mnai024g5nprsnl0bcdlqfrh4nxf8qq43paah28i6f";
url = "https://elpa.nongnu.org/nongnu/inf-ruby-2.8.0.tar";
sha256 = "1ax2sab4rm5alg12n2k6bz1xwv0mi0jvxx5xmjzavjxl4x6qckxy";
};
packageRequires = [ emacs ];
meta = {
@ -1727,10 +1779,10 @@
elpaBuild {
pname = "iwindow";
ename = "iwindow";
version = "1.0";
version = "1.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/iwindow-1.0.tar";
sha256 = "076i0p9kq48hxkkwzzapnni6cpdr25hdrw9bs2cly8w4v5rmd6rj";
url = "https://elpa.nongnu.org/nongnu/iwindow-1.1.tar";
sha256 = "1sx0dqm7wwq05qaxqyrsg8v57i5ghzaq2hcdrywjq5x3cl5rmw17";
};
packageRequires = [ compat emacs seq ];
meta = {
@ -1942,10 +1994,10 @@
elpaBuild {
pname = "mastodon";
ename = "mastodon";
version = "1.0.1";
version = "1.0.12";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/mastodon-1.0.1.tar";
sha256 = "0xj5zsmacj68amcq9kshin5ddjhpyjyfhkc7nafzbjk63fnscjnb";
url = "https://elpa.nongnu.org/nongnu/mastodon-1.0.12.tar";
sha256 = "1raq11350y5cpfzq7c8xmrsnl728fw0796bn1prbrrlly20rqxc2";
};
packageRequires = [ emacs persist request ];
meta = {
@ -2397,10 +2449,10 @@
elpaBuild {
pname = "parseedn";
ename = "parseedn";
version = "1.1.0";
version = "1.2.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/parseedn-1.1.0.tar";
sha256 = "1by9cy7pn12124vbg59c9qmn2k8v5dbqq4c8if81fclrccjqhrz4";
url = "https://elpa.nongnu.org/nongnu/parseedn-1.2.0.tar";
sha256 = "10y6mpjzxpmg029j0kysyxqqxdc82wwhkxh79sf8hz1ffks2ysmm";
};
packageRequires = [ emacs map parseclj ];
meta = {
@ -2507,10 +2559,10 @@
elpaBuild {
pname = "projectile";
ename = "projectile";
version = "2.7.0";
version = "2.8.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/projectile-2.7.0.tar";
sha256 = "1ibxsa1lv9aiplkfplamyn2wc2c6vfwfszyaicfx79aq2w9427bg";
url = "https://elpa.nongnu.org/nongnu/projectile-2.8.0.tar";
sha256 = "0j3zd1i6c0vinizg6ini0wqgkczqm48g7m5ihp1njq34c6pgpx7y";
};
packageRequires = [ emacs ];
meta = {
@ -2555,10 +2607,10 @@
elpaBuild {
pname = "racket-mode";
ename = "racket-mode";
version = "1.0.20230905.102118";
version = "1.0.20230919.113921";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20230905.102118.tar";
sha256 = "1109aq0q81r6r79vpazrn2r1dwpzpxgashrz1p4lbjh4mk8a16ka";
url = "https://elpa.nongnu.org/nongnu/racket-mode-1.0.20230919.113921.tar";
sha256 = "00b4bw4cqm9yc8fxz14da5ahrjrmshf3497l8p65ss0s6qby5ag3";
};
packageRequires = [ emacs ];
meta = {
@ -2645,10 +2697,10 @@
elpaBuild {
pname = "rfc-mode";
ename = "rfc-mode";
version = "1.4.0";
version = "1.4.2";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/rfc-mode-1.4.0.tar";
sha256 = "0036ypsjm35x8vwrlm346wcqmh85kbjmw0813q65z6k0gvmnwldj";
url = "https://elpa.nongnu.org/nongnu/rfc-mode-1.4.2.tar";
sha256 = "1b2n52qn7s0zc2xxi45xp9zvlws963l3b45v9q0r1yr8mpbvcb9l";
};
packageRequires = [ emacs ];
meta = {
@ -2934,10 +2986,10 @@
elpaBuild {
pname = "subed";
ename = "subed";
version = "1.2.4";
version = "1.2.5";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/subed-1.2.4.tar";
sha256 = "05pnjdrf9gq32bayvbd0yvp1lxpwj2xsarcy3s2jjb6zcgm6djyb";
url = "https://elpa.nongnu.org/nongnu/subed-1.2.5.tar";
sha256 = "0qaliyn79zkpy3ppqb0s61i5hfbbcj8climj7x9c6vpq86s57mv1";
};
packageRequires = [ emacs ];
meta = {
@ -2949,10 +3001,10 @@
elpaBuild {
pname = "sweeprolog";
ename = "sweeprolog";
version = "0.24.1";
version = "0.25.5";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/sweeprolog-0.24.1.tar";
sha256 = "0aw8xzh72zwam0f91d9w1x43hi477xgh0qk4rv732j3hs3fbxb4z";
url = "https://elpa.nongnu.org/nongnu/sweeprolog-0.25.5.tar";
sha256 = "1gxy68a26h65rzf8815iifcnr67rpw69ll14d4cbq9qsxvrmy50h";
};
packageRequires = [ compat emacs ];
meta = {
@ -2964,10 +3016,10 @@
elpaBuild {
pname = "swift-mode";
ename = "swift-mode";
version = "9.0.0";
version = "9.1.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/swift-mode-9.0.0.tar";
sha256 = "1s69mm7yhz1dhxz118ik7nxqw6gliivbwv1qvylk8nz2lhr8sf9n";
url = "https://elpa.nongnu.org/nongnu/swift-mode-9.1.0.tar";
sha256 = "1zx25g2jdkc78pjhl36gwrc3kj5wxayfl8vgkl3k5gqsa7bjjbjm";
};
packageRequires = [ emacs seq ];
meta = {
@ -3120,10 +3172,10 @@
elpaBuild {
pname = "treeview";
ename = "treeview";
version = "1.1.1";
version = "1.2.0";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/treeview-1.1.1.tar";
sha256 = "0ryycz2n1kam3ji0ibpy99ll5l6xnx1mx9i9bgfvma61f0ppcppd";
url = "https://elpa.nongnu.org/nongnu/treeview-1.2.0.tar";
sha256 = "1vwkqnjj380w13xxj670da4kyqsxmjcsivaqd8k6w7bs59yrljkr";
};
packageRequires = [ emacs ];
meta = {
@ -3370,10 +3422,10 @@
elpaBuild {
pname = "workroom";
ename = "workroom";
version = "2.3";
version = "2.3.1";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/workroom-2.3.tar";
sha256 = "0c05pbxkrcgsjk7zcyxiacxrpxyvf85rf38nhaqhxbywh4j071fg";
url = "https://elpa.nongnu.org/nongnu/workroom-2.3.1.tar";
sha256 = "1rwixacz8dwws54dvm9dbrwnjh8xpqp1j594hwd4xfq9z1kfzz4f";
};
packageRequires = [ compat emacs project ];
meta = {
@ -3418,10 +3470,10 @@
elpaBuild {
pname = "xah-fly-keys";
ename = "xah-fly-keys";
version = "24.10.20230911080522";
version = "24.13.20231009115302";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-24.10.20230911080522.tar";
sha256 = "07k3v9gf7hbnicrggspd8xx2qwmd5x0vrfmy0x8fx21d61fylqvh";
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-24.13.20231009115302.tar";
sha256 = "0k530ihjjwcvl24f815nk9jqfnbhzb95xlfm8721dlsbrsmsaiwc";
};
packageRequires = [ emacs ];
meta = {
@ -3444,16 +3496,16 @@
license = lib.licenses.free;
};
}) {};
xml-rpc = callPackage ({ elpaBuild, fetchurl, lib }:
xml-rpc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "xml-rpc";
ename = "xml-rpc";
version = "1.6.16";
version = "1.6.17";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/xml-rpc-1.6.16.tar";
sha256 = "0gglrrnicbsf1lrk4pwmif5658yrhx80ixgi5hm85p8yxarn3ynm";
url = "https://elpa.nongnu.org/nongnu/xml-rpc-1.6.17.tar";
sha256 = "0k029lsyz1gpx88pprx5nj2qzkgk6dfc9kvna6a94r6m14brrgyc";
};
packageRequires = [];
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/xml-rpc.html";
license = lib.licenses.free;
@ -3463,10 +3515,10 @@
elpaBuild {
pname = "yaml-mode";
ename = "yaml-mode";
version = "0.0.15";
version = "0.0.16";
src = fetchurl {
url = "https://elpa.nongnu.org/nongnu/yaml-mode-0.0.15.tar";
sha256 = "19r2kc894dd59f0r3q4gx52iw5cwj5gi1jjkmi8r9y0dya50rzfx";
url = "https://elpa.nongnu.org/nongnu/yaml-mode-0.0.16.tar";
sha256 = "19j90sss45gvs76nl1fxi0xahbygy2v639ziwcj93d9vs2p9axs0";
};
packageRequires = [ emacs ];
meta = {

View File

@ -2,13 +2,13 @@
mkDerivation rec {
pname = "neovim-qt-unwrapped";
version = "0.2.17";
version = "0.2.18";
src = fetchFromGitHub {
owner = "equalsraf";
repo = "neovim-qt";
rev = "v${version}";
sha256 = "sha256-UJXaHENqau5EEe5c94pJuNxZU5rutJs642w9Cof8Sa4=";
sha256 = "sha256-BitFHHwL2aqBUpY/8eHaZIFvnDCeABC6w33Vmbx0z2g=";
};
cmakeFlags = [

View File

@ -22,10 +22,10 @@
let
pname = "typora";
version = "1.7.5";
version = "1.7.6";
src = fetchurl {
url = "https://download.typora.io/linux/typora_${version}_amd64.deb";
hash = "sha256-4Q+fx1kNu98+nxnI/7hLhE6zOdNsaAiAnW6xVd+hZOI=";
hash = "sha256-o91elUN8sFlzVfIQj29amsiUdSBjZc51tLCO+Qfar6c=";
};
typoraBase = stdenv.mkDerivation {

File diff suppressed because it is too large Load Diff

View File

@ -360,12 +360,12 @@
};
dart = buildGrammar {
language = "dart";
version = "0.0.0+rev=7e447dc";
version = "0.0.0+rev=e14bbac";
src = fetchFromGitHub {
owner = "UserNobody14";
repo = "tree-sitter-dart";
rev = "7e447dc18a2d293498670fb5ea16138648c883e5";
hash = "sha256-BCWtpTgEv/3ahiflK3wHmnhHjTmtmvJxHGo2X7FggsE=";
rev = "e14bbac8a0fcb6fab1b3becf6ed3fe464123c377";
hash = "sha256-9CNKTaP9XudM6BDUlXmroJZ31c3eqjF2s0+Bb5mcfm4=";
};
meta.homepage = "https://github.com/UserNobody14/tree-sitter-dart";
};
@ -745,6 +745,17 @@
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-glsl";
};
gn = buildGrammar {
language = "gn";
version = "0.0.0+rev=bc06955";
src = fetchFromGitHub {
owner = "amaanq";
repo = "tree-sitter-gn";
rev = "bc06955bc1e3c9ff8e9b2b2a55b38b94da923c05";
hash = "sha256-Sn6He4YRrKJe4QvGiaauquYBVQol0lWeIuOwkdUEzkQ=";
};
meta.homepage = "https://github.com/amaanq/tree-sitter-gn";
};
go = buildGrammar {
language = "go";
version = "0.0.0+rev=bbaa67a";
@ -868,12 +879,12 @@
};
haskell = buildGrammar {
language = "haskell";
version = "0.0.0+rev=d7ac98f";
version = "0.0.0+rev=ca10c43";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-haskell";
rev = "d7ac98f49e3ed7e17541256fe3881a967d7ffdd3";
hash = "sha256-XEfZSNnvF2BMOWwTfk6GXSnSpbKVfAYk7I3XbO1tIBg=";
rev = "ca10c43a4c9bfe588c480d2941726c2fadcae699";
hash = "sha256-HyS9Q6+WSUgyQ9mL5sZvQ4CHW+3MypT2U9b1X5NnMHc=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-haskell";
};
@ -1196,14 +1207,25 @@
};
meta.homepage = "https://github.com/cbarrete/tree-sitter-ledger";
};
leo = buildGrammar {
language = "leo";
version = "0.0.0+rev=91d7aa6";
src = fetchFromGitHub {
owner = "r001";
repo = "tree-sitter-leo";
rev = "91d7aa606f524cf4f5df7f4aacb45b4056fac704";
hash = "sha256-8nea6Qg0eT5ciif+tzD13TcFqP9/uJVxgVSW93OdiVY=";
};
meta.homepage = "https://github.com/r001/tree-sitter-leo";
};
liquidsoap = buildGrammar {
language = "liquidsoap";
version = "0.0.0+rev=bbef4df";
version = "0.0.0+rev=4620ab7";
src = fetchFromGitHub {
owner = "savonet";
repo = "tree-sitter-liquidsoap";
rev = "bbef4df4dc5b324455ad1ea4770bbed0df5130ea";
hash = "sha256-SGWO/sQ022atbX8qTXWeSnrYlSX13N03LhXJoc9YgPQ=";
rev = "4620ab746d1e9e5b6ebccaaa6afc5ebce06b4d75";
hash = "sha256-M9HTG58WMvQ1PS7oRDeJ+bUwe+bmXf/fuTc6inEtkek=";
};
meta.homepage = "https://github.com/savonet/tree-sitter-liquidsoap";
};
@ -1441,6 +1463,17 @@
};
meta.homepage = "https://github.com/amaanq/tree-sitter-objc";
};
objdump = buildGrammar {
language = "objdump";
version = "0.0.0+rev=64e4741";
src = fetchFromGitHub {
owner = "ColinKennedy";
repo = "tree-sitter-objdump";
rev = "64e4741d58345c36ded639f5a3bcd7811be7f8f8";
hash = "sha256-v5skJKQ/c0YeGVj3Vs+SNnFqTkp0mblZU4DyJ9hg7s4=";
};
meta.homepage = "https://github.com/ColinKennedy/tree-sitter-objdump";
};
ocaml = buildGrammar {
language = "ocaml";
version = "0.0.0+rev=694c577";
@ -1534,23 +1567,23 @@
};
perl = buildGrammar {
language = "perl";
version = "0.0.0+rev=79e88f6";
version = "0.0.0+rev=495ea4b";
src = fetchFromGitHub {
owner = "ganezdragon";
owner = "tree-sitter-perl";
repo = "tree-sitter-perl";
rev = "79e88f64681660f3961939bf764d8f3b4bbb0d27";
hash = "sha256-cadmD6kXhA3TENHhM03+iX2J0+Z0UhHizFiZLnknXLk=";
rev = "495ea4b2bb2ca7ebc64c598e4a60d8c0856b2811";
hash = "sha256-6xLeT4dfBnxysrfW7kX3KyW96dfJgN4L040xI8IWVMU=";
};
meta.homepage = "https://github.com/ganezdragon/tree-sitter-perl";
meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-perl";
};
php = buildGrammar {
language = "php";
version = "0.0.0+rev=92a98ad";
version = "0.0.0+rev=0e02e7f";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-php";
rev = "92a98adaa534957b9a70b03e9acb9ccf9345033a";
hash = "sha256-/JI1eyf1UZmtQ7bhfBLpA+8mMfIc8jRncri8Mz2mf5M=";
rev = "0e02e7fab7913a0e77343edb347c8f17cac1f0ba";
hash = "sha256-cHXstpU5XaBv9vO59DKol7PfrVLc0olBLlhkb3wFNDE=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-php";
};
@ -1587,6 +1620,17 @@
};
meta.homepage = "https://github.com/erasin/tree-sitter-po";
};
pod = buildGrammar {
language = "pod";
version = "0.0.0+rev=ea5d557";
src = fetchFromGitHub {
owner = "tree-sitter-perl";
repo = "tree-sitter-pod";
rev = "ea5d557cbd185cdcb5efcfdb6bc846fe909d86ae";
hash = "sha256-CFPfpFQYlaryMX/k6tBT9k0WbQRz2vdVzh++lIVYe80=";
};
meta.homepage = "https://github.com/tree-sitter-perl/tree-sitter-pod";
};
poe_filter = buildGrammar {
language = "poe_filter";
version = "0.0.0+rev=d7b43b5";
@ -2033,12 +2077,12 @@
};
sql = buildGrammar {
language = "sql";
version = "0.0.0+rev=36c4de3";
version = "0.0.0+rev=caf2938";
src = fetchFromGitHub {
owner = "derekstride";
repo = "tree-sitter-sql";
rev = "36c4de35f76dfa732493aae606feb69dce4b1daa";
hash = "sha256-D8gt0shaEU1zPjLHe+h/cCk6Z1xx5Va17A/0XDB1rvo=";
rev = "caf2938f1bc6b174e5bf5b6f3b5522cb723ee55b";
hash = "sha256-PbbPp6CsnrFj7/OwF957MEbSf3PekXon7dMkcoHMO7c=";
};
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
};
@ -2470,12 +2514,12 @@
};
wing = buildGrammar {
language = "wing";
version = "0.0.0+rev=bde9356";
version = "0.0.0+rev=8abdb5e";
src = fetchFromGitHub {
owner = "winglang";
repo = "wing";
rev = "bde93562c6dae6aaffd641cb367356386da412d0";
hash = "sha256-Fv2tc7KmY9Hn5TqO5JKjbj33rYQvLQwpzBYO+W0bySU=";
rev = "8abdb5e1846a56004bcba6e1d9a735e22bb5fff4";
hash = "sha256-Pmj7Tk9GSeRNIvWODo9StI1c0Hx35B/G15r4kGvErgs=";
};
location = "libs/tree-sitter-wing";
generate = true;

View File

@ -999,7 +999,7 @@ self: super: {
pname = "sg-nvim-rust";
inherit (old) version src;
cargoHash = "sha256-wJpJELVgzixzu8T9EHACur3LNm/sqfkkbGn+AkApzW4=";
cargoHash = "sha256-Rqs9INcc53SYGXHRyeTbLkGGU035i2i6n6A4ekFKve0=";
nativeBuildInputs = [ pkg-config ];

View File

@ -190,6 +190,7 @@ https://github.com/aca/completion-tabnine/,,
https://github.com/nvim-treesitter/completion-treesitter/,,
https://github.com/chikatoike/concealedyank.vim/,,
https://github.com/rhysd/conflict-marker.vim/,,
https://github.com/stevearc/conform.nvim/,HEAD,
https://github.com/Olical/conjure/,,
https://github.com/wellle/context.vim/,,
https://github.com/Shougo/context_filetype.vim/,,
@ -277,7 +278,6 @@ https://github.com/freddiehaddad/feline.nvim/,,
https://github.com/bakpakin/fennel.vim/,,
https://github.com/lambdalisue/fern.vim/,,
https://github.com/wincent/ferret/,,
https://github.com/mrcjkb/ferris.nvim/,HEAD,
https://github.com/j-hui/fidget.nvim/,legacy,
https://github.com/bogado/file-line/,,
https://github.com/glacambre/firenvim/,HEAD,
@ -734,6 +734,7 @@ https://github.com/keith/rspec.vim/,,
https://github.com/ccarpita/rtorrent-syntax-file/,,
https://github.com/simrat39/rust-tools.nvim/,,
https://github.com/rust-lang/rust.vim/,,
https://github.com/mrcjkb/rustaceanvim/,HEAD,
https://github.com/hauleth/sad.vim/,,
https://github.com/vmware-archive/salt-vim/,,
https://github.com/lewis6991/satellite.nvim/,HEAD,

View File

@ -5,13 +5,13 @@
stdenv.mkDerivation rec {
pname = "tesseract";
version = "5.3.2";
version = "5.3.3";
src = fetchFromGitHub {
owner = "tesseract-ocr";
repo = "tesseract";
rev = version;
sha256 = "sha256-49pTs9r9ebERC0S663+h/f70s693zDseKRziafCIaTo=";
sha256 = "sha256-/aGzwm2+0y8fheOnRi/OJXZy3o0xjY1cCq+B3GTzfos=";
};
enableParallelBuilding = true;

View File

@ -24,14 +24,14 @@
mkDerivation rec {
pname = "tellico";
version = "3.5.1";
version = "3.5.2";
src = fetchFromGitLab {
domain = "invent.kde.org";
owner = "office";
repo = pname;
rev = "v${version}";
hash = "sha256-opg4FbfOM48eqWQUJnMHH7KSo6x4S2DHd7ucPw6iTzg=";
hash = "sha256-48ZFSE+uFEtY3ry3ONT/d+KhfX93eTyW8z+PiXQqEn4=";
};
nativeBuildInputs = [

View File

@ -7,18 +7,18 @@
rustPlatform.buildRustPackage rec {
pname = "wttrbar";
version = "0.4.0";
version = "0.5.2";
src = fetchFromGitHub {
owner = "bjesus";
repo = "wttrbar";
rev = version;
hash = "sha256-697LoXu6x8ODQa7tG/NqpSqnLJgM765wBFFnKyul7uI=";
hash = "sha256-7Y1t/A4k4dgf1Y0OEGPVI3bklXJ/Wuc/IRLSknW/tL8=";
};
buildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk_11_0.frameworks.Security ];
cargoHash = "sha256-sxZ4R7QXQSuNFNRuOI/omON6QmQ0DTKQvjHy1BcvXAA=";
cargoHash = "sha256-ErS0QgI3CbhwgvkUPlR06twKt3Swb+8hlSJv7DO3S70=";
meta = {
description = "A simple but detailed weather indicator for Waybar using wttr.in";

View File

@ -3,10 +3,10 @@
{
firefox = buildMozillaMach rec {
pname = "firefox";
version = "118.0.2";
version = "119.0";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "fe9d7951927e44aee98a15840820251b779cc427f27597951497bd01fde3c3f2857942535c64c9d1a64f877c43802771304ed97254bffd9216f554e1af9efbf4";
sha512 = "4b555c444add36567fd538752b122f227cf78bb70b72c79e6d8ae8d9c2e61c3cdacfae79c37970753b8b5c7716b28c686071eb7b551773c30a76852f3550676c";
};
meta = {
@ -90,11 +90,11 @@
firefox-esr-115 = buildMozillaMach rec {
pname = "firefox-esr-115";
version = "115.3.1esr";
version = "115.4.0esr";
applicationName = "Mozilla Firefox ESR";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "65cb6fc46bba03eed742bd67f8e36b63b19f2ad7b85d2f503595704a4e88f554758a1e66ba548c8efe97a76322fb2514db72e6ff4bb2992d1aaa86edc3af85f1";
sha512 = "3ee680c5c503df7e4913794b7029ccffc10889f8f259f16030b24c1c18c1528439123532374ccb3a7e7a0d5d64068949cb85638a29694a7d99b74dd403ddefdc";
};
meta = {

View File

@ -34,6 +34,7 @@ let
, nameSuffix ? ""
, icon ? applicationName
, wmClass ? applicationName
, nativeMessagingHosts ? []
, extraNativeMessagingHosts ? []
, pkcs11Modules ? []
, useGlvnd ? true
@ -62,18 +63,28 @@ let
# PCSC-Lite daemon (services.pcscd) also must be enabled for firefox to access smartcards
smartcardSupport = cfg.smartcardSupport or false;
nativeMessagingHosts =
[ ]
++ lib.optional (cfg.enableBrowserpass or false) (lib.getBin browserpass)
++ lib.optional (cfg.enableBukubrow or false) bukubrow
++ lib.optional (cfg.enableTridactylNative or false) tridactyl-native
++ lib.optional (cfg.enableGnomeExtensions or false) gnome-browser-connector
++ lib.optional (cfg.enableUgetIntegrator or false) uget-integrator
++ lib.optional (cfg.enablePlasmaBrowserIntegration or false) plasma5Packages.plasma-browser-integration
++ lib.optional (cfg.enableFXCastBridge or false) fx-cast-bridge
++ lib.optional (cfg.enableKeePassXC or false) keepassxc
++ extraNativeMessagingHosts
;
deprecatedNativeMessagingHost = option: pkg:
if (cfg.${option} or false)
then
lib.warn "The cfg.${option} argument for `firefox.override` is deprecated, please add `pkgs.${pkg.pname}` to `nativeMessagingHosts` instead"
[pkg]
else [];
allNativeMessagingHosts = builtins.map lib.getBin (
nativeMessagingHosts
++ deprecatedNativeMessagingHost "enableBrowserpass" browserpass
++ deprecatedNativeMessagingHost "enableBukubrow" bukubrow
++ deprecatedNativeMessagingHost "enableTridactylNative" tridactyl-native
++ deprecatedNativeMessagingHost "enableGnomeExtensions" gnome-browser-connector
++ deprecatedNativeMessagingHost "enableUgetIntegrator" uget-integrator
++ deprecatedNativeMessagingHost "enablePlasmaBrowserIntegration" plasma5Packages.plasma-browser-integration
++ deprecatedNativeMessagingHost "enableFXCastBridge" fx-cast-bridge
++ deprecatedNativeMessagingHost "enableKeePassXC" keepassxc
++ (if extraNativeMessagingHosts != []
then lib.warn "The extraNativeMessagingHosts argument for the Firefox wrapper is deprecated, please use `nativeMessagingHosts`" extraNativeMessagingHosts
else [])
);
libs = lib.optionals stdenv.isLinux [ udev libva mesa libnotify xorg.libXScrnSaver cups pciutils ]
++ lib.optional pipewireSupport pipewire
++ lib.optional ffmpegSupport ffmpeg_5
@ -338,7 +349,7 @@ let
install -D -t $out/share/applications $desktopItem/share/applications/*
mkdir -p $out/lib/mozilla/native-messaging-hosts
for ext in ${toString nativeMessagingHosts}; do
for ext in ${toString allNativeMessagingHosts}; do
ln -sLt $out/lib/mozilla/native-messaging-hosts $ext/lib/mozilla/native-messaging-hosts/*
done

View File

@ -26,7 +26,7 @@ let
};
pname = "qutebrowser";
version = "3.0.0";
version = "3.0.2";
in
assert withMediaPlayback -> gst_all_1 != null;
@ -39,7 +39,7 @@ python3.pkgs.buildPythonApplication {
inherit pname version;
src = fetchurl {
url = "https://github.com/qutebrowser/qutebrowser/releases/download/v${version}/${pname}-${version}.tar.gz";
hash = "sha256-Oer0p/DwUfOejUCgSCSkMvLLAjNyJx51qgN7bcQQ2Pw=";
hash = "sha256-pRiT3koSNRmvuDcjuc7SstmPTKUoUnjIHpvdqR7VvFE=";
};
# Needs tox

View File

@ -7,13 +7,13 @@
buildGoModule rec {
pname = "tf-summarize";
version = "0.3.3";
version = "0.3.6";
src = fetchFromGitHub {
owner = "dineshba";
repo = "tf-summarize";
rev = "v${version}";
hash = "sha256-1sYWOvSWxoS0R6M1HxJ6yyBSa/LY3b9G8mF3NMofFhM=";
hash = "sha256-8TRX7gAbBlCIOHbwRIVoke2WBSgwLx9121Fg5h0LPF0=";
};
vendorHash = "sha256-YdfZt8SHBJHk5VUC8Em97EzX79EV4hxvo0B05npBA2U=";

File diff suppressed because it is too large Load Diff

View File

@ -1,9 +1,7 @@
{ lib
, stdenv
, writeText
, rustPlatform
, fetchFromGitHub
, fetchpatch
, pkg-config
, protobuf
, makeWrapper
@ -19,18 +17,20 @@
}:
rustPlatform.buildRustPackage rec {
pname = "mullvad";
version = "2023.3";
version = "2023.5";
src = fetchFromGitHub {
owner = "mullvad";
repo = "mullvadvpn-app";
rev = version;
hash = "sha256-as/d14xVTqJvb+QxzEyZWh1EMRVpE8cDQRbdc4R4pcU=";
hash = "sha256-bu16U9XJiIuYG9Npljos2ytfloSoGIl1ayH43w0aeKY=";
};
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"nix-0.26.1" = "sha256-b5bLeZVNbJE7aBnyzl0qvo0mXFeXa4hAZiuT1VJiFLk=";
"shadowsocks-1.15.3" = "sha256-P35IQL2sAfrtjwMDn8k/kmkk2IMsvq6zICRRGUGfqJI=";
"udp-over-tcp-0.3.0" = "sha256-5PeaM7/zhux1UdlaKpnQ2yIdmFy1n2weV/ux9lSRha4=";
};
};

View File

@ -5,6 +5,7 @@
, installShellFiles
, jq
, python3
, fetchpatch
}:
python3.pkgs.buildPythonApplication rec {
@ -19,6 +20,14 @@ python3.pkgs.buildPythonApplication rec {
hash = "sha256-dxyI9ypZZBouTUF72wzvi7j+CeoQ9JNSiXrVeV7ForY=";
};
patches = [
(fetchpatch {
name = "disable-broken-urwid-test.patch";
url = "https://github.com/pimutils/todoman/commit/7ff0d2e2e69e24df5d66fecc58f8cd0b4e5ced6d.patch";
hash = "sha256-MMNnnIthNqobexd8GaA6lYxzv5gr1l0e9YK+Ygeje2w=";
})
];
SETUPTOOLS_SCM_PRETEND_VERSION = version;
nativeBuildInputs = [

View File

@ -1,4 +1,4 @@
{ lib, stdenv, fetchurl, groff, pkg-config, python2, guile, gtk2, flex, gawk, perl }:
{ lib, stdenv, fetchurl, fetchpatch, autoreconfHook, groff, pkg-config, guile, gtk2, flex, gawk, perl }:
stdenv.mkDerivation rec {
pname = "geda";
@ -9,12 +9,20 @@ stdenv.mkDerivation rec {
hash = "sha256-6GKrJBUoU4+jvuJzkmH1aAERArYMXjmi8DWGY8BCyKQ=";
};
patches = [
(fetchpatch {
name = "geda-1.10.2-drop-xorn.patch";
url = "https://gitweb.gentoo.org/repo/gentoo.git/plain/sci-electronics/geda/files/geda-1.10.2-drop-xorn.patch?id=5589cc7bc6c4f18f75c40725a550b8d76e7f5ca1";
hash = "sha256-jPQaHjEDwCEfZqDGku+xyIMl5WlWlVcpPv1W6Xf8Grs=";
})
];
configureFlags = [
"--disable-update-xdg-database"
"--without-libfam"
];
nativeBuildInputs = [ groff pkg-config python2 ];
nativeBuildInputs = [ autoreconfHook groff pkg-config ];
buildInputs = [ guile gtk2 flex gawk perl ];
meta = with lib; {

View File

@ -4,13 +4,13 @@
stdenv.mkDerivation rec {
pname = "verilator";
version = "5.012";
version = "5.016";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "v${version}";
hash = "sha256-Y6GkIgkauayJmGhOQg2kWjbcxYVIob6InMopv555Lb8=";
hash = "sha256-MVQbAZXSIdzX7+yKbSrFLLd0j6dfLSXpES3uu6bcPt8=";
};
enableParallelBuilding = true;

View File

@ -0,0 +1,40 @@
{ lib, buildKodiAddon, fetchFromGitHub, addonUpdateScript, kodi, inputstreamhelper }:
buildKodiAddon rec {
pname = "sendtokodi";
namespace = "plugin.video.sendtokodi";
version = "0.9.557";
src = fetchFromGitHub {
owner = "firsttris";
repo = "plugin.video.sendtokodi";
rev = "v${version}";
hash = "sha256-Ga+9Q7x8+sEmQmteHbSyCahZ/T/l28BAEM84w7bf7z8=";
};
patches = [
./use-packaged-deps.patch
];
propagatedBuildInputs = [
inputstreamhelper
];
postPatch = ''
# Remove vendored youtube-dl and yt-dlp libraries.
rm -r lib/
'';
passthru = {
# Instead of the vendored libraries, we propagate youtube-dl and yt-dlp via
# the Python path.
pythonPath = with kodi.pythonPackages; makePythonPath [ youtube-dl yt-dlp ];
};
meta = with lib; {
homepage = "https://github.com/firsttris/plugin.video.sendtokodi";
description = "Plays various stream sites on Kodi using youtube-dl";
license = licenses.mit;
maintainers = teams.kodi.members ++ [ maintainers.pks ];
};
}

View File

@ -0,0 +1,16 @@
diff --git a/service.py b/service.py
index 1d7b6e4..9782993 100644
--- a/service.py
+++ b/service.py
@@ -241,9 +241,9 @@ def playlistIndex(url, playlist):
# Use the chosen resolver while forcing to use youtube_dl on legacy python 2 systems (dlp is python 3.6+)
if xbmcplugin.getSetting(int(sys.argv[1]),"resolver") == "0" or sys.version_info[0] == 2:
- from lib.youtube_dl import YoutubeDL
+ from youtube_dl import YoutubeDL
else:
- from lib.yt_dlp import YoutubeDL
+ from yt_dlp import YoutubeDL
# patch broken strptime (see above)
patch_strptime()

View File

@ -42,6 +42,7 @@ stdenv.mkDerivation rec {
homepage = "https://mediathekview.de/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.gpl3Plus;
mainProgram = "mediathek";
maintainers = with maintainers; [ moredread ];
platforms = platforms.all;
};

View File

@ -2,13 +2,13 @@
stdenvNoCC.mkDerivation rec {
pname = "mpv-thumbnail-script";
version = "0.5.2";
version = "0.5.3";
src = fetchFromGitHub {
owner = "marzzzello";
repo = "mpv_thumbnail_script";
rev = version;
sha256 = "sha256-6J1eeuSYyUJmWLIl9WsQ4NzQOBJNO3Cnl5jcPEal4vM=";
sha256 = "sha256-J24Rou7BTE7zoiPlBkWuO9dtYJiuzkuwB4FROuzXzag=";
};
nativeBuildInputs = [ python3 ];

View File

@ -110,7 +110,20 @@ let
gccForLibs_solib = getLib gccForLibs
+ optionalString (targetPlatform != hostPlatform) "/${targetPlatform.config}";
# older compilers (for example bootstrap's GCC 5) fail with -march=too-modern-cpu
# The following two functions, `isGccArchSupported` and
# `isGccTuneSupported`, only handle those situations where a flag
# (`-march` or `-mtune`) is accepted by one compiler but rejected
# by another, and both compilers are relevant to nixpkgs. We are
# not trying to maintain a complete list of all flags accepted by
# all versions of all compilers ever in nixpkgs.
#
# The two main cases of interest are:
#
# - One compiler is gcc and the other is clang
# - One compiler is pkgs.gcc and the other is bootstrap-files.gcc
# -- older compilers (for example bootstrap's GCC 5) fail with
# -march=too-modern-cpu
isGccArchSupported = arch:
if targetPlatform.isPower then false else # powerpc does not allow -march=
if isGNU then
@ -159,6 +172,51 @@ let
else
false;
isGccTuneSupported = tune:
# for x86 -mtune= takes the same values as -march, plus two more:
if targetPlatform.isx86 then
{
generic = true;
intel = true;
}.${tune} or (isGccArchSupported tune)
# on arm64, the -mtune= values are specific processors
else if targetPlatform.isAarch64 then
(if isGNU then
{
cortex-a53 = versionAtLeast ccVersion "4.8"; # gcc 8c075f
cortex-a72 = versionAtLeast ccVersion "5.1"; # gcc d8f70d
"cortex-a72.cortex-a53" = versionAtLeast ccVersion "5.1"; # gcc d8f70d
}.${tune} or false
else if isClang then
{
cortex-a53 = versionAtLeast ccVersion "3.9"; # llvm dfc5d1
}.${tune} or false
else false)
else if targetPlatform.isPower then
# powerpc does not support -march
true
else if targetPlatform.isMips then
# for mips -mtune= takes the same values as -march
isGccArchSupported tune
else
false;
# Clang does not support as many `-mtune=` values as gcc does;
# this function will return the best possible approximation of the
# provided `-mtune=` value, or `null` if none exists.
#
# Note: this function can make use of ccVersion; for example, `if
# versionOlder ccVersion "12" then ...`
findBestTuneApproximation = tune:
let guess = if isClang
then {
# clang does not tune for big.LITTLE chips
"cortex-a72.cortex-a53" = "cortex-a72";
}.${tune} or tune
else tune;
in if isGccTuneSupported guess
then guess
else null;
darwinPlatformForCC = optionalString stdenv.targetPlatform.isDarwin (
if (targetPlatform.darwinPlatform == "macos" && isGNU) then "macosx"
@ -559,10 +617,12 @@ stdenv.mkDerivation {
+ optionalString (targetPlatform ? gcc.thumb) ''
echo "-m${if targetPlatform.gcc.thumb then "thumb" else "arm"}" >> $out/nix-support/cc-cflags-before
''
+ optionalString (targetPlatform ? gcc.tune &&
isGccArchSupported targetPlatform.gcc.tune) ''
echo "-mtune=${targetPlatform.gcc.tune}" >> $out/nix-support/cc-cflags-before
''
+ (let tune = if targetPlatform ? gcc.tune
then findBestTuneApproximation targetPlatform.gcc.tune
else null;
in optionalString (tune != null) ''
echo "-mtune=${tune}" >> $out/nix-support/cc-cflags-before
'')
# TODO: categorize these and figure out a better place for them
+ optionalString targetPlatform.isWindows ''

View File

@ -366,6 +366,10 @@ crate_: lib.makeOverridable
meta = {
mainProgram = crateName;
badPlatforms = [
# Rust is currently unable to target the n32 ABI
lib.systems.inspect.patterns.isMips64n32
];
};
} // extraDerivationAttrs
)

View File

@ -161,5 +161,9 @@ stdenv.mkDerivation ((removeAttrs args [ "depsExtraArgs" "cargoUpdateHook" "carg
"x86_64-redox"
"wasm32-wasi"
];
badPlatforms = [
# Rust is currently unable to target the n32 ABI
lib.systems.inspect.patterns.isMips64n32
];
} // meta;
})

View File

@ -15,11 +15,11 @@
stdenv.mkDerivation rec {
pname = "bruno";
version = "0.17.0";
version = "0.27.0";
src = fetchurl {
url = "https://github.com/usebruno/bruno/releases/download/v${version}/bruno_${version}_amd64_linux.deb";
hash = "sha256-4FF9SEgWuIPQSarOBTaEvgdgRTkR1caRYr/bjfFmTLE=";
hash = "sha256-57Cbp/+3rNq/bhUItPuN6ZIjSd8IzmJsn9FNm89khiE=";
};
nativeBuildInputs = [ autoPatchelfHook dpkg wrapGAppsHook ];

View File

@ -0,0 +1,31 @@
{ lib
, stdenv
, rustPlatform
, fetchFromGitHub
, darwin
}:
rustPlatform.buildRustPackage rec {
pname = "cargo-xwin";
version = "0.14.8";
src = fetchFromGitHub {
owner = "rust-cross";
repo = "cargo-xwin";
rev = "v${version}";
hash = "sha256-VhpqmGhGBqB20ZteIwbd0GCIUltBGfBw7XF9lH7witA=";
};
cargoHash = "sha256-e5QyaiQKlIzBwJE781BrhdVINacw0iniPywIsoMlCGg=";
buildInputs = lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.Security
];
meta = with lib; {
description = "Cross compile Cargo project to Windows MSVC target with ease";
homepage = "https://github.com/rust-cross/cargo-xwin";
license = with licenses; [ mit ];
maintainers = with maintainers; [ shivaraj-bh ];
};
}

View File

@ -0,0 +1,25 @@
{ lib
, buildGoModule
, fetchFromGitHub
}:
buildGoModule rec {
pname = "cidr-merger";
version = "1.1.3";
src = fetchFromGitHub {
owner = "zhanhb";
repo = "cidr-merger";
rev = "v${version}";
sha256 = "sha256-Kb+89VP7JhBrTE4MM3H/dqoIBgDLnVhKqkgHdymYCgk=";
};
vendorHash = "sha256-cPri384AX/FdfNtzt3xj4bF+/izSa4sZuAohK0R/7H4=";
meta = with lib; {
description = "A simple command line tool to merge ip/ip cidr/ip range, supports IPv4/IPv6";
homepage = "https://github.com/zhanhb/cidr-merger";
license = licenses.mit;
maintainers = with maintainers; [ cyounkins ];
};
}

View File

@ -1,7 +1,5 @@
{ lib
, stdenv
, fetchzip
, fetchurl
, fetchFromGitHub
, autoreconfHook
, bashInteractive
@ -14,7 +12,6 @@
, gettext
, git
, glib
, glibc
, glib-networking
, gnused
, gnutls
@ -26,6 +23,7 @@
, makeWrapper
, nodejs
, nixosTests
, nix-update-script
, openssh
, openssl
, pam
@ -47,13 +45,13 @@ in
stdenv.mkDerivation rec {
pname = "cockpit";
version = "287";
version = "303";
src = fetchFromGitHub {
owner = "cockpit-project";
repo = "cockpit";
rev = "refs/tags/${version}";
sha256 = "sha256-tIZOI3jiMRaGHMXS1mA1Tom9ij3L/VuxDUJdnEc7SSc=";
hash = "sha256-1VPnmb4VDSwzdXtk2YZVHH4qFJSe2OPzsmzVD/NkbYg=";
fetchSubmodules = true;
};
@ -108,6 +106,7 @@ stdenv.mkDerivation rec {
--replace 'devel@lists.cockpit-project.org' 'https://github.com/NixOS/nixpkgs/issues/new?assignees=&labels=0.kind%3A+bug&template=bug_report.md&title=cockpit%25'
patchShebangs \
build.js \
test/common/pixel-tests \
test/common/run-tests \
test/common/tap-cdp \
@ -126,9 +125,6 @@ stdenv.mkDerivation rec {
cp node_modules/.package-lock.json package-lock.json
substituteInPlace src/systemd_ctypes/libsystemd.py \
--replace libsystemd.so.0 ${systemd}/lib/libsystemd.so.0
for f in pkg/**/*.js pkg/**/*.jsx test/**/* src/**/*; do
# some files substituteInPlace report as missing and it's safe to ignore them
substituteInPlace "$(realpath "$f")" \
@ -150,6 +146,7 @@ stdenv.mkDerivation rec {
"--disable-pcp" # TODO: figure out how to package its dependency
"--with-default-session-path=/run/wrappers/bin:/run/current-system/sw/bin"
"--with-admin-group=root" # TODO: really? Maybe "wheel"?
"--enable-old-bridge=yes"
];
enableParallelBuilding = true;
@ -213,12 +210,12 @@ stdenv.mkDerivation rec {
make check -j$NIX_BUILD_CORES || true
test/static-code
npm run eslint
npm run stylelint
npm run stylelint || true
'';
passthru = {
tests = { inherit (nixosTests) cockpit; };
updateScript = ./update.sh;
updateScript = nix-update-script {};
};
meta = with lib; {

View File

@ -0,0 +1,79 @@
{ lib
, stdenv
, fetchFromGitHub
, SDL2
, SDL2_image
, unixtools
, multimarkdown
}:
stdenv.mkDerivation rec {
pname = "decker";
version = "1.31";
src = fetchFromGitHub {
owner = "JohnEarnest";
repo = "Decker";
rev = "v${version}";
hash = "sha256-9utCIf7LO/ms46QqagkcXZ3BuvRuLa6nE78MgkbaEjA=";
};
buildInputs = [
SDL2
SDL2_image
multimarkdown
unixtools.xxd
];
doCheck = true;
postPatch = ''
patchShebangs ./scripts
'';
buildPhase = ''
runHook preBuild
make lilt
make decker
make docs
runHook postBuild
'';
installPhase = ''
runHook preInstall
install -Dm0755 ./c/build/lilt -t $out/bin
install -Dm0755 ./c/build/decker -t $out/bin
install -Dm0644 ./syntax/vim/ftdetect/lil.vim -t $out/share/vim-plugins/decker/ftdetect
install -Dm0644 ./syntax/vim/syntax/lil.vim -t $out/share/vim-plugins/decker/syntax
# Fixing the permissions of the installed files on the documentation.
chmod a-x ./docs/images/* \
./docs/*.md \
./examples/decks/*.deck \
./examples/lilt/*.lil
# This example has a shebang so we'll leave it as an executable.
chmod a+x ./examples/lilt/podcasts.lil
mkdir -p $out/share/doc/decker
cp -r ./docs/*.html ./docs/images ./examples $out/share/doc/decker
runHook postInstall
'';
checkPhase = ''
runHook preCheck
make test
runHook postCheck
'';
meta = with lib; {
homepage = "https://beyondloom.com/decker";
description = "Multimedia platform for creating and sharing interactive documents";
license = licenses.mit;
mainProgram = "decker";
platforms = platforms.all;
maintainers = with maintainers; [ foo-dogsquared ];
};
}

View File

@ -0,0 +1,87 @@
{ lib
, python3Packages
, fetchFromGitHub
, writeText
, copyDesktopItems
, makeDesktopItem
, makeWrapper
, onedrive
}:
let
version = "1.0.3";
setupPy = writeText "setup.py" ''
from setuptools import setup
setup(
name='onedrivegui',
version='${version}',
scripts=[
'src/OneDriveGUI.py',
],
)
'';
in
python3Packages.buildPythonApplication rec {
pname = "onedrivegui";
inherit version;
src = fetchFromGitHub {
owner = "bpozdena";
repo = "OneDriveGUI";
rev = "v${version}";
hash = "sha256-HutziAzhIDYP8upNPieL2GNrxPBHUCVs09FFxdSqeBs=";
};
nativeBuildInputs = [ copyDesktopItems makeWrapper ];
propagatedBuildInputs = with python3Packages; [ pyside6 requests ];
# wrap manually to avoid having a bash script in $out/bin with a .py extension
dontWrapPythonPrograms = true;
doCheck = false; # No tests defined
pythonImportsCheck = [ "OneDriveGUI" ];
desktopItems = [
(makeDesktopItem {
name = "OneDriveGUI";
exec = "onedrivegui";
desktopName = "OneDriveGUI";
comment = "OneDrive GUI Client";
type = "Application";
icon = "OneDriveGUI";
terminal = false;
categories = [ "Utility" ];
})
];
postPatch = ''
# Patch OneDriveGUI.py so DIR_PATH points to shared files location
sed -i src/OneDriveGUI.py -e "s@^DIR_PATH =.*@DIR_PATH = '$out/share/OneDriveGUI'@"
cp ${setupPy} ${setupPy.name}
'';
postInstall = ''
mkdir -p $out/share/OneDriveGUI
# we do not need the `ui` directory - only resources
cp -r src/resources $out/share/OneDriveGUI
install -Dm444 -t $/out/share/icons/hicolor/48x48/apps src/resources/images/OneDriveGUI.png
# we put our own executable wrapper in place instead
rm -r $out/bin/*
makeWrapper ${python3Packages.python.interpreter} $out/bin/onedrivegui \
--prefix PATH : ${lib.makeBinPath [ onedrive ]} \
--prefix PYTHONPATH : ${python3Packages.makePythonPath (propagatedBuildInputs ++ [(placeholder "out")])} \
--add-flags $out/lib/${python3Packages.python.libPrefix}/site-packages/OneDriveGUI.py
'';
meta = with lib; {
homepage = "https://github.com/bpozdena/OneDriveGUI";
description = "A simple GUI for Linux OneDrive Client, with multi-account support";
license = licenses.gpl3Only;
maintainers = with maintainers; [ jgarcia ];
platforms = platforms.linux;
};
}

View File

@ -19,13 +19,13 @@
stdenv.mkDerivation rec {
pname = "pgmoneta";
version = "0.7.0";
version = "0.7.1";
src = fetchFromGitHub {
owner = "pgmoneta";
repo = "pgmoneta";
rev = version;
hash = "sha256-Acg60QFMmRTubYWkPxbHTciVOYoIWc3GZGQVauewZik=";
hash = "sha256-F3bQ3UytEunXf0w2Eo1vx3u0Q40usYhbCmCVuL9X9lI=";
};
nativeBuildInputs = [

View File

@ -0,0 +1,42 @@
{ lib
, stdenv
, fetchFromSourcehut
, wayland
, wayland-scanner
, unstableGitUpdater
}:
stdenv.mkDerivation rec {
pname = "river-bnf";
version = "unstable-2023-10-10";
src = fetchFromSourcehut {
owner = "~leon_plickat";
repo = pname;
rev = "bb8ded380ed5d539777533065b4fd33646ad5603";
hash = "sha256-rm9Nt3WLgq9QOXzrkYBGp45EALNYFTQGInxfYIN0XcU=";
};
nativeBuildInputs = [
wayland-scanner
];
buildInputs = [
wayland.dev
];
postPatch = ''
substituteInPlace Makefile --replace '/usr/local' $out
'';
passthru.updateScript = unstableGitUpdater { };
meta = {
description = "Switch back'n'forth between river tags";
homepage = "https://git.sr.ht/~leon_plickat/river-bnf";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ adamcstephens ];
mainProgram = "river-bnf";
platforms = lib.platforms.linux;
};
}

View File

@ -0,0 +1,62 @@
{ lib
, stdenv
, fetchFromGitHub
, meson
, ninja
, vala
, wrapGAppsHook
, pkg-config
, pantheon
, libhandy
, libportal
, glib
, gtk3
, desktop-file-utils
, scrot
, tesseract
}:
stdenv.mkDerivation (finalAttrs: {
pname = "textsnatcher";
version = "2.0.0";
src = fetchFromGitHub {
owner = "RajSolai";
repo = "TextSnatcher";
rev = "v${finalAttrs.version}";
hash = "sha256-phqtPjwKB5BoCpL+cMeHvRLL76ZxQ5T74cpAsgN+/JM=";
};
nativeBuildInputs = [
meson
ninja
vala
pkg-config
desktop-file-utils
wrapGAppsHook
];
buildInputs = [
pantheon.granite
libhandy
libportal
gtk3
glib
];
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : ${lib.makeBinPath [ scrot tesseract ]}
)
'';
meta = with lib; {
description = "Copy Text from Images with ease, Perform OCR operations in seconds";
homepage = "https://textsnatcher.rf.gd/";
changelog = "https://github.com/RajSolai/TextSnatcher/releases/tag/v${finalAttrs.version}";
license = licenses.gpl3Only;
maintainers = with maintainers; [ galaxy ];
mainProgram = "com.github.rajsolai.textsnatcher";
platforms = platforms.linux;
};
})

View File

@ -0,0 +1,33 @@
{ lib
, fetchgit
, buildGoModule
, installShellFiles
}:
buildGoModule {
pname = "waybar-mpris";
version = "unstable-2022-01-27";
src = fetchgit {
url = "https://git.hrfee.pw/hrfee/waybar-mpris";
rev = "485ec0ec0af80a0d63c10e94aebfc59b16aab46b";
hash = "sha256-BjLxWnDNsR2ZnNklNiKzi1DeoPpaZsRdKbVSwNwYhJ4=";
};
vendorHash = "sha256-85jFSAOfNMihv710LtfETmkKRqcdRuFCHVuPkW94X/Y=";
nativeBuildInputs = [ installShellFiles ];
CGO_LDFLAGS = "-s -w";
GOFLAGS = "-buildmode=pie -trimpath -ldflags=-linkmode=external -mod=readonly -modcacherw";
meta = with lib; {
description = "A waybar component/utility for displaying and controlling MPRIS2 compliant media players individually";
homepage = "https://git.hrfee.pw/hrfee/waybar-mpris";
license = licenses.mit;
mainProgram = "waybar-mpris";
maintainers = with maintainers; [ khaneliman ];
};
}

View File

@ -2,11 +2,11 @@
stdenvNoCC.mkDerivation rec {
pname = "unifont_upper";
version = "15.1.02";
version = "15.1.03";
src = fetchurl {
url = "mirror://gnu/unifont/unifont-${version}/${pname}-${version}.otf";
hash = "sha256-OTIwWA2p+7ldqEB5O6J18zU5RVoswC0t1G72fFeCKpU=";
hash = "sha256-IZM+21ipmDHoiHYfKQdoguLWN9KC9FlHsNbqOcXDBFQ=";
};
dontUnpack = true;

View File

@ -2,76 +2,78 @@
, stdenv
, fetchFromGitHub
, gtk-engine-murrine
, breeze-icons
, plasma-framework
, plasma-workspace
, jdupes
, libsForQt5
}:
stdenv.mkDerivation rec {
pname = "nordic";
version = "unstable-2023-05-12";
version = "unstable-2023-10-17";
srcs = [
(fetchFromGitHub {
owner = "EliverLara";
repo = pname;
rev = "399246cdcbdb1a714c5bb294857cd5a6494b6006";
sha256 = "sha256-0yZ4QYcdcGHEw6tdcXAKZ4e+mhNNmvihBxp2sLgTuu8=";
rev = "e97d2bcf4494f8ab502e33d13c74b396469a42f4";
hash = "sha256-7WfCE3eoJ7maAYqgQNb0mlw8u3zc6NAwTJN+PVojDcE=";
name = "Nordic";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = pname;
rev = "3599ddb6f8b7de936cf106bddd4f929ddfe88b1c";
sha256 = "sha256-ft5UbBnjP0xNFFVwk5Elvrpcj273OupjM+MGJVlvJZQ=";
rev = "73ed3490c13b2df6c3d27d6b3bcba0c087297f4a";
hash = "sha256-fRmGiqtjfGFIfr5hRBS3ZPFYEpQx391WoxphB5gRTJo=";
name = "Nordic-standard-buttons";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = pname;
rev = "b03b66d5badadc2e5ff27b8745a2308b8fafaa61";
sha256 = "sha256-6dORsGfYi7q8z7JWA3Y9oqVs9bhT/gbdSrcgJcebGP8=";
rev = "4b1fc2942bad203a0aa035cbb688b28005bb1011";
hash = "sha256-VU5Bo39l8xdR6QmbTR0Qic6XkSfDFrhyjoHaMm9SBYM=";
name = "Nordic-darker";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = pname;
rev = "e19b75f56e5c328352c183fc960a0be54e99836e";
sha256 = "sha256-deKHT0dE5tsUo7+vkzxQ/eRon7COrOAWolw17VtKhiE=";
rev = "6d57a16eef66c25f0212b7d2f02e208f2afdf4f9";
hash = "sha256-Sq5ZXOh+HA+udQHL2wUw5azgKwAVVvHGNb3SiuOn0nQ=";
name = "Nordic-darker-standard-buttons";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = pname;
rev = "b134b4a1299b3c4a2d9543707ec2b5a0fc97987c";
sha256 = "sha256-XSDwc0/59sUHkS0holvujmr/p6vX79648l9cxJqunuM=";
rev = "566e38c40bca86df93d0e9226c33d5d525d34454";
hash = "sha256-Wl/m2O0tVCFgZhPC/gcNgKr0JqQbiyQBpGEcp8g6kvY=";
name = "Nordic-bluish-accent";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = pname;
rev = "a4efbc09470b36f4cf6af60b5fdfeb8e09282fb3";
sha256 = "sha256-Qgrl6p0AhbhK0+aM8hu85Kz/Lz/b2Nn8uWS+WpTGjU4=";
rev = "b43efee28129634fdefe70f2a03c401efc7dc22f";
hash = "sha256-rLOWkfTMFEnVU2tuw5M2fvbNMPfxIu+gzi+3gnBEhx4=";
name = "Nordic-bluish-accent-standard-buttons";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "${pname}-polar";
rev = "0d44fb16d0f07ef8615fd7740317a518d2b9411f";
sha256 = "sha256-388251/Tg4jyn7c8zkrUxVFooN9O67xk2NTSeYa0VvI=";
rev = "2192acfce55fbb9a2982886abe25e623d0e7ff66";
hash = "sha256-B/sAy4I+9gX9dHXUldcN5t0vlOL2Jnoan/hRV+tNnSo=";
name = "Nordic-Polar";
})
(fetchFromGitHub {
owner = "EliverLara";
repo = "${pname}-polar";
rev = "0eea9185946fee20b6d7472548226a3652dea7ae";
sha256 = "sha256-8JFrmGKn8cl1x3TeDPee1zbMmtypJ9kALv/PRqRHGAU=";
rev = "a24b42411d8ea0dc63bf0778e443be251858e586";
hash = "sha256-02z4eMFtok1+SeW+ai7vZCXZb6ZhU4l4ch1Zc/GyhYM=";
name = "Nordic-Polar-standard-buttons";
})
];
@ -80,47 +82,57 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ jdupes ];
buildInputs = with libsForQt5; [
plasma-framework
qtgraphicaleffects
plasma-workspace
propagatedUserEnvPkgs = [
gtk-engine-murrine
breeze-icons
plasma-framework
plasma-workspace
];
dontWrapQtApps = true;
propagatedUserEnvPkgs = [ gtk-engine-murrine ];
installPhase = ''
runHook preInstall
# install theme files
mkdir -p $out/share/themes
cp -a Nordic* $out/share/themes
# remove uneeded files
rm -r $out/share/themes/*/.gitignore
rm -r $out/share/themes/*/Art
rm -r $out/share/themes/*/FUNDING.yml
rm -r $out/share/themes/*/LICENSE
rm -r $out/share/themes/*/README.md
rm -r $out/share/themes/*/{package.json,package-lock.json,Gulpfile.js}
rm -r $out/share/themes/*/src
rm -r $out/share/themes/*/cinnamon/*.scss
rm -r $out/share/themes/*/gnome-shell/{extensions,*.scss}
rm -r $out/share/themes/*/gnome-shell/{earlier-versions,extensions,*.scss}
rm -r $out/share/themes/*/gtk-2.0/{assets.svg,assets.txt,links.fish,render-assets.sh}
rm -r $out/share/themes/*/gtk-3.0/{apps,widgets,*.scss}
rm -r $out/share/themes/*/gtk-4.0/{apps,widgets,*.scss}
rm -r $out/share/themes/*/xfwm4/{assets,render_assets.fish}
# move wallpapers to appropriate directory
mkdir -p $out/share/wallpapers/Nordic
mv -v $out/share/themes/Nordic/extras/wallpapers/* $out/share/wallpapers/Nordic/
rmdir $out/share/themes/Nordic/extras{/wallpapers,}
# move kde related contents to appropriate directories
mkdir -p $out/share/{aurorae/themes,color-schemes,Kvantum,plasma,sddm/themes/Nordic}
mkdir -p $out/share/{aurorae/themes,color-schemes,Kvantum,plasma,sddm/themes,icons}
mv -v $out/share/themes/Nordic/kde/aurorae/* $out/share/aurorae/themes/
mv -v $out/share/themes/Nordic/kde/colorschemes/* $out/share/color-schemes/
mv -v $out/share/themes/Nordic/kde/konsole $out/share/
mv -v $out/share/themes/Nordic/kde/kvantum/* $out/share/Kvantum/
mv -v $out/share/themes/Nordic/kde/plasma/look-and-feel $out/share/plasma/
mv -v $out/share/themes/Nordic/kde/sddm/* $out/share/sddm/themes/Nordic/
mv -v $out/share/themes/Nordic/kde/sddm/* $out/share/sddm/themes/
mv -v $out/share/themes/Nordic/kde/folders/* $out/share/icons/
mv -v $out/share/themes/Nordic/kde/cursors/*-cursors $out/share/icons/
rm -rf $out/share/themes/Nordic/kde
# Replace duplicate files with hardlinks to the first file in each
# set of duplicates, reducing the installed size in about 65%
jdupes -L -r $out/share
# Replace duplicate files with symbolic links to the first file in
# each set of duplicates, reducing the installed size in about 53%
jdupes --quiet --link-soft --recurse $out/share
runHook postInstall
'';

View File

@ -20,8 +20,9 @@ stdenv.mkDerivation rec {
hash = "sha256-vbm31EsOJiMeTs2tu5KPXckxPcAQbi3/PGJ5EHCC5VQ=";
};
strictDeps = true;
nativeBuildInputs = [
autoreconfHook pkg-config texinfo
autoreconfHook guile libgcrypt pkg-config texinfo
];
buildInputs = [
guile

View File

@ -20,8 +20,9 @@ stdenv.mkDerivation rec {
sha256 = "x6apF9fmwzrkyzAexKjClOTFrbE31+fVhSLyFZkKRYU=";
};
strictDeps = true;
nativeBuildInputs = [
autoreconfHook pkg-config texinfo
autoreconfHook guile pkg-config texinfo
];
buildInputs = [
guile

View File

@ -17,7 +17,12 @@ stdenv.mkDerivation rec {
hash = "sha256-W0y5JgMgduw0a7XAvA0CMflo/g9WWRPMFpNLt5Ovsjk=";
};
nativeBuildInputs = [ pkg-config ];
strictDeps = true;
nativeBuildInputs = [
guile
pkg-config
];
buildInputs = [
gnutls

View File

@ -15,8 +15,9 @@ stdenv.mkDerivation rec {
sha256 = "sha256-OLoEjtKdEvBbMsWy+3pReVxEi0HkA6Kxty/wA1gX84g=";
};
strictDeps = true;
nativeBuildInputs = [
pkg-config texinfo
guile pkg-config texinfo
];
buildInputs = [
guile

View File

@ -16,8 +16,10 @@ stdenv.mkDerivation rec {
hash = "sha256-5O87hF8SGILHwM8E+BocuP02DG9ktWuGjeVUYhT5BN4=";
};
strictDeps = true;
nativeBuildInputs = [
autoreconfHook
guile
pkg-config
];
buildInputs = [

View File

@ -20,8 +20,10 @@ stdenv.mkDerivation rec {
sha256 = "sha256-C1a6lMK4O49043coh8EQkTWALrPolitig3eYf+l+HmM=";
};
strictDeps = true;
nativeBuildInputs = [
autoreconfHook
guile
pkg-config
texinfo
];

View File

@ -3,16 +3,16 @@
rustPlatform.buildRustPackage rec {
pname = "evcxr";
version = "0.15.1";
version = "0.16.0";
src = fetchFromGitHub {
owner = "google";
repo = "evcxr";
rev = "v${version}";
sha256 = "sha256-IQM/uKDxt18rVOd6MOKhQZC26vjxVe+3Yn479ITFDFs=";
sha256 = "sha256-TQG0YNwD3WU50fftFv5nGUK9ucxDXYnbQVv8Dewhwm8=";
};
cargoHash = "sha256-6kyxAHxphZjwfHo7OHrATSKFzrpXIRHVTjynDawlWew=";
cargoHash = "sha256-F2CduT0/vjoVHua5WshYxsxf4P0QBa+BjFVp7iTsFkU=";
RUST_SRC_PATH = "${rustPlatform.rustLibSrc}";

View File

@ -2,19 +2,19 @@
rustPlatform.buildRustPackage rec {
pname = "wasmtime";
version = "13.0.0";
version = "14.0.1";
src = fetchFromGitHub {
owner = "bytecodealliance";
repo = pname;
rev = "v${version}";
hash = "sha256-D8Osn/vlPr9eg5F8O0K/eC/M0prHQM7U96k8Cx9D1/4=";
hash = "sha256-9Bpq96k/AOuKPXHeVv3zCqinGUu3rBqKsIryV/RUVlE=";
fetchSubmodules = true;
};
# Disable cargo-auditable until https://github.com/rust-secure-code/cargo-auditable/issues/124 is solved.
auditable = false;
cargoHash = "sha256-nFKk6T3S86lPxn/JCEid2Xd9c5zQPOMFcKTi6eM89uE=";
cargoHash = "sha256-q/PTPiaggqYQwZZ9QyFi9ctgqYsFSy/ITHfOBgSHG+U=";
cargoBuildFlags = [ "--package" "wasmtime-cli" "--package" "wasmtime-c-api" ];
outputs = [ "out" "dev" ];

View File

@ -66,6 +66,8 @@ stdenv.mkDerivation (finalAttrs: {
] ++ lib.optionals stdenv.isDarwin [
./patches/2.0-gnome_bugzilla_557780_306776_freeciv_darwin.patch
./patches/2.0-darwin-x11.patch
# Fixes an incompatible function pointer conversion and implicit int errors with clang 16.
./patches/2.0-clang.patch
];
propagatedBuildInputs = [

View File

@ -0,0 +1,49 @@
diff --git a/gtk/gtkscale.c b/gtk/gtkscale.c
index 4317523fb8..3c09cd3ae8 100644
--- a/gtk/gtkscale.c
+++ b/gtk/gtkscale.c
@@ -1471,7 +1471,7 @@ gtk_scale_add_mark (GtkScale *scale,
mark->position = position;
priv->marks = g_slist_insert_sorted_with_data (priv->marks, mark,
- (GCompareFunc) compare_marks,
+ (GCompareDataFunc) compare_marks,
GINT_TO_POINTER (
gtk_range_get_inverted (GTK_RANGE (scale))
));
diff --git a/tests/testmenubars.c b/tests/testmenubars.c
index 416a939861..c65e82be26 100644
--- a/tests/testmenubars.c
+++ b/tests/testmenubars.c
@@ -21,7 +21,7 @@
#include <gtk/gtk.h>
static GtkWidget *
-create_menu (depth)
+create_menu (int depth, gboolean _unused)
{
GtkWidget *menu;
GtkWidget *menuitem;
@@ -35,19 +35,19 @@ create_menu (depth)
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show (menuitem);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
- create_menu (depth - 1));
+ create_menu (depth - 1, _unused));
menuitem = gtk_menu_item_new_with_mnemonic ("Two");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show (menuitem);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
- create_menu (depth - 1));
+ create_menu (depth - 1, _unused));
menuitem = gtk_menu_item_new_with_mnemonic ("Three");
gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem);
gtk_widget_show (menuitem);
gtk_menu_item_set_submenu (GTK_MENU_ITEM (menuitem),
- create_menu (depth - 1));
+ create_menu (depth - 1, _unused));
return menu;
}

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
substituteInPlace Makefile.in --replace '-Wl,--soname=' '-Wl,-install_name,$(out)/lib/'
'';
makeFlags = [ "CC:=$(CC)" ];
makeFlags = [ "CC:=$(CC)" "AR:=$(AR)" ];
doCheck = true;
configureFlags = [ "--enable-shared" ];

View File

@ -1,41 +0,0 @@
{lib, stdenv, fetchurl, libxpdf, libxml2}:
stdenv.mkDerivation {
name = "pdf2xml";
src = fetchurl {
url = "http://tarballs.nixos.org/pdf2xml.tar.gz";
sha256 = "04rl7ppxqgnvxvvws669cxp478lnrdmiqj0g3m4p69bawfjc4z3w";
};
sourceRoot = "pdf2xml/pdf2xml";
buildInputs = [libxml2 libxpdf];
patches = [./pdf2xml.patch];
hardeningDisable = [ "format" ];
preBuild = ''
cp Makefile.linux Makefile
sed -i 's|/usr/include/libxml2|${libxml2.dev}/include/libxml2|' Makefile
sed -i 's|-lxml2|-lxml2 -L${libxml2.out}/lib|' Makefile
sed -i 's|XPDF = xpdf_3.01|XPDF = ${libxpdf}/lib|' Makefile
mkdir exe
buildFlags+=" CXX=$CXX"
'';
installPhase = ''
mkdir -p $out/bin
cp exe/* $out/bin
'';
meta = with lib; {
description = "PDF to XML converter";
homepage = "https://sourceforge.net/projects/pdf2xml/";
platforms = platforms.unix;
license = licenses.gpl2;
};
}

View File

@ -1,48 +0,0 @@
diff -rc pdf2xml/pdf2xml/Makefile.linux pdf2xml-new/pdf2xml/Makefile.linux
*** pdf2xml/Makefile.linux 2008-02-07 17:43:10.000000000 +0100
--- pdf2xml-new/Makefile.linux 2010-08-25 15:41:23.000000000 +0200
***************
*** 30,36 ****
# Executable name
! PDFTOXMLEXE=pdftoxml.exe
# Main target
all: pdftoxmlEXE
--- 30,36 ----
# Executable name
! PDFTOXMLEXE=pdftoxml
# Main target
all: pdftoxmlEXE
diff -rc pdf2xml/pdf2xml/src/pdftoxml.cc pdf2xml-new/pdf2xml/src/pdftoxml.cc
*** pdf2xml/src/pdftoxml.cc 2010-04-26 10:58:01.000000000 +0200
--- pdf2xml-new/src/pdftoxml.cc 2010-08-25 15:36:15.000000000 +0200
***************
*** 11,21 ****
//
//===========================================================================
#include <aconf.h>
- #include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
! #include <string.h>
#include "parseargs.h"
#include "GString.h"
#include "gmem.h"
--- 11,21 ----
//
//===========================================================================
+ #include <string.h>
#include <aconf.h>
#include <stdlib.h>
#include <stddef.h>
! #include <cstdio>
#include "parseargs.h"
#include "GString.h"
#include "gmem.h"

View File

@ -17,8 +17,8 @@ let
src = fetchFromGitHub {
owner = "rhasspy";
repo = "espeak-ng";
rev = "61504f6b76bf9ebbb39b07d21cff2a02b87c99ff";
hash = "sha256-RBHL11L5uazAFsPFwul2QIyJREXk9Uz8HTZx9JqmyIQ=";
rev = "0f65aa301e0d6bae5e172cc74197d32a6182200f";
hash = "sha256-2V0D3QO+v9OqffpNmwJQd3NIBd/IFeLkjaJ3Y0HHw7E=";
};
patches = [
@ -28,13 +28,13 @@ let
in
stdenv.mkDerivation rec {
pname = "piper-phonemize";
version = "1.1.0";
version = "2023.9.27-2";
src = fetchFromGitHub {
owner = "rhasspy";
repo = "piper-phonemize";
rev = "refs/tags/v${version}";
hash = "sha256-cMer7CSLOXv3jc9huVA3Oy5cjXjOX9XuEXpIWau1BNQ=";
rev = "refs/tags/${version}";
hash = "sha256-Rwl8D5ZX9sGdxEch+l7pXdbf4nPCuSfGrK5x/EQ+O60=";
};
nativeBuildInputs = [
@ -42,6 +42,11 @@ stdenv.mkDerivation rec {
pkg-config
];
cmakeFlags = [
"-DONNXRUNTIME_DIR=${onnxruntime.dev}"
"-DESPEAK_NG_DIR=${espeak-ng'}"
];
buildInputs = [
espeak-ng'
onnxruntime

View File

@ -2,7 +2,7 @@
stdenv.mkDerivation rec {
pname = "randomX";
version = "1.1.10";
version = "1.2.1";
nativeBuildInputs = [ cmake ];
@ -10,7 +10,7 @@ stdenv.mkDerivation rec {
owner = "tevador";
repo = pname;
rev = "v${version}";
sha256 = "sha256-ZPphhZFzQL72xcEp9kNfZITY4oqK930ve/bbljTYNBs=";
sha256 = "sha256-dfImzwbEfJQcaPZCoWypHiI6dishVRdqS/r+n3tfjvM=";
};
meta = with lib; {

View File

@ -478,30 +478,6 @@ buildLuarocksPackage {
};
}) {};
ferris-nvim = callPackage({ fetchzip, buildLuarocksPackage, lua, luaOlder }:
buildLuarocksPackage {
pname = "ferris.nvim";
version = "2.0.0-1";
knownRockspec = (fetchurl {
url = "mirror://luarocks/ferris.nvim-2.0.0-1.rockspec";
sha256 = "00d3x2hbs8625ky50r2w08c6idcx3bkrk0rks5qd8yh7v61nj53h";
}).outPath;
src = fetchzip {
url = "https://github.com/mrcjkb/ferris.nvim/archive/2.0.0.zip";
sha256 = "1fb18k0ylb06h4ifs9k6lfc42y74xpavzwkqy55lfdkmlbc7jmhy";
};
disabled = (luaOlder "5.1");
propagatedBuildInputs = [ lua ];
meta = {
homepage = "https://github.com/mrcjkb/ferris.nvim";
description = "Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim";
maintainers = with lib.maintainers; [ mrcjkb ];
license.fullName = "GPL-2.0";
};
}) {};
fifo = callPackage({ fetchzip, lua, buildLuarocksPackage }:
buildLuarocksPackage {
pname = "fifo";
@ -2814,6 +2790,30 @@ buildLuarocksPackage {
};
}) {};
rustaceanvim = callPackage({ lua, luaOlder, buildLuarocksPackage, fetchzip }:
buildLuarocksPackage {
pname = "rustaceanvim";
version = "3.0.0-1";
knownRockspec = (fetchurl {
url = "mirror://luarocks/rustaceanvim-3.0.0-1.rockspec";
sha256 = "1v1k08spq3zalgya6q3qny6zpwhn0nb5nl5dn0rkcvnc4imvnyfy";
}).outPath;
src = fetchzip {
url = "https://github.com/mrcjkb/rustaceanvim/archive/3.0.0.zip";
sha256 = "1prpklbijr7p890nflr9jixf955dlp3ph9zl2rq3xxyl20ncyqbk";
};
disabled = (luaOlder "5.1");
propagatedBuildInputs = [ lua ];
meta = {
homepage = "https://github.com/mrcjkb/rustaceanvim";
description = "Supercharge your Rust experience in Neovim! A heavily modified fork of rust-tools.nvim";
maintainers = with lib.maintainers; [ mrcjkb ];
license.fullName = "GPL-2.0";
};
}) {};
say = callPackage({ luaOlder, fetchgit, lua, buildLuarocksPackage }:
buildLuarocksPackage {
pname = "say";

View File

@ -8,14 +8,13 @@
buildDunePackage rec {
pname = "carton";
version = "0.6.0";
version = "0.7.0";
minimalOCamlVersion = "4.08";
duneVersion = "3";
src = fetchurl {
url = "https://github.com/mirage/ocaml-git/releases/download/${pname}-v${version}/git-${pname}-v${version}.tbz";
hash = "sha256-NAm4Xq7L0Dgynr8cKZQ356M4GR6D19LbCRxvnSlIf1U=";
hash = "sha256-vWkBJdP4ZpRCEwzrFMzsdHay4VyiXix/+1qzk+7yDvk=";
};
patches = [

View File

@ -9,7 +9,7 @@
buildPythonPackage rec {
pname = "aioairzone-cloud";
version = "0.2.7";
version = "0.3.0";
format = "pyproject";
disabled = pythonOlder "3.7";
@ -18,7 +18,7 @@ buildPythonPackage rec {
owner = "Noltari";
repo = "aioairzone-cloud";
rev = "refs/tags/${version}";
hash = "sha256-v6cK4j16BhTqjdc5J9XQWGFCa1r9f0/dto9teVTNn0c=";
hash = "sha256-tsx98DG/TvTrVwUy9fscErf+3zUC5XVs50lHKW/9pdQ=";
};
nativeBuildInputs = [

View File

@ -13,7 +13,7 @@
buildPythonPackage rec {
pname = "aiowithings";
version = "0.4.4";
version = "1.0.0";
pyproject = true;
disabled = pythonOlder "3.11";
@ -22,7 +22,7 @@ buildPythonPackage rec {
owner = "joostlek";
repo = "python-withings";
rev = "refs/tags/v${version}";
hash = "sha256-YmTYwj3Udo1Pev25LLvY7757BR0h44aefqIe8b8FlTc=";
hash = "sha256-3necwO/EpjWD1fAItqsZJKgv0CIBklxcM1jNRPxhSVY=";
};
postPatch = ''

View File

@ -4,7 +4,7 @@
, pythonOlder
# build-system
, cython
, cython_3
, poetry-core
, setuptools
@ -17,12 +17,12 @@
let
pname = "chacha20poly1305-reuseable";
version = "0.4.2";
version = "0.10.2";
in
buildPythonPackage {
inherit pname version;
format = "pyproject";
pyproject = true;
disabled = pythonOlder "3.7";
@ -30,11 +30,11 @@ buildPythonPackage {
owner = "bdraco";
repo = pname;
rev = "v${version}";
hash = "sha256-RBXEumw5A/XzB/LazUcvq8JM/Ahvcy9lCTYKpGcY7go=";
hash = "sha256-jLaYdVNgjpy/fjjt9om72jirgMaM61T/OZu/iHZ/W4k=";
};
nativeBuildInputs = [
cython
cython_3
poetry-core
setuptools
];

View File

@ -1,6 +1,7 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, fetchpatch
, django
, django-allauth
, djangorestframework
@ -21,6 +22,14 @@ buildPythonPackage rec {
hash = "sha256-PTFUZ54vKlufKCQyJb+QB/+hI15r+Z0auTjnc38yMLg=";
};
patches = [
(fetchpatch {
# https://github.com/iMerica/dj-rest-auth/pull/561
url = "https://github.com/iMerica/dj-rest-auth/commit/be0cf53d94582183320b0994082f0a312c1066d9.patch";
hash = "sha256-BhZ7BWW8m609cVn1WCyPfpZq/706YVZAesrkcMKTD3A=";
})
];
postPatch = ''
substituteInPlace setup.py \
--replace "coveralls>=1.11.1" "" \

View File

@ -1,6 +1,7 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, pythonOlder
, django
# optionals
@ -19,14 +20,16 @@
buildPythonPackage rec {
pname = "django-markup";
version = "1.7.2";
format = "setuptools";
version = "1.8.1";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "bartTC";
repo = "django-markup";
rev = "refs/tags/v${version}";
hash = "sha256-NvGlvrXOwDrwHhbFHrWf7Kz9sEzTTyq84/Z6jjRNy8Q=";
hash = "sha256-Hhcp4wVJEcYV1lEZ2jWf7nOlt5m4lVAfC6VmKIdxf4c=";
};
postPatch = ''

View File

@ -16,14 +16,14 @@
buildPythonPackage rec {
pname = "django-mysql";
version = "4.11.0";
format = "pyproject";
version = "4.12.0";
pyproject = true;
src = fetchFromGitHub {
owner = "adamchainz";
repo = "django-mysql";
rev = "refs/tags/${version}";
hash = "sha256-4PxJH5P/a4oNigbTjrZa3q+FeDQTdkvCKonUUl4I8m0=";
hash = "sha256-AieI6zUPFXQsrvoms5bu/Bb3J+DvfLA4rCCsjhYBEZQ=";
};
nativeBuildInputs = [

View File

@ -1,6 +1,7 @@
{ lib
, buildPythonPackage
, fetchFromGitHub
, fetchpatch
, dj-rest-auth
, django
, django-allauth
@ -37,6 +38,14 @@ buildPythonPackage rec {
hash = "sha256-sK+upLh0mi8eHKh1Wt9FoLRjqlHitTSX0Zl54S4Ce6E=";
};
patches = [
(fetchpatch {
# https://github.com/tfranzel/drf-spectacular/pull/1090
url = "https://github.com/tfranzel/drf-spectacular/commit/8db4c2458f8403c53db0db352dd94057d285814b.patch";
hash = "sha256-Ue5y7IB4ie+9CEineMBgMMCLGiF4zqmn60TJvKsV1h0=";
})
];
propagatedBuildInputs = [
django
djangorestframework

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