Merge branch master into haskell-updates

This commit is contained in:
sternenseemann
2024-10-20 20:27:24 +02:00
169 changed files with 6263 additions and 2226 deletions
+46 -7
View File
@@ -662,6 +662,13 @@
githubId = 4296804;
name = "Alex Franchuk";
};
aftix = {
name = "Wyatt Campbell";
email = "aftix@aftix.xyz";
matrix = "@aftix:matrix.org";
github = "aftix";
githubId = 4008299;
};
agbrooks = {
email = "andrewgrantbrooks@gmail.com";
github = "agbrooks";
@@ -1708,6 +1715,12 @@
githubId = 718812;
name = "Antoine R. Dumont";
};
areif-dev = {
email = "aj@ajreifsnyder.com";
github = "areif-dev";
githubId = 53097078;
name = "AJ Reifsnyder";
};
arezvov = {
email = "alex@rezvov.ru";
github = "arezvov";
@@ -8224,7 +8237,8 @@
email = "guanran928@outlook.com";
github = "Guanran928";
githubId = 68757440;
name = "Guanran928";
name = "Guanran Wang";
keys = [ { fingerprint = "7835 BC13 4560 0660 0448 5A2C 91F9 7D9E D126 39CF"; } ];
};
guekka = {
github = "Guekka";
@@ -13715,6 +13729,12 @@
githubId = 1215331;
name = "Matt Melling";
};
melon = {
email = "melontime05@gmail.com";
github = "BlaiZephyr";
githubId = 101197249;
name = "Tim";
};
melsigl = {
email = "melanie.bianca.sigl@gmail.com";
github = "melsigl";
@@ -14537,6 +14557,12 @@
name = "Arthur Outhenin-Chalandre";
githubId = 3845213;
};
mrgiles = {
email = "marcelogiles@gmail.com";
github = "mrgiles";
githubId = 4009450;
name = "Marcelo Giles";
};
mrityunjaygr8 = {
email = "mrityunjaysaxena1996@gmail.com";
github = "mrityunjaygr8";
@@ -15898,6 +15924,12 @@
githubId = 72201;
name = "Ole Jørgen Brønner";
};
olifloof = {
email = "benmoreosm@gmail.com";
github = "olifloof";
githubId = 35699052;
name = "oli";
};
oliver-koss = {
email = "oliver.koss06@gmail.com";
github = "oliver-koss";
@@ -16600,6 +16632,13 @@
githubId = 28323;
name = "Peter Simons";
};
petrkozorezov = {
email = "petr.kozorezov@gmail.com";
github = "petrkozorezov";
githubId = 645017;
name = "Petr Kozorezov";
keys = [ { fingerprint = "7F1A 353D 3D6D 9CEF 63A9 B5C6 699F 32D5 9999 7C90"; } ];
};
petrosagg = {
email = "petrosagg@gmail.com";
github = "petrosagg";
@@ -16828,12 +16867,6 @@
name = "Jelle Besseling";
keys = [ { fingerprint = "A3A3 65AE 16ED A7A0 C29C 88F1 9712 452E 8BE3 372E"; } ];
};
pinkcreeper100 = {
email = "benmoreosm@gmail.com";
github = "pinkcreeper100";
githubId = 35699052;
name = "Oliver Samuel Morris";
};
pinpox = {
email = "mail@pablo.tools";
github = "pinpox";
@@ -20064,6 +20097,12 @@
githubId = 7091399;
keys = [ { fingerprint = "897E 6BE3 0345 B43D CADD 05B7 290F CF08 1AED B3EC"; } ];
};
smonson = {
name = "Samuel Monson";
email = "smonson@irbash.net";
github = "sjmonson";
githubId = 17662218;
};
smrehman = {
name = "Syed Moiz Ur Rehman";
email = "smrehman@proton.me";
@@ -201,6 +201,8 @@ The pre-existing `services.ankisyncd` has been marked deprecated and will be dro
- [watchdogd](https://troglobit.com/projects/watchdogd/), a system and process supervisor using watchdog timers. Available as [services.watchdogd](#opt-services.watchdogd.enable).
- [WiVRn](https://github.com/Meumeu/WiVRn), an OpenXR streaming application. Available as [services.wivrn](#opt-services.wivrn.enable).
- [Workout-tracker](https://github.com/jovandeginste/workout-tracker), a workout tracking web application for personal use.
- [wyoming-satellite](https://github.com/rhasspy/wyoming-satellite), a voice assistant satellite for Home Assistant using the Wyoming protocol. Available as [services.wyoming.satellite](#opt-services.wyoming.satellite.enable).
@@ -73,6 +73,8 @@
## New Modules {#sec-release-24.11-new-modules}
- [Cyrus IMAP](https://github.com/cyrusimap/cyrus-imapd), an email, contacts and calendar server. Available as [services.cyrus-imap](#opt-services.cyrus-imap.enable) service.
- [TaskChampion Sync-Server](https://github.com/GothenburgBitFactory/taskchampion-sync-server), a [Taskwarrior 3](https://taskwarrior.org/docs/upgrade-3/) sync server, replacing Taskwarrior 2's sync server named [`taskserver`](https://github.com/GothenburgBitFactory/taskserver).
- [FlareSolverr](https://github.com/FlareSolverr/FlareSolverr), proxy server to bypass Cloudflare protection. Available as [services.flaresolverr](#opt-services.flaresolverr.enable) service.
@@ -395,6 +397,9 @@
* from `/var/log/private/gns3` to `/var/log/gns3`
and to change the ownership of these directories and their contents to `gns3` (including `/etc/gns3`).
- The `sshd` module now doesn't include `%h/.ssh/authorized_keys` as `AuthorizedKeysFile` unless
`services.openssh.authorizedKeysInHomedir` is set to `true` (the default is `false` for `stateVersion` 24.11 onwards).
- Legacy package `stalwart-mail_0_6` was dropped, please note the
[manual upgrade process](https://github.com/stalwartlabs/mail-server/blob/main/UPGRADING.md)
before changing the package to `pkgs.stalwart-mail` in
@@ -514,6 +519,10 @@
- `services.mautrix-meta` was updated to [0.4](https://github.com/mautrix/meta/releases/tag/v0.4.0). This release makes significant changes to the settings format. If you have custom settings you should migrate them to the new format. Unfortunately upstream provides little guidance for how to do this, but [the auto-migration code](https://github.com/mautrix/meta/blob/f5440b05aac125b4c95b1af85635a717cbc6dd0e/cmd/mautrix-meta/legacymigrate.go#L23) may serve as a useful reference. The NixOS module should warn you if you still have any old settings configured.
- The `nodePackages.shout` package has been removed because it was deprecated upstream in favor of `thelounge`.
The `shout` top-level attribute was an alias to this package.
The associated `services.shout` module has also been removed.
- The `indi-full` package no longer contains non-free drivers.
To get the old collection of drivers use `indi-full-nonfree` or create your own collection of drivers by overriding indi-with-drivers.
E.g.: `pkgs.indi-with-drivers.override {extraDrivers = with pkgs.indi-3rdparty; [indi-gphoto];}`
+1 -1
View File
@@ -236,7 +236,7 @@ in
riemanntools = 203;
subsonic = 204;
# riak = 205; # unused, remove 2022-07-22
#shout = 206; # dynamically allocated as of 2021-09-18
#shout = 206; # dynamically allocated as of 2021-09-18, module removed 2024-10-19
gateone = 207;
namecoin = 208;
#lxd = 210; # unused
+2 -1
View File
@@ -661,6 +661,7 @@
./services/logging/ulogd.nix
./services/mail/automx2.nix
./services/mail/clamsmtp.nix
./services/mail/cyrus-imap.nix
./services/mail/davmail.nix
./services/mail/dkimproxy-out.nix
./services/mail/dovecot.nix
@@ -1205,7 +1206,6 @@
./services/networking/shellhub-agent.nix
./services/networking/shorewall.nix
./services/networking/shorewall6.nix
./services/networking/shout.nix
./services/networking/sing-box.nix
./services/networking/sitespeed-io.nix
./services/networking/skydns.nix
@@ -1381,6 +1381,7 @@
./services/video/photonvision.nix
./services/video/mediamtx.nix
./services/video/v4l2-relayd.nix
./services/video/wivrn.nix
./services/wayland/cage.nix
./services/wayland/hypridle.nix
./services/web-apps/akkoma.nix
+1
View File
@@ -102,6 +102,7 @@ in
(mkRemovedOptionModule [ "services" "railcar" ] "the corresponding package has been removed from nixpkgs")
(mkRemovedOptionModule [ "services" "replay-sorcery" ] "the corresponding package has been removed from nixpkgs as it is unmaintained upstream. Consider using `gpu-screen-recorder` or `obs-studio` instead.")
(mkRemovedOptionModule [ "services" "seeks" ] "")
(mkRemovedOptionModule [ "services" "shout" ] "shout was removed because it was deprecated upstream in favor of thelounge.")
(mkRemovedOptionModule [ "services" "ssmtp" ] ''
The ssmtp package and the corresponding module have been removed due to
the program being unmaintained. The options `programs.msmtp.*` can be
+379
View File
@@ -0,0 +1,379 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.services.cyrus-imap;
cyrus-imapdPkg = pkgs.cyrus-imapd;
inherit (lib)
mkEnableOption
mkIf
mkOption
optionalAttrs
optionalString
generators
mapAttrsToList
;
inherit (lib.strings) concatStringsSep;
inherit (lib.types)
attrsOf
submodule
listOf
oneOf
str
int
bool
nullOr
path
;
mkCyrusConfig =
settings:
let
mkCyrusOptionsList =
v:
mapAttrsToList (
p: q:
if (q != null) then
if builtins.isInt q then
"${p}=${builtins.toString q}"
else
"${p}=\"${if builtins.isList q then (concatStringsSep " " q) else q}\""
else
""
) v;
mkCyrusOptionsString = v: concatStringsSep " " (mkCyrusOptionsList v);
in
concatStringsSep "\n " (mapAttrsToList (n: v: n + " " + (mkCyrusOptionsString v)) settings);
cyrusConfig = lib.concatStringsSep "\n" (
lib.mapAttrsToList (n: v: ''
${n} {
${mkCyrusConfig v}
}
'') cfg.cyrusSettings
);
imapdConfig =
with generators;
toKeyValue {
mkKeyValue = mkKeyValueDefault {
mkValueString =
v:
if builtins.isBool v then
if v then "yes" else "no"
else if builtins.isList v then
concatStringsSep " " v
else
mkValueStringDefault { } v;
} ": ";
} cfg.imapdSettings;
in
{
options.services.cyrus-imap = {
enable = mkEnableOption "Cyrus IMAP, an email, contacts and calendar server";
debug = mkEnableOption "debugging messages for the Cyrus master process";
listenQueue = mkOption {
type = int;
default = 32;
description = ''
Socket listen queue backlog size. See listen(2) for more information about a backlog.
Default is 32, which may be increased if you have a very high connection rate.
'';
};
tmpDBDir = mkOption {
type = path;
default = "/run/cyrus/db";
description = ''
Location where DB files are stored.
Databases in this directory are recreated upon startup, so ideally they should live in ephemeral storage for best performance.
'';
};
cyrusSettings = mkOption {
type = submodule {
freeformType = attrsOf (
attrsOf (oneOf [
bool
int
(listOf str)
])
);
options = {
START = mkOption {
default = {
recover = {
cmd = [
"ctl_cyrusdb"
"-r"
];
};
};
description = ''
This section lists the processes to run before any SERVICES are spawned.
This section is typically used to initialize databases.
Master itself will not startup until all tasks in START have completed, so put no blocking commands here.
'';
};
SERVICES = mkOption {
default = {
imap = {
cmd = [ "imapd" ];
listen = "imap";
prefork = 0;
};
pop3 = {
cmd = [ "pop3d" ];
listen = "pop3";
prefork = 0;
};
lmtpunix = {
cmd = [ "lmtpd" ];
listen = "/run/cyrus/lmtp";
prefork = 0;
};
notify = {
cmd = [ "notifyd" ];
listen = "/run/cyrus/notify";
proto = "udp";
prefork = 0;
};
};
description = ''
This section is the heart of the cyrus.conf file. It lists the processes that should be spawned to handle client connections made on certain Internet/UNIX sockets.
'';
};
EVENTS = mkOption {
default = {
tlsprune = {
cmd = [ "tls_prune" ];
at = 400;
};
delprune = {
cmd = [
"cyr_expire"
"-E"
"3"
];
at = 400;
};
deleteprune = {
cmd = [
"cyr_expire"
"-E"
"4"
"-D"
"28"
];
at = 430;
};
expungeprune = {
cmd = [
"cyr_expire"
"-E"
"4"
"-X"
"28"
];
at = 445;
};
checkpoint = {
cmd = [
"ctl_cyrusdb"
"-c"
];
period = 30;
};
};
description = ''
This section lists processes that should be run at specific intervals, similar to cron jobs. This section is typically used to perform scheduled cleanup/maintenance.
'';
};
DAEMON = mkOption {
default = { };
description = ''
This section lists long running daemons to start before any SERVICES are spawned. master(8) will ensure that these processes are running, restarting any process which dies or forks. All listed processes will be shutdown when master(8) is exiting.
'';
};
};
};
description = "Cyrus configuration settings. See [cyrus.conf(5)](https://www.cyrusimap.org/imap/reference/manpages/configs/cyrus.conf.html)";
};
imapdSettings = mkOption {
type = submodule {
freeformType = attrsOf (oneOf [
str
int
bool
(listOf str)
]);
options = {
configdirectory = mkOption {
type = path;
default = "/var/lib/cyrus";
description = ''
The pathname of the IMAP configuration directory.
'';
};
lmtpsocket = mkOption {
type = path;
default = "/run/cyrus/lmtp";
description = ''
Unix socket that lmtpd listens on, used by deliver(8). This should match the path specified in cyrus.conf(5).
'';
};
idlesocket = mkOption {
type = path;
default = "/run/cyrus/idle";
description = ''
Unix socket that idled listens on.
'';
};
notifysocket = mkOption {
type = path;
default = "/run/cyrus/notify";
description = ''
Unix domain socket that the mail notification daemon listens on.
'';
};
};
};
default = {
admins = [ "cyrus" ];
allowplaintext = true;
defaultdomain = "localhost";
defaultpartition = "default";
duplicate_db_path = "/run/cyrus/db/deliver.db";
hashimapspool = true;
httpmodules = [
"carddav"
"caldav"
];
mboxname_lockpath = "/run/cyrus/lock";
partition-default = "/var/lib/cyrus/storage";
popminpoll = 1;
proc_path = "/run/cyrus/proc";
ptscache_db_path = "/run/cyrus/db/ptscache.db";
sasl_auto_transition = true;
sasl_pwcheck_method = [ "saslauthd" ];
sievedir = "/var/lib/cyrus/sieve";
statuscache_db_path = "/run/cyrus/db/statuscache.db";
syslog_prefix = "cyrus";
tls_client_ca_dir = "/etc/ssl/certs";
tls_session_timeout = 1440;
tls_sessions_db_path = "/run/cyrus/db/tls_sessions.db";
virtdomains = "on";
};
description = "IMAP configuration settings. See [imapd.conf(5)](https://www.cyrusimap.org/imap/reference/manpages/configs/imapd.conf.html)";
};
user = mkOption {
type = nullOr str;
default = null;
description = "Cyrus IMAP user name. If this is not set, a user named `cyrus` will be created.";
};
group = mkOption {
type = nullOr str;
default = null;
description = "Cyrus IMAP group name. If this is not set, a group named `cyrus` will be created.";
};
imapdConfigFile = mkOption {
type = nullOr path;
default = null;
description = "Path to the configuration file used for cyrus-imap.";
apply = v: if v != null then v else pkgs.writeText "imapd.conf" imapdConfig;
};
cyrusConfigFile = mkOption {
type = nullOr path;
default = null;
description = "Path to the configuration file used for Cyrus.";
apply = v: if v != null then v else pkgs.writeText "cyrus.conf" cyrusConfig;
};
sslCACert = mkOption {
type = nullOr str;
default = null;
description = "File path which containing one or more CA certificates to use.";
};
sslServerCert = mkOption {
type = nullOr str;
default = null;
description = "File containing the global certificate used for all services (IMAP, POP3, LMTP, Sieve)";
};
sslServerKey = mkOption {
type = nullOr str;
default = null;
description = "File containing the private key belonging to the global server certificate.";
};
};
config = mkIf cfg.enable {
users.users.cyrus = optionalAttrs (cfg.user == null) {
description = "Cyrus IMAP user";
isSystemUser = true;
group = optionalString (cfg.group == null) "cyrus";
};
users.groups.cyrus = optionalAttrs (cfg.group == null) { };
environment.etc."imapd.conf".source = cfg.imapdConfigFile;
environment.etc."cyrus.conf".source = cfg.cyrusConfigFile;
systemd.services.cyrus-imap = {
description = "Cyrus IMAP server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
restartTriggers = [
"/etc/imapd.conf"
"/etc/cyrus.conf"
];
startLimitIntervalSec = 60;
environment = {
CYRUS_VERBOSE = mkIf cfg.debug "1";
LISTENQUEUE = builtins.toString cfg.listenQueue;
};
serviceConfig = {
User = if (cfg.user == null) then "cyrus" else cfg.user;
Group = if (cfg.group == null) then "cyrus" else cfg.group;
Type = "simple";
ExecStart = "${cyrus-imapdPkg}/libexec/master -l $LISTENQUEUE -C /etc/imapd.conf -M /etc/cyrus.conf -p /run/cyrus/master.pid -D";
Restart = "on-failure";
RestartSec = "1s";
RuntimeDirectory = "cyrus";
StateDirectory = "cyrus";
# Hardening
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
PrivateTmp = true;
PrivateDevices = true;
ProtectSystem = "full";
CapabilityBoundingSet = [ "~CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_MODULE" ];
MemoryDenyWriteExecute = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectControlGroups = true;
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
"AF_NETLINK"
"AF_UNIX"
];
RestrictNamespaces = true;
RestrictRealtime = true;
};
preStart = ''
mkdir -p '${cfg.imapdSettings.configdirectory}/socket' '${cfg.tmpDBDir}' /run/cyrus/proc /run/cyrus/lock
'';
};
environment.systemPackages = [ cyrus-imapdPkg ];
};
}
-115
View File
@@ -1,115 +0,0 @@
{ pkgs, lib, config, ... }:
with lib;
let
cfg = config.services.shout;
shoutHome = "/var/lib/shout";
defaultConfig = pkgs.runCommand "config.js" { preferLocalBuild = true; } ''
EDITOR=true ${pkgs.shout}/bin/shout config --home $PWD
mv config.js $out
'';
finalConfigFile = if (cfg.configFile != null) then cfg.configFile else ''
var _ = require('${pkgs.shout}/lib/node_modules/shout/node_modules/lodash')
module.exports = _.merge(
{},
require('${defaultConfig}'),
${builtins.toJSON cfg.config}
)
'';
in {
options.services.shout = {
enable = mkEnableOption "Shout web IRC client";
private = mkOption {
type = types.bool;
default = false;
description = ''
Make your shout instance private. You will need to configure user
accounts by adding entries in {file}`${shoutHome}/users`.
'';
};
listenAddress = mkOption {
type = types.str;
default = "0.0.0.0";
description = "IP interface to listen on for http connections.";
};
port = mkOption {
type = types.port;
default = 9000;
description = "TCP port to listen on for http connections.";
};
configFile = mkOption {
type = types.nullOr types.lines;
default = null;
description = ''
Contents of Shout's {file}`config.js` file.
Used for backward compatibility, recommended way is now to use
the `config` option.
Documentation: http://shout-irc.com/docs/server/configuration.html
'';
};
config = mkOption {
default = {};
type = types.attrs;
example = {
displayNetwork = false;
defaults = {
name = "Your Network";
host = "localhost";
port = 6697;
};
};
description = ''
Shout {file}`config.js` contents as attribute set (will be
converted to JSON to generate the configuration file).
The options defined here will be merged to the default configuration file.
Documentation: http://shout-irc.com/docs/server/configuration.html
'';
};
};
config = mkIf cfg.enable {
users.users.shout = {
isSystemUser = true;
group = "shout";
description = "Shout daemon user";
home = shoutHome;
createHome = true;
};
users.groups.shout = {};
systemd.services.shout = {
description = "Shout web IRC client";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
preStart = "ln -sf ${pkgs.writeText "config.js" finalConfigFile} ${shoutHome}/config.js";
script = concatStringsSep " " [
"${pkgs.shout}/bin/shout"
(if cfg.private then "--private" else "--public")
"--port" (toString cfg.port)
"--host" (toString cfg.listenAddress)
"--home" shoutHome
];
serviceConfig = {
User = "shout";
ProtectHome = "true";
ProtectSystem = "full";
PrivateTmp = "true";
};
};
};
}
+17 -4
View File
@@ -108,6 +108,10 @@ let
};
usersWithKeys = lib.attrValues (lib.flip lib.filterAttrs config.users.users (n: u:
lib.length u.openssh.authorizedKeys.keys != 0 || lib.length u.openssh.authorizedKeys.keyFiles != 0
));
authKeysFiles = let
mkAuthKeyFile = u: lib.nameValuePair "ssh/authorized_keys.d/${u.name}" {
mode = "0444";
@@ -116,9 +120,6 @@ let
${lib.concatMapStrings (f: lib.readFile f + "\n") u.openssh.authorizedKeys.keyFiles}
'';
};
usersWithKeys = lib.attrValues (lib.flip lib.filterAttrs config.users.users (n: u:
lib.length u.openssh.authorizedKeys.keys != 0 || lib.length u.openssh.authorizedKeys.keyFiles != 0
));
in lib.listToAttrs (map mkAuthKeyFile usersWithKeys);
authPrincipalsFiles = let
@@ -302,7 +303,8 @@ in
authorizedKeysInHomedir = lib.mkOption {
type = lib.types.bool;
default = true;
default = lib.versionOlder config.system.stateVersion "24.11";
defaultText = lib.literalMD "`false` unless [](#opt-system.stateVersion) is 24.05 or older";
description = ''
Enables the use of the `~/.ssh/authorized_keys` file.
@@ -544,6 +546,17 @@ in
config = lib.mkIf cfg.enable {
warnings = lib.optional (with cfg; lib.all lib.id [
# ~/.ssh/authorized_keys is ignored and no custom file locations were set
(authorizedKeysFiles == [ "/etc/ssh/authorized_keys.d/%u" ])
# no command provides authorized keys
(authorizedKeysCommand == "none")
# no users have keys in declarative configuration
(usersWithKeys == [])
# no authentication methods other than public keys are configured
((settings.PasswordAuthentication == false && !package.withKerberos) || settings.AuthenticationMethods == [ "publickey" ])
]) "services.openssh: no keys were set in `users.users.*.openssh.authorizedKeys` and `~/.ssh/authorized_keys` will be ignored";
users.users.sshd =
{
isSystemUser = true;
+226
View File
@@ -0,0 +1,226 @@
{
config,
pkgs,
lib,
...
}:
let
inherit (lib)
mkIf
mkEnableOption
mkPackageOption
mkOption
optionalString
optionalAttrs
isDerivation
recursiveUpdate
getExe
literalExpression
types
maintainers
;
cfg = config.services.wivrn;
configFormat = pkgs.formats.json { };
# For the application option to work with systemd PATH, we find the store binary path of
# the package, concat all of the following strings, and then update the application attribute.
# Application can either be a package or a list that has a package as the first element.
applicationExists = builtins.hasAttr "application" cfg.config.json;
applicationListNotEmpty = (
if builtins.isList cfg.config.json.application then
(builtins.length cfg.config.json.application) != 0
else
true
);
applicationCheck = applicationExists && applicationListNotEmpty;
applicationBinary = (
if builtins.isList cfg.config.json.application then
builtins.head cfg.config.json.application
else
cfg.config.json.application
);
applicationStrings = builtins.tail cfg.config.json.application;
applicationPath = mkIf applicationCheck applicationBinary;
applicationConcat = (
if builtins.isList cfg.config.json.application then
builtins.concatStringsSep " " ([ (getExe applicationBinary) ] ++ applicationStrings)
else
(getExe applicationBinary)
);
applicationUpdate = recursiveUpdate cfg.config.json (
optionalAttrs applicationCheck { application = applicationConcat; }
);
configFile = configFormat.generate "config.json" applicationUpdate;
in
{
options = {
services.wivrn = {
enable = mkEnableOption "WiVRn, an OpenXR streaming application";
package = mkPackageOption pkgs "wivrn" { };
openFirewall = mkEnableOption "the default ports in the firewall for the WiVRn server";
defaultRuntime = mkEnableOption ''
WiVRn Monado as the default OpenXR runtime on the system.
The config can be found at `/etc/xdg/openxr/1/active_runtime.json`.
Note that applications can bypass this option by setting an active
runtime in a writable XDG_CONFIG_DIRS location like `~/.config`
'';
autoStart = mkEnableOption "starting the service by default";
monadoEnvironment = mkOption {
type = types.attrs;
description = "Environment variables to be passed to the Monado environment.";
default = {
XRT_COMPOSITOR_LOG = "debug";
XRT_PRINT_OPTIONS = "on";
IPC_EXIT_ON_DISCONNECT = "off";
};
};
extraPackages = mkOption {
type = types.listOf types.package;
description = "Packages to add to the wivrn-application service $PATH.";
default = [ ];
example = literalExpression "[ pkgs.bash pkgs.procps ]";
};
config = {
enable = mkEnableOption "configuration for WiVRn";
json = mkOption {
type = configFormat.type;
description = ''
Configuration for WiVRn. The attributes are serialized to JSON in config.json.
Note that the application option must be either a package or a
list with package as the first element.
See https://github.com/Meumeu/WiVRn/blob/master/docs/configuration.md
'';
default = { };
example = literalExpression ''
{
scale = 0.8;
bitrate = 100000000;
encoders = [
{
encoder = "nvenc";
codec = "h264";
width = 1.0;
height = 1.0;
offset_x = 0.0;
offset_y = 0.0;
}
];
application = [ pkgs.wlx-overlay-s ];
tcp_only = true;
}
'';
};
};
};
};
config = mkIf cfg.enable {
assertions = [
{
assertion = !applicationCheck || isDerivation applicationBinary;
message = "The application in WiVRn configuration is not a package. Please ensure that the application is a package or that a package is the first element in the list.";
}
];
systemd.user = {
services = {
# The WiVRn server runs in a hardened service and starts the applications in a different service
wivrn = {
description = "WiVRn XR runtime service";
environment = {
# Default options
# https://gitlab.freedesktop.org/monado/monado/-/blob/598080453545c6bf313829e5780ffb7dde9b79dc/src/xrt/targets/service/monado.in.service#L12
XRT_COMPOSITOR_LOG = "debug";
XRT_PRINT_OPTIONS = "on";
IPC_EXIT_ON_DISCONNECT = "off";
} // cfg.monadoEnvironment;
serviceConfig = {
ExecStart = (
(getExe cfg.package) + " --systemd" + optionalString cfg.config.enable " -f ${configFile}"
);
# Hardening options
CapabilityBoundingSet = [ "CAP_SYS_NICE" ];
AmbientCapabilities = [ "CAP_SYS_NICE" ];
LockPersonality = true;
NoNewPrivileges = true;
PrivateTmp = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RemoveIPC = true;
RestrictNamespaces = true;
RestrictSUIDSGID = true;
};
wantedBy = mkIf cfg.autoStart [ "default.target" ];
restartTriggers = [
cfg.package
configFile
];
};
wivrn-application = mkIf applicationCheck {
description = "WiVRn application service";
requires = [ "wivrn.service" ];
serviceConfig = {
ExecStart = (
(getExe cfg.package) + " --application" + optionalString cfg.config.enable " -f ${configFile}"
);
Restart = "on-failure";
RestartSec = 0;
PrivateTmp = true;
};
# We need to add the application to PATH so WiVRn can find it
path = [ applicationPath ] ++ cfg.extraPackages;
};
};
};
services = {
# WiVRn can be used with some wired headsets so we include xr-hardware
udev.packages = with pkgs; [
android-udev-rules
xr-hardware
];
avahi = {
enable = true;
publish = {
enable = true;
userServices = true;
};
};
};
networking.firewall = mkIf cfg.openFirewall {
allowedTCPPorts = [ 9757 ];
allowedUDPPorts = [ 9757 ];
};
environment = {
systemPackages = [
cfg.package
applicationPath
];
pathsToLink = [ "/share/openxr" ];
etc."xdg/openxr/1/active_runtime.json" = mkIf cfg.defaultRuntime {
source = "${cfg.package}/share/openxr/1/openxr_wivrn.json";
};
};
};
meta.maintainers = with maintainers; [ passivelemon ];
}
@@ -1,5 +1,10 @@
# Module for VirtualBox guests.
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.virtualisation.virtualbox.guest;
kernel = config.boot.kernelPackages;
@@ -28,7 +33,20 @@ let
in
{
imports = [
(lib.mkRenamedOptionModule [ "virtualisation" "virtualbox" "guest" "draganddrop" ] [ "virtualisation" "virtualbox" "guest" "dragAndDrop" ])
(lib.mkRenamedOptionModule
[
"virtualisation"
"virtualbox"
"guest"
"draganddrop"
]
[
"virtualisation"
"virtualbox"
"guest"
"dragAndDrop"
]
)
];
options.virtualisation.virtualbox.guest = {
@@ -59,36 +77,38 @@ in
###### implementation
config = lib.mkIf cfg.enable (lib.mkMerge [
{
assertions = [{
assertion = pkgs.stdenv.hostPlatform.isx86;
message = "Virtualbox not currently supported on ${pkgs.stdenv.hostPlatform.system}";
}];
config = lib.mkIf cfg.enable (
lib.mkMerge [
{
assertions = [
{
assertion = pkgs.stdenv.hostPlatform.isx86;
message = "Virtualbox not currently supported on ${pkgs.stdenv.hostPlatform.system}";
}
];
environment.systemPackages = [ kernel.virtualboxGuestAdditions ];
environment.systemPackages = [ kernel.virtualboxGuestAdditions ];
boot.extraModulePackages = [ kernel.virtualboxGuestAdditions ];
boot.extraModulePackages = [ kernel.virtualboxGuestAdditions ];
boot.supportedFilesystems = [ "vboxsf" ];
boot.initrd.supportedFilesystems = [ "vboxsf" ];
boot.supportedFilesystems = [ "vboxsf" ];
boot.initrd.supportedFilesystems = [ "vboxsf" ];
users.groups.vboxsf.gid = config.ids.gids.vboxsf;
users.groups.vboxsf.gid = config.ids.gids.vboxsf;
systemd.services.virtualbox = {
description = "VirtualBox Guest Services";
systemd.services.virtualbox = {
description = "VirtualBox Guest Services";
wantedBy = [ "multi-user.target" ];
requires = [ "dev-vboxguest.device" ];
after = [ "dev-vboxguest.device" ];
wantedBy = [ "multi-user.target" ];
requires = [ "dev-vboxguest.device" ];
after = [ "dev-vboxguest.device" ];
unitConfig.ConditionVirtualization = "oracle";
unitConfig.ConditionVirtualization = "oracle";
serviceConfig.ExecStart = "@${kernel.virtualboxGuestAdditions}/bin/VBoxService VBoxService --foreground";
};
serviceConfig.ExecStart = "@${kernel.virtualboxGuestAdditions}/bin/VBoxService VBoxService --foreground";
};
services.udev.extraRules =
''
services.udev.extraRules = ''
# /dev/vboxuser is necessary for VBoxClient to work. Maybe we
# should restrict this to logged-in users.
KERNEL=="vboxuser", OWNER="root", GROUP="root", MODE="0666"
@@ -97,22 +117,17 @@ in
SUBSYSTEM=="misc", KERNEL=="vboxguest", TAG+="systemd"
'';
systemd.user.services.virtualboxClientVmsvga = mkVirtualBoxUserService "--vmsvga-session";
}
(
lib.mkIf cfg.clipboard {
systemd.user.services.virtualboxClientVmsvga = mkVirtualBoxUserService "--vmsvga-session";
}
(lib.mkIf cfg.clipboard {
systemd.user.services.virtualboxClientClipboard = mkVirtualBoxUserService "--clipboard";
}
)
(
lib.mkIf cfg.seamless {
})
(lib.mkIf cfg.seamless {
systemd.user.services.virtualboxClientSeamless = mkVirtualBoxUserService "--seamless";
}
)
(
lib.mkIf cfg.dragAndDrop {
})
(lib.mkIf cfg.dragAndDrop {
systemd.user.services.virtualboxClientDragAndDrop = mkVirtualBoxUserService "--draganddrop";
}
)
]);
})
]
);
}
+114 -78
View File
@@ -1,9 +1,19 @@
{ config, lib, pkgs, ... }:
{
config,
lib,
pkgs,
...
}:
let
cfg = config.virtualisation.virtualbox.host;
virtualbox = cfg.package.override {
inherit (cfg) enableHardening headless enableWebService enableKvm;
inherit (cfg)
enableHardening
headless
enableWebService
enableKvm
;
extensionPack = if cfg.enableExtensionPack then pkgs.virtualboxExtpack else null;
};
@@ -93,93 +103,119 @@ in
};
};
config = lib.mkIf cfg.enable (lib.mkMerge [{
warnings = lib.mkIf (pkgs.config.virtualbox.enableExtensionPack or false)
["'nixpkgs.virtualbox.enableExtensionPack' has no effect, please use 'virtualisation.virtualbox.host.enableExtensionPack'"];
environment.systemPackages = [ virtualbox ];
security.wrappers = let
mkSuid = program: {
source = "${virtualbox}/libexec/virtualbox/${program}";
owner = "root";
group = "vboxusers";
setuid = true;
};
executables = [
"VBoxHeadless"
"VBoxNetAdpCtl"
"VBoxNetDHCP"
"VBoxNetNAT"
"VBoxVolInfo"
] ++ (lib.optionals (!cfg.headless) [
"VBoxSDL"
"VirtualBoxVM"
]);
in lib.mkIf cfg.enableHardening
(builtins.listToAttrs (map (x: { name = x; value = mkSuid x; }) executables));
users.groups.vboxusers.gid = config.ids.gids.vboxusers;
services.udev.extraRules =
''
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
'';
} (lib.mkIf cfg.enableKvm {
assertions = [
config = lib.mkIf cfg.enable (
lib.mkMerge [
{
assertion = !cfg.addNetworkInterface;
message = "VirtualBox KVM only supports standard NAT networking for VMs. Please turn off virtualisation.virtualbox.host.addNetworkInterface.";
warnings = lib.mkIf (pkgs.config.virtualbox.enableExtensionPack or false) [
"'nixpkgs.virtualbox.enableExtensionPack' has no effect, please use 'virtualisation.virtualbox.host.enableExtensionPack'"
];
environment.systemPackages = [ virtualbox ];
security.wrappers =
let
mkSuid = program: {
source = "${virtualbox}/libexec/virtualbox/${program}";
owner = "root";
group = "vboxusers";
setuid = true;
};
executables =
[
"VBoxHeadless"
"VBoxNetAdpCtl"
"VBoxNetDHCP"
"VBoxNetNAT"
"VBoxVolInfo"
]
++ (lib.optionals (!cfg.headless) [
"VBoxSDL"
"VirtualBoxVM"
]);
in
lib.mkIf cfg.enableHardening (
builtins.listToAttrs (
map (x: {
name = x;
value = mkSuid x;
}) executables
)
);
users.groups.vboxusers.gid = config.ids.gids.vboxusers;
services.udev.extraRules = ''
SUBSYSTEM=="usb_device", ACTION=="add", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}"
SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="${virtualbox}/libexec/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor"
'';
}
];
}) (lib.mkIf (!cfg.enableKvm) {
boot.kernelModules = [ "vboxdrv" "vboxnetadp" "vboxnetflt" ];
boot.extraModulePackages = [ kernelModules ];
(lib.mkIf cfg.enableKvm {
assertions = [
{
assertion = !cfg.addNetworkInterface;
message = "VirtualBox KVM only supports standard NAT networking for VMs. Please turn off virtualisation.virtualbox.host.addNetworkInterface.";
}
];
})
(lib.mkIf (!cfg.enableKvm) {
boot.kernelModules = [
"vboxdrv"
"vboxnetadp"
"vboxnetflt"
];
boot.extraModulePackages = [ kernelModules ];
services.udev.extraRules =
''
KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd"
KERNEL=="vboxdrvu", OWNER="root", GROUP="root", MODE="0666", TAG+="systemd"
KERNEL=="vboxnetctl", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd"
'';
services.udev.extraRules = ''
KERNEL=="vboxdrv", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd"
KERNEL=="vboxdrvu", OWNER="root", GROUP="root", MODE="0666", TAG+="systemd"
KERNEL=="vboxnetctl", OWNER="root", GROUP="vboxusers", MODE="0660", TAG+="systemd"
'';
# Since we lack the right setuid/setcap binaries, set up a host-only network by default.
}) (lib.mkIf cfg.addNetworkInterface {
systemd.services.vboxnet0 =
{ description = "VirtualBox vboxnet0 Interface";
requires = [ "dev-vboxnetctl.device" ];
after = [ "dev-vboxnetctl.device" ];
wantedBy = [ "network.target" "sys-subsystem-net-devices-vboxnet0.device" ];
path = [ virtualbox ];
serviceConfig.RemainAfterExit = true;
serviceConfig.Type = "oneshot";
serviceConfig.PrivateTmp = true;
environment.VBOX_USER_HOME = "/tmp";
script =
''
# Since we lack the right setuid/setcap binaries, set up a host-only network by default.
})
(lib.mkIf cfg.addNetworkInterface {
systemd.services.vboxnet0 = {
description = "VirtualBox vboxnet0 Interface";
requires = [ "dev-vboxnetctl.device" ];
after = [ "dev-vboxnetctl.device" ];
wantedBy = [
"network.target"
"sys-subsystem-net-devices-vboxnet0.device"
];
path = [ virtualbox ];
serviceConfig.RemainAfterExit = true;
serviceConfig.Type = "oneshot";
serviceConfig.PrivateTmp = true;
environment.VBOX_USER_HOME = "/tmp";
script = ''
if ! [ -e /sys/class/net/vboxnet0 ]; then
VBoxManage hostonlyif create
cat /tmp/VBoxSVC.log >&2
fi
'';
postStop =
''
postStop = ''
VBoxManage hostonlyif remove vboxnet0
'';
};
};
networking.interfaces.vboxnet0.ipv4.addresses = [{ address = "192.168.56.1"; prefixLength = 24; }];
# Make sure NetworkManager won't assume this interface being up
# means we have internet access.
networking.networkmanager.unmanaged = ["vboxnet0"];
}) (lib.mkIf config.networking.useNetworkd {
systemd.network.networks."40-vboxnet0".extraConfig = ''
[Link]
RequiredForOnline=no
'';
})
networking.interfaces.vboxnet0.ipv4.addresses = [
{
address = "192.168.56.1";
prefixLength = 24;
}
];
# Make sure NetworkManager won't assume this interface being up
# means we have internet access.
networking.networkmanager.unmanaged = [ "vboxnet0" ];
})
(lib.mkIf config.networking.useNetworkd {
systemd.network.networks."40-vboxnet0".extraConfig = ''
[Link]
RequiredForOnline=no
'';
})
]);
]
);
}
+1
View File
@@ -245,6 +245,7 @@ in {
curl-impersonate = handleTest ./curl-impersonate.nix {};
custom-ca = handleTest ./custom-ca.nix {};
croc = handleTest ./croc.nix {};
cyrus-imap = runTest ./cyrus-imap.nix;
darling = handleTest ./darling.nix {};
darling-dmg = runTest ./darling-dmg.nix;
dae = handleTest ./dae.nix {};
+120
View File
@@ -0,0 +1,120 @@
{ lib, pkgs, ... }:
{
name = "cyrus-imap";
meta = {
maintainers = with lib.maintainers; [ moraxyc ];
};
nodes.machine =
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
curl
sudo
];
services.saslauthd = {
enable = true;
config = ''
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECH_OPTIONS=""
THREADS=5
START=yes
OPTIONS="-c -m /run/saslauthd"
'';
};
services.cyrus-imap = {
enable = true;
cyrusSettings = {
START = {
recover = {
cmd = [
"ctl_cyrusdb"
"-r"
];
};
};
EVENTS = {
tlsprune = {
cmd = [ "tls_prune" ];
at = 400;
};
delprune = {
cmd = [
"cyr_expire"
"-E"
"3"
];
at = 400;
};
deleteprune = {
cmd = [
"cyr_expire"
"-E"
"4"
"-D"
"28"
];
at = 430;
};
expungeprune = {
cmd = [
"cyr_expire"
"-E"
"4"
"-X"
"28"
];
at = 445;
};
checkpoint = {
cmd = [
"ctl_cyrusdb"
"-c"
];
period = 30;
};
};
SERVICES = {
http = {
cmd = [ "httpd" ];
listen = "80";
prefork = 0;
};
imap = {
cmd = [ "imapd" ];
listen = "143";
prefork = 0;
};
lmtpunix = {
cmd = [ "lmtpd" ];
listen = "/run/cyrus/lmtp";
prefork = 0;
};
notify = {
cmd = [ "notifyd" ];
listen = "/run/cyrus/notify";
proto = "udp";
prefork = 0;
};
};
};
};
};
testScript = ''
machine.wait_for_unit("saslauthd.service")
machine.wait_for_unit("cyrus-imap.service")
machine.wait_for_open_port(80)
machine.wait_for_open_port(143)
machine.succeed("echo 'secret' | ${lib.getExe' pkgs.cyrus_sasl.bin "saslpasswd2"} -p -c cyrus")
machine.succeed("chown cyrus /etc/sasldb2")
machine.succeed("sudo -ucyrus curl --fail --max-time 10 imap://cyrus:secret@localhost:143")
machine.fail("curl --fail --max-time 10 imap://cyrus:wrongsecret@localhost:143")
machine.fail("curl --fail --max-time 10 -X PROPFIND -H 'Depth: 1' 'http://localhost/dav/addressbooks/user/cyrus@localhost/Default'")
'';
}
+9 -2
View File
@@ -14,7 +14,10 @@ in {
{ ... }:
{
services.openssh.enable = true;
services.openssh = {
enable = true;
authorizedKeysInHomedir = true;
};
security.pam.services.sshd.limits =
[ { domain = "*"; item = "memlock"; type = "-"; value = 1024; } ];
users.users.root.openssh.authorizedKeys.keys = [
@@ -39,7 +42,11 @@ in {
{ ... }:
{
services.openssh = { enable = true; startWhenNeeded = true; };
services.openssh = {
enable = true;
startWhenNeeded = true;
authorizedKeysInHomedir = true;
};
security.pam.services.sshd.limits =
[ { domain = "*"; item = "memlock"; type = "-"; value = 1024; } ];
users.users.root.openssh.authorizedKeys.keys = [
@@ -17,14 +17,14 @@
}:
stdenv.mkDerivation rec {
version = "2.4.0";
version = "2.4.1";
pname = "polyphone";
src = fetchFromGitHub {
owner = "davy7125";
repo = "polyphone";
rev = version;
hash = "sha256-cPHLmqsS4ReqOCcsgOf77V/ShIkk7chGoJ6bU4W5ejs=";
hash = "sha256-43EswCgNJv11Ov+4vmj2vS/yJ2atyzkRmk/SoCKYD/0=";
};
nativeBuildInputs = [
@@ -1,48 +0,0 @@
{ lib, stdenv, fetchurl, swt, jre, makeWrapper, alsa-lib, jack2, fluidsynth, libpulseaudio, nixosTests }:
let metadata = assert stdenv.hostPlatform.system == "i686-linux" || stdenv.hostPlatform.system == "x86_64-linux";
if stdenv.hostPlatform.system == "i686-linux" then
{ arch = "x86"; sha256 = "sha256-k4FQrt72VNb5FdYMzxskcVhKlvx8MZelUlLCItxDB7c="; }
else
{ arch = "x86_64"; sha256 = "sha256-mj5wVQlY2xFzdulvMdb5Qb5HGwr7RElzIkpOLjaAfGA="; };
in stdenv.mkDerivation rec {
version = "1.5.5";
pname = "tuxguitar";
src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}-${version}-linux-${metadata.arch}.tar.gz";
sha256 = metadata.sha256;
};
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin
cp -r dist lib share $out/
cp tuxguitar.sh $out/bin/tuxguitar
ln -s $out/dist $out/bin/dist
ln -s $out/lib $out/bin/lib
ln -s $out/share $out/bin/share
wrapProgram $out/bin/tuxguitar \
--set JAVA "${jre}/bin/java" \
--prefix LD_LIBRARY_PATH : "$out/lib/:${lib.makeLibraryPath [ swt alsa-lib jack2 fluidsynth libpulseaudio ]}" \
--prefix CLASSPATH : "${swt}/jars/swt.jar:$out/lib/tuxguitar.jar:$out/lib/itext.jar"
'';
passthru.tests = { inherit (nixosTests) tuxguitar; };
meta = with lib; {
description = "Multitrack guitar tablature editor";
longDescription = ''
TuxGuitar is a multitrack guitar tablature editor and player written
in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files.
'';
homepage = "http://www.tuxguitar.com.ar/";
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.lgpl2;
maintainers = [ maintainers.ardumont ];
platforms = platforms.linux;
};
}
@@ -1915,12 +1915,12 @@ final: prev:
cmp-nixpkgs-maintainers = buildVimPlugin {
pname = "cmp-nixpkgs-maintainers";
version = "2024-10-15";
version = "2024-10-19";
src = fetchFromGitHub {
owner = "GaetanLepage";
repo = "cmp-nixpkgs-maintainers";
rev = "828040c309972f044346e0bf43d0f92623b60d65";
sha256 = "0wnqhsfinzz3xf746sd731gy6sj05c5z7c09w4lrdchbrxx3zgrb";
rev = "86711e7d3e92097b26e53f0b146b93863176377d";
sha256 = "sha256-NZuDbrKL/ukLIMxbqVzVgzKkKTnw2Zu1/qD/MTIVO2Q=";
};
meta.homepage = "https://github.com/GaetanLepage/cmp-nixpkgs-maintainers/";
};
@@ -18648,6 +18648,18 @@ final: prev:
meta.homepage = "https://github.com/tomtom/tinykeymap_vim/";
};
unimpaired-nvim = buildVimPlugin {
pname = "unimpaired.nvim";
version = "2024-10-17";
src = fetchFromGitHub {
owner = "tummetott";
repo = "unimpaired.nvim";
rev = "8e504ba95dd10a687f4e4dacd5e19db221b88534";
sha256 = "sha256-CNU4cigMjbvOdUzUXze9ZDmTZRuYtj4dCuuLVZkMTQg=";
};
meta.homepage = "https://github.com/tummetott/unimpaired.nvim/";
};
vim-advanced-sorters = buildVimPlugin {
pname = "vim-advanced-sorters";
version = "2024-08-16";
@@ -1055,6 +1055,7 @@ https://github.com/altermo/ultimate-autopair.nvim/,HEAD,
https://github.com/SirVer/ultisnips/,,
https://github.com/mbbill/undotree/,,
https://github.com/chrisbra/unicode.vim/,,
https://github.com/tummetott/unimpaired.nvim/,HEAD,
https://github.com/unisonweb/unison/,,
https://github.com/Shougo/unite.vim/,,
https://github.com/sontungexpt/url-open/,HEAD,
+19 -2
View File
@@ -1,6 +1,8 @@
{ lib
, stdenv
, copyDesktopItems
, fetchFromGitHub
, makeDesktopItem
, wrapQtAppsHook
, pkg-config
, qmake
@@ -22,7 +24,7 @@ stdenv.mkDerivation rec {
sha256 = "sha256-axw0/QFQfnEc2P8tFRtSY5vVUJTqv+kRn68GXdZ5SeQ=";
};
nativeBuildInputs = [ pkg-config qmake wrapQtAppsHook ];
nativeBuildInputs = [ pkg-config qmake wrapQtAppsHook copyDesktopItems ];
qmakeFlags = [ "pgmodeler.pro" "CONFIG+=release" ] ++ lib.optionals stdenv.hostPlatform.isDarwin [
"PGSQL_INC=${lib.getDev postgresql}/include"
"PGSQL_LIB=${lib.getLib postgresql}/lib/libpq.dylib"
@@ -36,7 +38,22 @@ stdenv.mkDerivation rec {
++ lib.optionals stdenv.hostPlatform.isLinux [ qtwayland ]
++ lib.optionals stdenv.hostPlatform.isDarwin [ cups libxml2 ];
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
desktopItems = [
(makeDesktopItem {
name = "pgModeler";
exec = "pgmodeler";
icon = "pgmodeler";
desktopName = "PgModeler";
genericName = "PgModeler";
comment = meta.description;
categories = [ "Development" ];
startupWMClass = "pgmodeler";
})
];
postInstall = ''
install -Dm444 apps/pgmodeler/res/windows_ico.ico $out/share/icons/hicolor/256x256/apps/pgmodeler.ico
'' + lib.optionalString stdenv.hostPlatform.isDarwin ''
mkdir -p $out/bin
for item in pgmodeler pgmodeler-{cli,se,ch}
do
@@ -17,7 +17,7 @@ in
meta = {
description = "Fork of Firefox, focused on privacy, security and freedom";
homepage = "https://librewolf.net/";
maintainers = with lib.maintainers; [ dotlambda squalus ];
maintainers = with lib.maintainers; [ squalus ];
platforms = lib.platforms.unix;
badPlatforms = lib.platforms.darwin;
broken = stdenv.buildPlatform.is32bit; # since Firefox 60, build on 32-bit platforms fails with "out of memory".
@@ -30,7 +30,7 @@ rec {
cp ${source}/patches/pref-pane/librewolf.css browser/themes/shared/preferences
cp ${source}/patches/pref-pane/librewolf.inc.xhtml browser/components/preferences
cp ${source}/patches/pref-pane/librewolf.js browser/components/preferences
cat ${source}/patches/pref-pane/preferences.ftl >> browser/locales/en-US/browser/preferences/preferences.ftl
cat ${source}/browser/preferences/preferences.ftl >> browser/locales/en-US/browser/preferences/preferences.ftl
'';
extraPrefsFiles = [ "${source}/settings/librewolf.cfg" ];
@@ -1,11 +1,11 @@
{
"packageVersion": "131.0.2-1",
"packageVersion": "131.0.3-1",
"source": {
"rev": "131.0.2-1",
"sha256": "1knx485kdjv8d0rn5ai1x1jp0403dvxz9m7lpim1y2d2ilyi26x7"
"rev": "131.0.3-1",
"sha256": "0ayl43nq3h9a3b4nl7sfmil43v0k3x1bmxl7c7ws8710dj2674rc"
},
"firefox": {
"version": "131.0.2",
"sha512": "fb1a1179a8c62de975c93e1ac6f058cb5492e955bbb7ac2d4b83cdd14ba17bdb2450078bd6f626124b14542f3fda9514bea476aaa34ff4f5a2bee6b1625ec963"
"version": "131.0.3",
"sha512": "3aa96db839f7a45e34c43b5e7e3333e1100ca11545ad26a8e42987fbc72df5ae7ebebe7dfc8c4e856d2bb4676c0516914a07c001f6047799f314146a3329c0ce"
}
}
@@ -2,13 +2,13 @@
buildGoModule rec {
pname = "argocd";
version = "2.12.4";
version = "2.12.6";
src = fetchFromGitHub {
owner = "argoproj";
repo = "argo-cd";
rev = "v${version}";
hash = "sha256-CxxaNm6O0wGvh1V0RmU4eA654u2ooL41EmlNX49KEE0=";
hash = "sha256-Lu0RUCSOrNNQ17CZGv/+ic3jPz4+3433JjwnjVzYzF4=";
};
proxyVendor = true; # darwin/linux hash mismatch
@@ -2,15 +2,15 @@
buildGoModule rec {
pname = "istioctl";
version = "1.23.1";
version = "1.23.2";
src = fetchFromGitHub {
owner = "istio";
repo = "istio";
rev = version;
hash = "sha256-ksTtjPzEY//JMLKzTMqkeqZqD92euvqV0iXziYQvFGg=";
hash = "sha256-Vyd32T19dw0j7PfuAcs6cuDlAhtMnRcUZXvYtEM7D4w=";
};
vendorHash = "sha256-4zNPI5tefOgLwbzxRM9NS/szlUjGo2BiruqP92qmwBU=";
vendorHash = "sha256-Sh/SsVIque5xdyOGCNU188pi0JCDXv90LlV7NCmgpGQ=";
nativeBuildInputs = [ installShellFiles ];
@@ -2,13 +2,13 @@
buildGoModule rec {
pname = "kubedb-cli";
version = "0.48.0";
version = "0.48.1";
src = fetchFromGitHub {
owner = "kubedb";
repo = "cli";
rev = "v${version}";
sha256 = "sha256-xqupDfcjCSP7uomBCuFlhCAOetZrvSiKehOgCqZKLLg=";
sha256 = "sha256-jk+IUqM0/7qVKBMFntQFr52B3TJYEGrmT/DKcgfrw3Q=";
};
vendorHash = null;
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "terranix";
version = "2.7.0";
version = "2.8.0";
src = fetchFromGitHub {
owner = "mrVanDalo";
repo = "terranix";
rev = version;
sha256 = "sha256-xiUfVD6rtsVWFotVtUW3Q1nQh4obKzgvpN1wqZuGXvM=";
sha256 = "sha256-1Pu2j5xsBTuoyga08ZVf+rKp3FOMmJh/0fXen/idOrA=";
};
nativeBuildInputs = [ makeWrapper ];
@@ -26,5 +26,8 @@ stdenv.mkDerivation rec {
license = licenses.unfree;
platforms = platforms.all;
maintainers = [ ];
# Doesn't launch, gives java related incompatibilities errors. Probably
# related to swt. Same error happens with swt_jdk8
broken = true;
};
}
@@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "diamond";
version = "2.1.9";
version = "2.1.10";
src = fetchFromGitHub {
owner = "bbuchfink";
repo = "diamond";
rev = "v${version}";
sha256 = "sha256-cTg9TEpz3FSgX2tpfU4y55cCgFY5+mQY86FziHAwd+s=";
sha256 = "sha256-rNwoHb2jbQwL1bnP5KsI/SsHNN9EeXzsGnMpFhXrc1o=";
};
+28 -16
View File
@@ -1,26 +1,27 @@
{ lib
, stdenvNoCC
, fetchFromGitHub
, makeWrapper
, gnugrep
, gnused
, curl
, mpv
, aria2
, ffmpeg
, fzf
, openssl
{
lib,
stdenvNoCC,
fetchFromGitHub,
makeWrapper,
gnugrep,
gnused,
curl,
mpv,
aria2,
ffmpeg,
fzf,
openssl,
}:
stdenvNoCC.mkDerivation {
pname = "dra-cla";
version = "unstable-2024-02-07";
version = "0-unstable-2024-06-07";
src = fetchFromGitHub {
owner = "CoolnsX";
repo = "dra-cla";
rev = "cf8a90c0c68338404e8a1434af0a6e65fc5d0a08";
hash = "sha256-3cz1VeDM0NHdYMiCDVnIq6Y/7rFSijhNrnxC36Yixxc=";
rev = "24d7eaa5d433bc2cbbba4f23552cd812506fefee";
hash = "sha256-BmBQSkLSq+BaxkzXEy3hlI3qNq2NCIoGKDKt7gyDz+s=";
};
nativeBuildInputs = [ makeWrapper ];
@@ -31,7 +32,18 @@ stdenvNoCC.mkDerivation {
install -Dm755 dra-cla $out/bin/dra-cla
wrapProgram $out/bin/dra-cla \
--prefix PATH : ${lib.makeBinPath [ gnugrep gnused curl mpv aria2 ffmpeg fzf openssl ]}
--prefix PATH : ${
lib.makeBinPath [
gnugrep
gnused
curl
mpv
aria2
ffmpeg
fzf
openssl
]
}
runHook postInstall
'';
@@ -73,6 +73,8 @@ stdenv.mkDerivation (finalAttrs: {
fetchSubmodules = true;
};
separateDebugInfo = true;
patches = [
# Lets obs-browser build against CEF 90.1.0+
./Enable-file-access-and-universal-access-for-file-URL.patch
@@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
pname = "virt-what";
version = "1.26";
version = "1.27";
src = fetchurl {
url = "https://people.redhat.com/~rjones/virt-what/files/${pname}-${version}.tar.gz";
sha256 = "sha256-qoap0xO1yQSK+a2aA4fkr/I4uw6kLzuDARTotQzTFTU=";
sha256 = "sha256-1Nm9nUrlkJVZdEP6xmNJUxXH60MwuHKqXwYt84rGm/E=";
};
meta = with lib; {
@@ -1,25 +1,74 @@
{ config, stdenv, fetchurl, fetchpatch, callPackage, lib, acpica-tools, dev86, pam, libxslt, libxml2, wrapQtAppsHook
, libX11, xorgproto, libXext, libXcursor, libXmu, libIDL, SDL2, libcap, libGL, libGLU
, libpng, glib, lvm2, libXrandr, libXinerama, libopus, libtpms, qtbase, qtx11extras
, qttools, qtsvg, qtwayland, pkg-config, which, docbook_xsl, docbook_xml_dtd_43
, alsa-lib, curl, libvpx, nettools, dbus, substituteAll, gsoap, zlib, xz
, yasm, glslang
, nixosTests
# If open-watcom-bin is not passed, VirtualBox will fall back to use
# the shipped alternative sources (assembly).
, open-watcom-bin
, makeself, perl
, vulkan-loader
, javaBindings ? true, jdk # Almost doesn't affect closure size
, pythonBindings ? false, python3
, extensionPack ? null, fakeroot
, pulseSupport ? config.pulseaudio or stdenv.hostPlatform.isLinux, libpulseaudio
, enableHardening ? false
, headless ? false
, enable32bitGuests ? true
, enableWebService ? false
, enableKvm ? false
, extraConfigureFlags ? ""
{
config,
stdenv,
fetchurl,
fetchpatch,
callPackage,
lib,
acpica-tools,
dev86,
pam,
libxslt,
libxml2,
wrapQtAppsHook,
libX11,
xorgproto,
libXext,
libXcursor,
libXmu,
libIDL,
SDL2,
libcap,
libGL,
libGLU,
libpng,
glib,
lvm2,
libXrandr,
libXinerama,
libopus,
libtpms,
qtbase,
qtx11extras,
qttools,
qtsvg,
qtwayland,
pkg-config,
which,
docbook_xsl,
docbook_xml_dtd_43,
alsa-lib,
curl,
libvpx,
nettools,
dbus,
substituteAll,
gsoap,
zlib,
xz,
yasm,
glslang,
nixosTests,
# If open-watcom-bin is not passed, VirtualBox will fall back to use
# the shipped alternative sources (assembly).
open-watcom-bin,
makeself,
perl,
vulkan-loader,
javaBindings ? true,
jdk, # Almost doesn't affect closure size
pythonBindings ? false,
python3,
extensionPack ? null,
fakeroot,
pulseSupport ? config.pulseaudio or stdenv.hostPlatform.isLinux,
libpulseaudio,
enableHardening ? false,
headless ? false,
enable32bitGuests ? true,
enableWebService ? false,
enableKvm ? false,
extraConfigureFlags ? "",
}:
# The web services use Java infrastructure.
@@ -41,12 +90,26 @@ let
virtualboxGuestAdditionsIso = callPackage guest-additions-iso/default.nix { };
inherit (lib) optional optionals optionalString getDev getLib;
in stdenv.mkDerivation (finalAttrs: {
inherit (lib)
optional
optionals
optionalString
getDev
getLib
;
in
stdenv.mkDerivation (finalAttrs: {
pname = "virtualbox";
version = finalAttrs.virtualboxVersion;
inherit buildType virtualboxVersion virtualboxSha256 kvmPatchVersion kvmPatchHash virtualboxGuestAdditionsIso;
inherit
buildType
virtualboxVersion
virtualboxSha256
kvmPatchVersion
kvmPatchHash
virtualboxGuestAdditionsIso
;
src = fetchurl {
url = "https://download.virtualbox.org/virtualbox/${finalAttrs.virtualboxVersion}/VirtualBox-${finalAttrs.virtualboxVersion}.tar.bz2";
@@ -55,39 +118,84 @@ in stdenv.mkDerivation (finalAttrs: {
outputs = [ "out" ] ++ optional withModsrc "modsrc";
nativeBuildInputs = [ pkg-config which docbook_xsl docbook_xml_dtd_43 yasm glslang ]
++ optional (!headless) wrapQtAppsHook;
nativeBuildInputs = [
pkg-config
which
docbook_xsl
docbook_xml_dtd_43
yasm
glslang
] ++ optional (!headless) wrapQtAppsHook;
# Wrap manually because we wrap just a small number of executables.
dontWrapQtApps = true;
buildInputs = [
acpica-tools dev86 libxslt libxml2 xorgproto libX11 libXext libXcursor libIDL
libcap glib lvm2 alsa-lib curl libvpx pam makeself perl
libXmu libXrandr libpng libopus libtpms python3 xz ]
buildInputs =
[
acpica-tools
dev86
libxslt
libxml2
xorgproto
libX11
libXext
libXcursor
libIDL
libcap
glib
lvm2
alsa-lib
curl
libvpx
pam
makeself
perl
libXmu
libXrandr
libpng
libopus
libtpms
python3
xz
]
++ optional javaBindings jdk
++ optional pythonBindings python3 # Python is needed even when not building bindings
++ optional pulseSupport libpulseaudio
++ optionals headless [ libGL ]
++ optionals (!headless) [ qtbase qtx11extras libXinerama SDL2 libGLU ]
++ optionals enableWebService [ gsoap zlib ];
++ optionals (!headless) [
qtbase
qtx11extras
libXinerama
SDL2
libGLU
]
++ optionals enableWebService [
gsoap
zlib
];
hardeningDisable = [ "format" "fortify" "pic" "stackprotector" ];
hardeningDisable = [
"format"
"fortify"
"pic"
"stackprotector"
];
prePatch = ''
set -x
sed -e 's@MKISOFS --version@MKISOFS -version@' \
-e 's@PYTHONDIR=.*@PYTHONDIR=${optionalString pythonBindings python3}@' \
-e 's@CXX_FLAGS="\(.*\)"@CXX_FLAGS="-std=c++11 \1"@' \
${optionalString (!headless) ''
-e 's@TOOLQT5BIN=.*@TOOLQT5BIN="${getDev qtbase}/bin"@' \
''} -i configure
${
optionalString (!headless) ''
-e 's@TOOLQT5BIN=.*@TOOLQT5BIN="${getDev qtbase}/bin"@' \
''
} -i configure
ls kBuild/bin/linux.x86/k* tools/linux.x86/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux.so.2
ls kBuild/bin/linux.amd64/k* tools/linux.amd64/bin/* | xargs -n 1 patchelf --set-interpreter ${stdenv.cc.libc}/lib/ld-linux-x86-64.so.2
grep 'libpulse\.so\.0' src include -rI --files-with-match | xargs sed -i -e '
${optionalString pulseSupport
''s@"libpulse\.so\.0"@"${libpulseaudio.out}/lib/libpulse.so.0"@g''}'
${optionalString pulseSupport ''s@"libpulse\.so\.0"@"${libpulseaudio.out}/lib/libpulse.so.0"@g''}'
grep 'libdbus-1\.so\.3' src include -rI --files-with-match | xargs sed -i -e '
s@"libdbus-1\.so\.3"@"${dbus.lib}/lib/libdbus-1.so.3"@g'
@@ -100,39 +208,41 @@ in stdenv.mkDerivation (finalAttrs: {
'';
patches =
optional enableHardening ./hardened.patch
# Since VirtualBox 7.0.8, VBoxSDL requires SDL2, but the build framework uses SDL1
++ optionals (!headless) [ ./fix-sdl.patch
# No update patch disables check for update function
# https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/272212
(fetchpatch {
url = "https://salsa.debian.org/pkg-virtualbox-team/virtualbox/-/raw/debian/7.0.14-dfsg-1/debian/patches/16-no-update.patch";
hash = "sha256-UJHpuB6QB/BbxJorlqZXUF12lgq8gbLMRHRMsbyqRpY=";
})]
++ [ ./extra_symbols.patch ]
# When hardening is enabled, we cannot use wrapQtApp to ensure that VirtualBoxVM sees
# the correct environment variables needed for Qt to work, specifically QT_PLUGIN_PATH.
# This is because VirtualBoxVM would detect that it is wrapped that and refuse to run,
# and also because it would unset QT_PLUGIN_PATH for security reasons. We work around
# these issues by patching the code to set QT_PLUGIN_PATH to the necessary paths,
# after the code that unsets it. Note that qtsvg is included so that SVG icons from
# the user's icon theme can be loaded.
++ optional (!headless && enableHardening) (substituteAll {
optional enableHardening ./hardened.patch
# Since VirtualBox 7.0.8, VBoxSDL requires SDL2, but the build framework uses SDL1
++ optionals (!headless) [
./fix-sdl.patch
# No update patch disables check for update function
# https://bugs.launchpad.net/ubuntu/+source/virtualbox-ose/+bug/272212
(fetchpatch {
url = "https://salsa.debian.org/pkg-virtualbox-team/virtualbox/-/raw/debian/7.0.14-dfsg-1/debian/patches/16-no-update.patch";
hash = "sha256-UJHpuB6QB/BbxJorlqZXUF12lgq8gbLMRHRMsbyqRpY=";
})
]
++ [ ./extra_symbols.patch ]
# When hardening is enabled, we cannot use wrapQtApp to ensure that VirtualBoxVM sees
# the correct environment variables needed for Qt to work, specifically QT_PLUGIN_PATH.
# This is because VirtualBoxVM would detect that it is wrapped that and refuse to run,
# and also because it would unset QT_PLUGIN_PATH for security reasons. We work around
# these issues by patching the code to set QT_PLUGIN_PATH to the necessary paths,
# after the code that unsets it. Note that qtsvg is included so that SVG icons from
# the user's icon theme can be loaded.
++ optional (!headless && enableHardening) (substituteAll {
src = ./qt-env-vars.patch;
qtPluginPath = "${qtbase.bin}/${qtbase.qtPluginPrefix}:${qtsvg.bin}/${qtbase.qtPluginPrefix}:${qtwayland.bin}/${qtbase.qtPluginPrefix}";
})
# While the KVM patch should not break any other behavior if --with-kvm is not specified,
# we don't take any chances and only apply it if people actually want to use KVM support.
++ optional enableKvm (fetchpatch {
})
# While the KVM patch should not break any other behavior if --with-kvm is not specified,
# we don't take any chances and only apply it if people actually want to use KVM support.
++ optional enableKvm (fetchpatch {
name = "virtualbox-${finalAttrs.virtualboxVersion}-kvm-dev-${finalAttrs.kvmPatchVersion}.patch";
url = "https://github.com/cyberus-technology/virtualbox-kvm/releases/download/dev-${finalAttrs.kvmPatchVersion}/kvm-backend-${finalAttrs.virtualboxVersion}-dev-${finalAttrs.kvmPatchVersion}.patch";
hash = finalAttrs.kvmPatchHash;
})
++ [
./qt-dependency-paths.patch
# https://github.com/NixOS/nixpkgs/issues/123851
./fix-audio-driver-loading.patch
];
++ [
./qt-dependency-paths.patch
# https://github.com/NixOS/nixpkgs/issues/123851
./fix-audio-driver-loading.patch
];
postPatch = ''
sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
@@ -161,18 +271,18 @@ in stdenv.mkDerivation (finalAttrs: {
VBOX_WITH_UPDATE_AGENT :=
${optionalString javaBindings ''
VBOX_JAVA_HOME := ${jdk}
VBOX_JAVA_HOME := ${jdk}
''}
${optionalString (!headless) ''
VBOX_WITH_VBOXSDL := 1
PATH_QT5_X11_EXTRAS_LIB := ${getLib qtx11extras}/lib
PATH_QT5_X11_EXTRAS_INC := ${getDev qtx11extras}/include
PATH_QT5_TOOLS_LIB := ${getLib qttools}/lib
PATH_QT5_TOOLS_INC := ${getDev qttools}/include
VBOX_WITH_VBOXSDL := 1
PATH_QT5_X11_EXTRAS_LIB := ${getLib qtx11extras}/lib
PATH_QT5_X11_EXTRAS_INC := ${getDev qtx11extras}/include
PATH_QT5_TOOLS_LIB := ${getLib qttools}/lib
PATH_QT5_TOOLS_INC := ${getDev qttools}/include
''}
${optionalString enableWebService ''
# fix gsoap missing zlib include and produce errors with --as-needed
VBOX_GSOAP_CXX_LIBS := gsoapssl++ z
# fix gsoap missing zlib include and produce errors with --as-needed
VBOX_GSOAP_CXX_LIBS := gsoapssl++ z
''}
TOOL_QT5_LRC := ${getDev qttools}/bin/lrelease
LOCAL_CONFIG
@@ -213,7 +323,9 @@ in stdenv.mkDerivation (finalAttrs: {
-name src -o -exec cp -avt "$libexec" {} +
mkdir -p $out/bin
for file in ${optionalString (!headless) "VirtualBox VBoxSDL"} ${optionalString enableWebService "vboxwebsrv"} VBoxManage VBoxBalloonCtrl VBoxHeadless; do
for file in ${
optionalString (!headless) "VirtualBox VBoxSDL"
} ${optionalString enableWebService "vboxwebsrv"} VBoxManage VBoxBalloonCtrl VBoxHeadless; do
echo "Linking $file to /bin"
test -x "$libexec/$file"
ln -s "$libexec/$file" $out/bin/$file
@@ -255,15 +367,16 @@ in stdenv.mkDerivation (finalAttrs: {
ln -s "${finalAttrs.virtualboxGuestAdditionsIso}" "$out/share/virtualbox/VBoxGuestAdditions.iso"
'';
preFixup = optionalString (!headless) ''
wrapQtApp $out/bin/VirtualBox
''
# If hardening is disabled, wrap the VirtualBoxVM binary instead of patching
# the source code (see postPatch).
+ optionalString (!headless && !enableHardening) ''
wrapQtApp $out/libexec/virtualbox/VirtualBoxVM \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ vulkan-loader ]}"
'';
preFixup =
optionalString (!headless) ''
wrapQtApp $out/bin/VirtualBox
''
# If hardening is disabled, wrap the VirtualBoxVM binary instead of patching
# the source code (see postPatch).
+ optionalString (!headless && !enableHardening) ''
wrapQtApp $out/libexec/virtualbox/VirtualBoxVM \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ vulkan-loader ]}"
'';
passthru = {
inherit extensionPack; # for inclusion in profile to prevent gc
@@ -285,7 +398,11 @@ in stdenv.mkDerivation (finalAttrs: {
];
license = lib.licenses.gpl2;
homepage = "https://www.virtualbox.org/";
maintainers = with lib.maintainers; [ sander friedrichaltheide blitz ];
maintainers = with lib.maintainers; [
sander
friedrichaltheide
blitz
];
platforms = [ "x86_64-linux" ];
mainProgram = "VirtualBox";
};
@@ -1,4 +1,8 @@
{ fetchurl, lib, virtualbox }:
{
fetchurl,
lib,
virtualbox,
}:
let
inherit (virtualbox) version;
in
@@ -9,14 +13,20 @@ fetchurl rec {
# Manually sha256sum the extensionPack file, must be hex!
# Thus do not use `nix-prefetch-url` but instead plain old `sha256sum`.
# Checksums can also be found at https://www.virtualbox.org/download/hashes/${version}/SHA256SUMS
let value = "d750fb17688d70e0cb2d7b06f1ad3a661303793f4d1ac39cfa9a54806b89da25";
in assert (builtins.stringLength value) == 64; value;
let
value = "d750fb17688d70e0cb2d7b06f1ad3a661303793f4d1ac39cfa9a54806b89da25";
in
assert (builtins.stringLength value) == 64;
value;
meta = with lib; {
description = "Oracle Extension pack for VirtualBox";
license = licenses.virtualbox-puel;
homepage = "https://www.virtualbox.org/";
maintainers = with maintainers; [ sander friedrichaltheide ];
maintainers = with maintainers; [
sander
friedrichaltheide
];
platforms = [ "x86_64-linux" ];
};
}
@@ -1,4 +1,8 @@
{ fetchurl, lib, virtualbox}:
{
fetchurl,
lib,
virtualbox,
}:
let
inherit (virtualbox) version;
@@ -13,7 +17,13 @@ fetchurl {
'';
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.sander lib.maintainers.friedrichaltheide ];
platforms = [ "i686-linux" "x86_64-linux" ];
maintainers = [
lib.maintainers.sander
lib.maintainers.friedrichaltheide
];
platforms = [
"i686-linux"
"x86_64-linux"
];
};
}
@@ -1,14 +1,32 @@
{ stdenv, kernel, fetchurl, lib, pam, libxslt
, libXext, libXcursor, libXmu
, glib, libXrandr, dbus, xz
, pkg-config, which, xorg
, yasm, patchelf, makeself
, linuxHeaders, openssl}:
{
stdenv,
kernel,
fetchurl,
lib,
pam,
libxslt,
libXext,
libXcursor,
libXmu,
glib,
libXrandr,
dbus,
xz,
pkg-config,
which,
xorg,
yasm,
patchelf,
makeself,
linuxHeaders,
openssl,
}:
let
buildType = "release";
in stdenv.mkDerivation (finalAttrs: {
in
stdenv.mkDerivation (finalAttrs: {
pname = "VirtualBox-GuestAdditions-builder-${kernel.version}";
version = "7.0.20";
@@ -19,8 +37,26 @@ in stdenv.mkDerivation (finalAttrs: {
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
nativeBuildInputs = [ patchelf pkg-config which yasm makeself xorg.xorgserver openssl linuxHeaders xz ] ++ kernel.moduleBuildDependencies;
buildInputs = [ dbus libxslt libXext libXcursor pam libXmu libXrandr ];
nativeBuildInputs = [
patchelf
pkg-config
which
yasm
makeself
xorg.xorgserver
openssl
linuxHeaders
xz
] ++ kernel.moduleBuildDependencies;
buildInputs = [
dbus
libxslt
libXext
libXcursor
pam
libXmu
libXrandr
];
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
@@ -58,61 +94,61 @@ in stdenv.mkDerivation (finalAttrs: {
'';
configurePhase = ''
NIX_CFLAGS_COMPILE=$(echo "$NIX_CFLAGS_COMPILE" | sed 's,\-isystem ${lib.getDev stdenv.cc.libc}/include,,g')
NIX_CFLAGS_COMPILE=$(echo "$NIX_CFLAGS_COMPILE" | sed 's,\-isystem ${lib.getDev stdenv.cc.libc}/include,,g')
cat >> LocalConfig.kmk <<LOCAL_CONFIG
VBOX_WITH_TESTCASES :=
VBOX_WITH_TESTSUITE :=
VBOX_WITH_VALIDATIONKIT :=
VBOX_WITH_DOCS :=
VBOX_WITH_WARNINGS_AS_ERRORS :=
cat >> LocalConfig.kmk <<LOCAL_CONFIG
VBOX_WITH_TESTCASES :=
VBOX_WITH_TESTSUITE :=
VBOX_WITH_VALIDATIONKIT :=
VBOX_WITH_DOCS :=
VBOX_WITH_WARNINGS_AS_ERRORS :=
VBOX_WITH_ORIGIN :=
VBOX_PATH_APP_PRIVATE_ARCH_TOP := $out/share/virtualbox
VBOX_PATH_APP_PRIVATE_ARCH := $out/libexec/virtualbox
VBOX_PATH_SHARED_LIBS := $out/libexec/virtualbox
VBOX_WITH_RUNPATH := $out/libexec/virtualbox
VBOX_PATH_APP_PRIVATE := $out/share/virtualbox
VBOX_PATH_APP_DOCS := $out/doc
VBOX_WITH_ORIGIN :=
VBOX_PATH_APP_PRIVATE_ARCH_TOP := $out/share/virtualbox
VBOX_PATH_APP_PRIVATE_ARCH := $out/libexec/virtualbox
VBOX_PATH_SHARED_LIBS := $out/libexec/virtualbox
VBOX_WITH_RUNPATH := $out/libexec/virtualbox
VBOX_PATH_APP_PRIVATE := $out/share/virtualbox
VBOX_PATH_APP_DOCS := $out/doc
VBOX_USE_SYSTEM_XORG_HEADERS := 1
VBOX_USE_SYSTEM_GL_HEADERS := 1
VBOX_NO_LEGACY_XORG_X11 := 1
SDK_VBoxLibPng_INCS :=
SDK_VBoxLibXml2_INCS :=
SDK_VBoxLibLzma_INCS := ${xz.dev}/include
SDK_VBoxLibLzma_LIBS := ${xz.out}/lib
VBOX_USE_SYSTEM_XORG_HEADERS := 1
VBOX_USE_SYSTEM_GL_HEADERS := 1
VBOX_NO_LEGACY_XORG_X11 := 1
SDK_VBoxLibPng_INCS :=
SDK_VBoxLibXml2_INCS :=
SDK_VBoxLibLzma_INCS := ${xz.dev}/include
SDK_VBoxLibLzma_LIBS := ${xz.out}/lib
SDK_VBoxOpenSslStatic_INCS := ${openssl.dev}/include/ssl
SDK_VBoxOpenSslStatic_INCS := ${openssl.dev}/include/ssl
VBOX_ONLY_ADDITIONS := 1
VBOX_WITH_SHARED_CLIPBOARD := 1
VBOX_WITH_GUEST_PROPS := 1
VBOX_WITH_VMSVGA := 1
VBOX_WITH_SHARED_FOLDERS := 1
VBOX_WITH_GUEST_CONTROL := 1
VBOX_WITHOUT_LINUX_GUEST_PACKAGE := 1
VBOX_WITH_PAM :=
VBOX_WITH_UPDATE_AGENT :=
VBOX_WITH_AUDIO_ALSA :=
VBOX_WITH_AUDIO_PULSE :=
VBOX_ONLY_ADDITIONS := 1
VBOX_WITH_SHARED_CLIPBOARD := 1
VBOX_WITH_GUEST_PROPS := 1
VBOX_WITH_VMSVGA := 1
VBOX_WITH_SHARED_FOLDERS := 1
VBOX_WITH_GUEST_CONTROL := 1
VBOX_WITHOUT_LINUX_GUEST_PACKAGE := 1
VBOX_WITH_PAM :=
VBOX_WITH_UPDATE_AGENT :=
VBOX_WITH_AUDIO_ALSA :=
VBOX_WITH_AUDIO_PULSE :=
VBOX_BUILD_PUBLISHER := _NixOS
LOCAL_CONFIG
VBOX_BUILD_PUBLISHER := _NixOS
LOCAL_CONFIG
./configure \
--only-additions \
--with-linux=${kernel.dev} \
--disable-kmods
./configure \
--only-additions \
--with-linux=${kernel.dev} \
--disable-kmods
sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${glib.dev}/lib/pkgconfig @' \
-i AutoConfig.kmk
sed -e 's@arch/x86/@@' \
-i Config.kmk
sed -e 's@PKG_CONFIG_PATH=.*@PKG_CONFIG_PATH=${glib.dev}/lib/pkgconfig @' \
-i AutoConfig.kmk
sed -e 's@arch/x86/@@' \
-i Config.kmk
export USER=nix
set +x
'';
export USER=nix
set +x
'';
enableParallelBuilding = true;
@@ -130,7 +166,11 @@ in stdenv.mkDerivation (finalAttrs: {
runHook preInstall
mkdir -p $out
cp -rv ./out/linux.${if stdenv.hostPlatform.is32bit then "x86" else "amd64"}/${buildType}/bin/additions/VBoxGuestAdditions-${if stdenv.hostPlatform.is32bit then "x86" else "amd64"}.tar.bz2 $out/
cp -rv ./out/linux.${
if stdenv.hostPlatform.is32bit then "x86" else "amd64"
}/${buildType}/bin/additions/VBoxGuestAdditions-${
if stdenv.hostPlatform.is32bit then "x86" else "amd64"
}.tar.bz2 $out/
runHook postInstall
'';
@@ -1,5 +1,13 @@
{ stdenv, kernel, callPackage, lib, dbus
, xorg, zlib, patchelf, makeWrapper
{
stdenv,
kernel,
callPackage,
lib,
dbus,
xorg,
zlib,
patchelf,
makeWrapper,
}:
let
virtualBoxNixGuestAdditionsBuilder = callPackage ./builder.nix { };
@@ -12,96 +20,129 @@ let
# dlopen are found. We grep binaries for specific library names and patch
# RUNPATH in matching binaries to contain the needed library paths.
dlopenLibs = [
{ name = "libdbus-1.so"; pkg = dbus; }
{ name = "libXfixes.so"; pkg = xorg.libXfixes; }
{ name = "libXrandr.so"; pkg = xorg.libXrandr; }
{
name = "libdbus-1.so";
pkg = dbus;
}
{
name = "libXfixes.so";
pkg = xorg.libXfixes;
}
{
name = "libXrandr.so";
pkg = xorg.libXrandr;
}
];
in stdenv.mkDerivation {
pname = "VirtualBox-GuestAdditions";
version = "${virtualBoxNixGuestAdditionsBuilder.version}-${kernel.version}";
in
stdenv.mkDerivation {
pname = "VirtualBox-GuestAdditions";
version = "${virtualBoxNixGuestAdditionsBuilder.version}-${kernel.version}";
src = "${virtualBoxNixGuestAdditionsBuilder}/VBoxGuestAdditions-${if stdenv.hostPlatform.is32bit then "x86" else "amd64"}.tar.bz2";
sourceRoot = ".";
src = "${virtualBoxNixGuestAdditionsBuilder}/VBoxGuestAdditions-${
if stdenv.hostPlatform.is32bit then "x86" else "amd64"
}.tar.bz2";
sourceRoot = ".";
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
KERN_DIR = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/build";
KERN_INCL = "${kernel.dev}/lib/modules/${kernel.modDirVersion}/source/include";
hardeningDisable = [ "pic" ];
hardeningDisable = [ "pic" ];
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
env.NIX_CFLAGS_COMPILE = "-Wno-error=incompatible-pointer-types -Wno-error=implicit-function-declaration";
nativeBuildInputs = [ patchelf makeWrapper virtualBoxNixGuestAdditionsBuilder ] ++ kernel.moduleBuildDependencies;
nativeBuildInputs = [
patchelf
makeWrapper
virtualBoxNixGuestAdditionsBuilder
] ++ kernel.moduleBuildDependencies;
buildPhase = ''
runHook preBuild
buildPhase = ''
runHook preBuild
# Build kernel modules.
cd src/vboxguest-${virtualBoxNixGuestAdditionsBuilder.version}_NixOS
# Run just make first. If we only did make install, we get symbol warnings during build.
make
cd ../..
# Build kernel modules.
cd src/vboxguest-${virtualBoxNixGuestAdditionsBuilder.version}_NixOS
# Run just make first. If we only did make install, we get symbol warnings during build.
make
cd ../..
# Change the interpreter for various binaries
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl,VBoxDRMClient} other/mount.vboxsf; do
patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} $i
patchelf --set-rpath ${lib.makeLibraryPath [ stdenv.cc.cc stdenv.cc.libc zlib
xorg.libX11 xorg.libXt xorg.libXext xorg.libXmu xorg.libXfixes xorg.libXcursor ]} $i
done
# Change the interpreter for various binaries
for i in sbin/VBoxService bin/{VBoxClient,VBoxControl,VBoxDRMClient} other/mount.vboxsf; do
patchelf --set-interpreter ${stdenv.cc.bintools.dynamicLinker} $i
patchelf --set-rpath ${
lib.makeLibraryPath [
stdenv.cc.cc
stdenv.cc.libc
zlib
xorg.libX11
xorg.libXt
xorg.libXext
xorg.libXmu
xorg.libXfixes
xorg.libXcursor
]
} $i
done
runHook postBuild
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
# Install kernel modules.
cd src/vboxguest-${virtualBoxNixGuestAdditionsBuilder.version}_NixOS
make install INSTALL_MOD_PATH=$out KBUILD_EXTRA_SYMBOLS=$PWD/vboxsf/Module.symvers
cd ../..
# Install binaries
install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf
install -D -m 755 sbin/VBoxService $out/bin/VBoxService
install -m 755 bin/VBoxClient $out/bin
install -m 755 bin/VBoxControl $out/bin
install -m 755 bin/VBoxDRMClient $out/bin
# Don't install VBoxOGL for now
# It seems to be broken upstream too, and fixing it is far down the priority list:
# https://www.virtualbox.org/pipermail/vbox-dev/2017-June/014561.html
# Additionally, 3d support seems to rely on VBoxOGL.so being symlinked from
# libGL.so (which we can't), and Oracle doesn't plan on supporting libglvnd
# either. (#18457)
runHook postInstall
'';
# Stripping breaks these binaries for some reason.
dontStrip = true;
# Patch RUNPATH according to dlopenLibs (see the comment there).
postFixup = lib.concatMapStrings (library: ''
for i in $(grep -F ${lib.escapeShellArg library.name} -l -r $out/{lib,bin}); do
origRpath=$(patchelf --print-rpath "$i")
patchelf --set-rpath "$origRpath:${lib.makeLibraryPath [ library.pkg ]}" "$i"
done
'') dlopenLibs;
meta = {
description = "Guest additions for VirtualBox";
longDescription = ''
Various add-ons which makes NixOS work better as guest OS inside VirtualBox.
This add-on provides support for dynamic resizing of the virtual display, shared
host/guest clipboard support.
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin
# Install kernel modules.
cd src/vboxguest-${virtualBoxNixGuestAdditionsBuilder.version}_NixOS
make install INSTALL_MOD_PATH=$out KBUILD_EXTRA_SYMBOLS=$PWD/vboxsf/Module.symvers
cd ../..
# Install binaries
install -D -m 755 other/mount.vboxsf $out/bin/mount.vboxsf
install -D -m 755 sbin/VBoxService $out/bin/VBoxService
install -m 755 bin/VBoxClient $out/bin
install -m 755 bin/VBoxControl $out/bin
install -m 755 bin/VBoxDRMClient $out/bin
# Don't install VBoxOGL for now
# It seems to be broken upstream too, and fixing it is far down the priority list:
# https://www.virtualbox.org/pipermail/vbox-dev/2017-June/014561.html
# Additionally, 3d support seems to rely on VBoxOGL.so being symlinked from
# libGL.so (which we can't), and Oracle doesn't plan on supporting libglvnd
# either. (#18457)
runHook postInstall
'';
# Stripping breaks these binaries for some reason.
dontStrip = true;
# Patch RUNPATH according to dlopenLibs (see the comment there).
postFixup = lib.concatMapStrings (library: ''
for i in $(grep -F ${lib.escapeShellArg library.name} -l -r $out/{lib,bin}); do
origRpath=$(patchelf --print-rpath "$i")
patchelf --set-rpath "$origRpath:${lib.makeLibraryPath [ library.pkg ]}" "$i"
done
'') dlopenLibs;
meta = {
description = "Guest additions for VirtualBox";
longDescription = ''
Various add-ons which makes NixOS work better as guest OS inside VirtualBox.
This add-on provides support for dynamic resizing of the virtual display, shared
host/guest clipboard support.
'';
sourceProvenance = with lib.sourceTypes; [ fromSource ];
license = lib.licenses.gpl2;
maintainers = [ lib.maintainers.sander lib.maintainers.friedrichaltheide ];
platforms = [ "i686-linux" "x86_64-linux" ];
broken = stdenv.hostPlatform.is32bit && (kernel.kernelAtLeast "5.10");
};
}
sourceProvenance = with lib.sourceTypes; [ fromSource ];
license = lib.licenses.gpl2;
maintainers = [
lib.maintainers.sander
lib.maintainers.friedrichaltheide
];
platforms = [
"i686-linux"
"x86_64-linux"
];
broken = stdenv.hostPlatform.is32bit && (kernel.kernelAtLeast "5.10");
};
}
@@ -1,12 +1,22 @@
{ stdenvNoCC }:
args:
{ lib, stdenvNoCC }:
# see the substituteAll in the nixpkgs documentation for usage and constraints
stdenvNoCC.mkDerivation ({
name = if args ? name then args.name else baseNameOf (toString args.src);
builder = ./substitute-all.sh;
inherit (args) src;
preferLocalBuild = true;
allowSubstitutes = false;
} // args)
args:
let
# keep this in sync with substituteAll
isInvalidArgName = x: builtins.match "^[a-z][a-zA-Z0-9_]*$" x == null;
invalidArgs = builtins.filter isInvalidArgName (builtins.attrNames args);
in
if invalidArgs == [] then
stdenvNoCC.mkDerivation ({
name = if args ? name then args.name else baseNameOf (toString args.src);
builder = ./substitute-all.sh;
inherit (args) src;
preferLocalBuild = true;
allowSubstitutes = false;
} // args)
else throw ''
Argument names for `pkgs.substituteAll` must:
- start with a lower case ASCII letter
- only contain ASCII letters, digits and underscores
Found invalid argument names: ${lib.concatStringsSep ", " invalidArgs}.
''
@@ -0,0 +1,25 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f1ecfe0..9056f9d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -83,8 +83,9 @@ ExternalProject_Add(BearSource
-DCMAKE_MODULE_LINKER_FLAGS:STRING=${CMAKE_MODULE_LINKER_FLAGS}
-DROOT_INSTALL_PREFIX:PATH=${CMAKE_INSTALL_PREFIX}
${CMAKE_CACHE_ARGS_EXTRA}
- TEST_BEFORE_INSTALL
+ TEST_EXCLUDE_FROM_MAIN
1
+ STEP_TARGETS test
TEST_COMMAND
ctest # or `ctest -T memcheck`
)
@@ -100,7 +101,8 @@ if (ENABLE_FUNC_TESTS)
-DCMAKE_INSTALL_LIBDIR:PATH=${CMAKE_INSTALL_LIBDIR}
-DCMAKE_INSTALL_BINDIR:PATH=${CMAKE_INSTALL_BINDIR}
-DSTAGED_INSTALL_PREFIX:PATH=${STAGED_INSTALL_PREFIX}
- TEST_BEFORE_INSTALL
+ TEST_EXCLUDE_FROM_MAIN
+ STEP_TARGETS test
1
INSTALL_COMMAND
""
@@ -6,7 +6,7 @@
ninja,
pkg-config,
grpc,
protobuf_25,
protobuf,
openssl,
nlohmann_json,
gtest,
@@ -20,33 +20,28 @@
coreutils,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "bear";
version = "3.1.3";
version = "3.1.5";
src = fetchFromGitHub {
owner = "rizsotto";
repo = pname;
rev = version;
hash = "sha256-1nZPzgLWcmaRkOUXdm16IW2Nw/p1w8GBGEfZX/v+En0=";
repo = "bear";
rev = finalAttrs.version;
hash = "sha256-pwdjytP+kmTwozRl1Gd0jUqRs3wfvcYPqiQvVwa6s9c=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
# Used for functional tests, which run during buildPhase.
lit
python3
];
buildInputs = [
grpc
protobuf_25
protobuf
openssl
nlohmann_json
gtest
spdlog
c-ares
zlib
@@ -54,20 +49,52 @@ stdenv.mkDerivation rec {
re2
];
patches = [
# This patch is necessary to run tests in a separate phase. By default
# test targets are run with ALL, which is not what we want. This patch creates
# separate 'test' step targets for each cmake ExternalProject:
# - BearTest-test (functional lit tests)
# - BearSource-test (unit tests via gtest)
./0001-exclude-tests-from-all.patch
];
nativeCheckInputs = [
lit
python3
];
checkInputs = [
gtest
];
cmakeFlags = [
# Build system and generated files concatenate install prefix and
# CMAKE_INSTALL_{BIN,LIB}DIR, which breaks if these are absolute paths.
"-DCMAKE_INSTALL_BINDIR=bin"
"-DCMAKE_INSTALL_LIBDIR=lib"
(lib.cmakeBool "ENABLE_UNIT_TESTS" false)
(lib.cmakeBool "ENABLE_FUNC_TESTS" false)
(lib.cmakeBool "ENABLE_UNIT_TESTS" finalAttrs.doCheck)
(lib.cmakeBool "ENABLE_FUNC_TESTS" finalAttrs.doCheck)
];
patches = [
# Fix toolchain environment variable handling and the Darwin SIP check.
./fix-functional-tests.patch
checkTarget = lib.concatStringsSep " " [
"BearTest-test"
"BearSource-test"
];
doCheck = true;
env = {
# Disable failing tests. The cause is not immediately clear.
LIT_FILTER_OUT = lib.concatStringsSep "|" [
"cases/compilation/output/config/filter_compilers.sh"
"cases/intercept/preload/posix/execvpe/success_to_resolve.c"
"cases/intercept/preload/posix/popen/success.c"
"cases/intercept/preload/posix/posix_spawnp/success_to_resolve.c"
"cases/intercept/preload/posix/system/success.c"
"cases/intercept/preload/shell_commands_intercepted_without_shebang.sh"
];
};
postPatch = ''
patchShebangs test/bin
@@ -92,4 +119,4 @@ stdenv.mkDerivation rec {
platforms = platforms.unix;
maintainers = with maintainers; [ DieracDelta ];
};
}
})
@@ -12,14 +12,14 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "blueprint-compiler";
version = "0.12.0";
version = "0.14.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "jwestman";
repo = "blueprint-compiler";
rev = "v${finalAttrs.version}";
hash = "sha256-pvYSFCiYynH3E6QOTu4RfG+6eucq++yiRu75qucSlZU=";
hash = "sha256-pkbTxCN7LagIbOtpiUCkh40aHw6uRtalQVFa47waXjU=";
};
nativeBuildInputs = [
@@ -1,43 +1,43 @@
{ lib
, stdenv
, fetchurl
, cmake
, fetchpatch
, fontconfig
, hunspell
, hyphen
, icu
, imagemagick
, libjpeg
, libmtp
, libpng
, libstemmer
, libuchardet
, libusb1
, pkg-config
, podofo
, poppler_utils
, python3Packages
, qmake
, qtbase
, qtwayland
, speechd-minimal
, sqlite
, wrapQtAppsHook
, xdg-utils
, wrapGAppsHook3
, popplerSupport ? true
, speechSupport ? true
, unrarSupport ? false
{
lib,
stdenv,
fetchurl,
cmake,
fetchpatch,
ffmpeg,
fontconfig,
hunspell,
hyphen,
icu,
imagemagick,
libjpeg,
libmtp,
libpng,
libstemmer,
libuchardet,
libusb1,
piper-tts,
pkg-config,
podofo,
poppler_utils,
python3Packages,
qt6,
speechd-minimal,
sqlite,
xdg-utils,
wrapGAppsHook3,
popplerSupport ? true,
speechSupport ? true,
unrarSupport ? false,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "calibre";
version = "7.16.0";
version = "7.20.0";
src = fetchurl {
url = "https://download.calibre-ebook.com/${finalAttrs.version}/calibre-${finalAttrs.version}.tar.xz";
hash = "sha256-EWQfaoTwO9BdZQgJQrxfj6b8tmtukvlW5hFo/USjNhU=";
hash = "sha256-BhJEJsQKk/kJxycm/1mbtlrSaeFQPvWGGB9DUMidgII=";
};
patches = [
@@ -50,10 +50,9 @@ stdenv.mkDerivation (finalAttrs: {
(fetchpatch {
name = "0007-Hardening-Qt-code.patch";
url = "https://raw.githubusercontent.com/debian-calibre/calibre/debian/${finalAttrs.version}+ds-1/debian/patches/hardening/0007-Hardening-Qt-code.patch";
hash = "sha256-a6yyG0RUsQJBBNxeJsTtQSBV2lxdzz1hnTob88O+SKg=";
hash = "sha256-8tOxFCmZal+JxOz6LeuUr+TgX7IaxC9Ow73bMgFJPt8=";
})
]
++ lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
] ++ lib.optional (!unrarSupport) ./dont_build_unrar_plugin.patch;
prePatch = ''
sed -i "s@\[tool.sip.project\]@[tool.sip.project]\nsip-include-dirs = [\"${python3Packages.pyqt6}/${python3Packages.python.sitePackages}/PyQt6/bindings\"]@g" \
@@ -69,12 +68,13 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
cmake
pkg-config
qmake
qt6.qmake
qt6.wrapQtAppsHook
wrapGAppsHook3
wrapQtAppsHook
];
buildInputs = [
ffmpeg
fontconfig
hunspell
hyphen
@@ -86,13 +86,16 @@ stdenv.mkDerivation (finalAttrs: {
libstemmer
libuchardet
libusb1
piper-tts
podofo
poppler_utils
qtbase
qtwayland
qt6.qtbase
qt6.qtwayland
sqlite
(python3Packages.python.withPackages
(ps: with ps; [
(python3Packages.python.withPackages (
ps:
with ps;
[
(apsw.overrideAttrs (oldAttrs: {
setupPyBuildFlags = [ "--enable=load_extension" ];
}))
@@ -124,13 +127,17 @@ stdenv.mkDerivation (finalAttrs: {
xxhash
# the following are distributed with calibre, but we use upstream instead
odfpy
] ++ lib.optionals (lib.lists.any (p: p == stdenv.hostPlatform.system) pyqt6-webengine.meta.platforms) [
# much of calibre's functionality is usable without a web
# browser, so we enable building on platforms which qtwebengine
# does not support by simply omitting qtwebengine.
pyqt6-webengine
] ++ lib.optional (unrarSupport) unrardll)
)
]
++
lib.optionals (lib.lists.any (p: p == stdenv.hostPlatform.system) pyqt6-webengine.meta.platforms)
[
# much of calibre's functionality is usable without a web
# browser, so we enable building on platforms which qtwebengine
# does not support by simply omitting qtwebengine.
pyqt6-webengine
]
++ lib.optional (unrarSupport) unrardll
))
xdg-utils
] ++ lib.optional (speechSupport) speechd-minimal;
@@ -148,6 +155,7 @@ stdenv.mkDerivation (finalAttrs: {
export PODOFO_LIB_DIR=${podofo.lib}/lib
export XDG_DATA_HOME=$out/share
export XDG_UTILS_INSTALL_MODE="user"
export PIPER_TTS_DIR=${piper-tts}/bin
python setup.py install --root=$out \
--prefix=$out \
@@ -219,9 +227,7 @@ stdenv.mkDerivation (finalAttrs: {
free and open source and great for both casual users and computer experts.
'';
changelog = "https://github.com/kovidgoyal/calibre/releases/tag/v${finalAttrs.version}";
license = if unrarSupport
then lib.licenses.unfreeRedistributable
else lib.licenses.gpl3Plus;
license = if unrarSupport then lib.licenses.unfreeRedistributable else lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ pSub ];
platforms = lib.platforms.unix;
broken = stdenv.hostPlatform.isDarwin;
@@ -0,0 +1,52 @@
{
lib,
stdenv,
rustPlatform,
fetchFromGitHub,
pkg-config,
openssl,
testers,
nix-update-script,
couchbase-shell,
}:
rustPlatform.buildRustPackage rec {
pname = "couchbase-shell";
version = "1.0.0";
src = fetchFromGitHub {
owner = "couchbaselabs";
repo = "couchbase-shell";
rev = "v${version}";
hash = "sha256-ksAyi7yMz56de1lA2LYVNdsn02GNrcJVoRLcK1zFppE=";
};
cargoHash = "sha256-efy1M4Q9dBfEq0YYUKn4y1Rz/dPbBYLapcPXJLI9X+Q=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
openssl
];
# tests need couchbase server
doCheck = false;
passthru = {
tests.version = testers.testVersion {
package = couchbase-shell;
};
updateScript = nix-update-script { };
};
meta = {
description = "Shell for Couchbase Server and Cloud";
homepage = "https://couchbase.sh/";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ petrkozorezov ];
mainProgram = "cbsh";
platforms = lib.platforms.linux;
};
}
+204
View File
@@ -0,0 +1,204 @@
{
# build tools
stdenv,
autoreconfHook,
makeWrapper,
pkg-config,
# check hook
versionCheckHook,
# fetchers
fetchFromGitHub,
fetchpatch,
fetchurl,
# build inputs
bison,
brotli,
coreutils,
cunit,
cyrus_sasl,
fig2dev,
flex,
icu,
jansson,
lib,
libbsd,
libcap,
libchardet,
libical,
libmysqlclient,
libsrs2,
libuuid,
libxml2,
nghttp2,
openssl,
pcre2,
perl,
postgresql,
rsync,
shapelib,
sqlite,
unixtools,
valgrind,
wslay,
xapian,
zlib,
# feature flags
enableAutoCreate ? true,
enableBackup ? true,
enableCalalarmd ? true,
enableHttp ? true,
enableIdled ? true,
enableJMAP ? true,
enableMurder ? true,
enableNNTP ? false,
enableReplication ? true,
enableSrs ? true,
enableUnitTests ? true,
enableXapian ? true,
withLibcap ? true,
withMySQL ? false,
withOpenssl ? true,
withPgSQL ? false,
withSQLite ? true,
withZlib ? true,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "cyrus-imapd";
version = "3.10.0";
src = fetchFromGitHub {
owner = "cyrusimap";
repo = "cyrus-imapd";
rev = "refs/tags/cyrus-imapd-${finalAttrs.version}";
hash = "sha256-dyybRqmrVX+ERGpToS5JjGC6S/B0t967dLCWfeUrLKA=";
};
nativeBuildInputs = [
makeWrapper
pkg-config
autoreconfHook
];
buildInputs =
[
unixtools.xxd
pcre2
flex
valgrind
fig2dev
perl
cyrus_sasl.dev
icu
jansson
libbsd
libuuid
openssl
zlib
bison
libsrs2
]
++ lib.optionals stdenv.isLinux [ libcap ]
++ lib.optionals (enableHttp || enableCalalarmd || enableJMAP) [
brotli.dev
libical.dev
libxml2.dev
nghttp2.dev
shapelib
]
++ lib.optionals enableJMAP [
libchardet
wslay
]
++ lib.optionals enableXapian [
rsync
xapian
]
++ lib.optionals withMySQL [ libmysqlclient ]
++ lib.optionals withPgSQL [ postgresql ]
++ lib.optionals withSQLite [ sqlite ];
enableParallelBuilding = true;
postPatch =
let
managesieveLibs =
[
zlib
cyrus_sasl
]
# Darwin doesn't have libuuid, try to build without it
++ lib.optional (!stdenv.isDarwin) libuuid;
imapLibs = managesieveLibs ++ [ pcre2 ];
mkLibsString = lib.strings.concatMapStringsSep " " (l: "-L${lib.getLib l}/lib");
in
''
patchShebangs cunit/*.pl
patchShebangs imap/promdatagen
patchShebangs tools/*
echo ${finalAttrs.version} > VERSION
substituteInPlace cunit/command.testc \
--replace-fail /usr/bin/touch ${lib.getExe' coreutils "touch"} \
--replace-fail /bin/echo ${lib.getExe' coreutils "echo"} \
--replace-fail /usr/bin/tr ${lib.getExe' coreutils "tr"} \
--replace-fail /bin/sh ${stdenv.shell}
# fix for https://github.com/cyrusimap/cyrus-imapd/issues/3893
substituteInPlace perl/imap/Makefile.PL.in \
--replace-fail '"$LIB_SASL' '"${mkLibsString imapLibs} -lpcre2-posix $LIB_SASL'
substituteInPlace perl/sieve/managesieve/Makefile.PL.in \
--replace-fail '"$LIB_SASL' '"${mkLibsString managesieveLibs} $LIB_SASL'
'';
postFixup = ''
wrapProgram $out/bin/cyradm --set PERL5LIB $(find $out/lib/perl5 -type d | tr "\\n" ":")
'';
configureFlags = [
"--with-pidfile=/run/cyrus/master.pid"
(lib.enableFeature enableAutoCreate "autocreate")
(lib.enableFeature enableSrs "srs")
(lib.enableFeature enableIdled "idled")
(lib.enableFeature enableMurder "murder")
(lib.enableFeature enableBackup "backup")
(lib.enableFeature enableReplication "replication")
(lib.enableFeature enableUnitTests "unit-tests")
(lib.enableFeature (enableHttp || enableCalalarmd || enableJMAP) "http")
(lib.enableFeature enableJMAP "jmap")
(lib.enableFeature enableNNTP "nntp")
(lib.enableFeature enableXapian "xapian")
(lib.enableFeature enableCalalarmd "calalarmd")
(lib.withFeature withZlib "zlib=${zlib}")
(lib.withFeature withOpenssl "openssl")
(lib.withFeature withLibcap "libcap=${libcap}")
(lib.withFeature withMySQL "mysql")
(lib.withFeature withPgSQL "pgsql")
(lib.withFeature withSQLite "sqlite")
];
checkInputs = [ cunit ];
doCheck = true;
versionCheckProgram = "${builtins.placeholder "out"}/libexec/master";
versionCheckProgramArg = "-V";
nativeInstallCheckInputs = [
versionCheckHook
];
doInstallCheck = true;
meta = {
homepage = "https://www.cyrusimap.org";
description = "Email, contacts and calendar server";
license = with lib.licenses; [ bsdOriginal ];
mainProgram = "cyrus";
maintainers = with lib.maintainers; [
moraxyc
pingiun
];
platforms = lib.platforms.unix;
};
})
+7 -3
View File
@@ -4,11 +4,12 @@
, ant
# executable fails to start for jdk > 17
, jdk17
, swt
, makeWrapper
, strip-nondeterminism
}:
stdenv.mkDerivation (finalAttrs: {
}: let
swt-jdk17 = swt.override { jdk = jdk17; };
in stdenv.mkDerivation (finalAttrs: {
pname = "dataexplorer";
version = "3.9.0";
@@ -40,12 +41,15 @@ stdenv.mkDerivation (finalAttrs: {
runHook preInstall
ant -Dprefix=$out/share/ -f build/build.xml install
# Use SWT from nixpkgs
ln -sf '${swt-jdk17}/jars/swt.jar' "$out/share/DataExplorer/java/ext/swt.jar"
# The sources contain a wrapper script in $out/share/DataExplorer/DataExplorer
# but it hardcodes bash shebang and does not pin the java path.
# So we create our own wrapper, using similar cmdline args as upstream.
mkdir -p $out/bin
makeWrapper ${jdk17}/bin/java $out/bin/DataExplorer \
--prefix LD_LIBRARY_PATH : '${swt-jdk17}/lib' \
--add-flags "-Xms64m -Xmx3092m -jar $out/share/DataExplorer/DataExplorer.jar" \
--set SWT_GTK3 0
-3
View File
@@ -9,7 +9,6 @@
autoPatchelfHook,
wrapGAppsHook3,
gtk3,
swt,
glib,
webkitgtk_4_0,
glib-networking,
@@ -65,11 +64,9 @@ stdenvNoCC.mkDerivation (finalAttrs: {
makeWrapper $out/opt/dbeaver/dbeaver $out/bin/dbeaver \
--prefix PATH : "${openjdk17}/bin" \
--set JAVA_HOME "${openjdk17.home}" \
--prefix CLASSPATH : "$out/dbeaver/plugins/*:${swt}/jars/swt.jar" \
--prefix GIO_EXTRA_MODULES : "${glib-networking}/lib/gio/modules" \
--prefix LD_LIBRARY_PATH : "$out/lib:${
lib.makeLibraryPath [
swt
gtk3
glib
webkitgtk_4_0
+35
View File
@@ -0,0 +1,35 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbip-asn-lite";
version = "2024-10";
src = fetchurl {
url = "https://download.db-ip.com/free/dbip-asn-lite-${finalAttrs.version}.mmdb.gz";
hash = "sha256-zfBRxZ6xwIrOC6MrmtbfKrIK7jxMD/1EMOgQDON6nPw=";
};
dontUnpack = true;
installPhase = ''
runHook preBuild
gzip -c -d "$src" > dbip-asn-lite.mmdb
install -Dm444 dbip-asn-lite.mmdb "$out/share/dbip/dbip-asn-lite.mmdb"
runHook postBuild
'';
passthru.mmdb = "${finalAttrs.finalPackage}/share/dbip/dbip-asn-lite.mmdb";
meta = {
description = "Free IP to ASN Lite database by DB-IP";
homepage = "https://db-ip.com/db/download/ip-to-asn-lite";
license = lib.licenses.cc-by-40;
maintainers = with lib.maintainers; [ Guanran928 ];
platforms = lib.platforms.all;
};
})
@@ -0,0 +1,35 @@
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbip-city-lite";
version = "2024-10";
src = fetchurl {
url = "https://download.db-ip.com/free/dbip-city-lite-${finalAttrs.version}.mmdb.gz";
hash = "sha256-sPjtO0WRdMxGiTySFO3vA1mL3RHxDnhLFzQ1fq2LNUw=";
};
dontUnpack = true;
installPhase = ''
runHook preBuild
gzip -c -d "$src" > dbip-city-lite.mmdb
install -Dm444 dbip-city-lite.mmdb "$out/share/dbip/dbip-city-lite.mmdb"
runHook postBuild
'';
passthru.mmdb = "${finalAttrs.finalPackage}/share/dbip/dbip-city-lite.mmdb";
meta = {
description = "Free IP to City Lite database by DB-IP";
homepage = "https://db-ip.com/db/download/ip-to-city-lite";
license = lib.licenses.cc-by-40;
maintainers = with lib.maintainers; [ Guanran928 ];
platforms = lib.platforms.all;
};
})
@@ -1,8 +1,8 @@
{ lib
, stdenvNoCC
, fetchurl
{
lib,
stdenvNoCC,
fetchurl,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "dbip-country-lite";
version = "2024-10";
@@ -25,11 +25,11 @@ stdenvNoCC.mkDerivation (finalAttrs: {
passthru.mmdb = "${finalAttrs.finalPackage}/share/dbip/dbip-country-lite.mmdb";
meta = with lib; {
meta = {
description = "Free IP to Country Lite database by DB-IP";
homepage = "https://db-ip.com/db/download/ip-to-country-lite";
license = licenses.cc-by-40;
maintainers = with maintainers; [ nickcao ];
platforms = platforms.all;
license = lib.licenses.cc-by-40;
maintainers = with lib.maintainers; [ nickcao ];
platforms = lib.platforms.all;
};
})
+33
View File
@@ -0,0 +1,33 @@
{
stdenv,
lib,
fetchFromGitea,
}:
stdenv.mkDerivation {
pname = "dut";
version = "0-unstable-2024-07-31";
src = fetchFromGitea {
domain = "codeberg.org";
owner = "201984";
repo = "dut";
rev = "041c6f26162c2286776fac246ddbda312da1563d";
hash = "sha256-YrBV5rG9rASI/5pwG3kcHoOvXBHhLJHvFFrvNhmGq2Y=";
};
installFlags = [
"DESTDIR=${placeholder "out"}"
"PREFIX="
];
meta = {
platforms = lib.platforms.all;
broken = stdenv.isDarwin;
description = "A disk usage calculator for Linux";
homepage = "https://codeberg.org/201984/dut";
license = lib.licenses.gpl3;
maintainers = with lib.maintainers; [ errnoh ];
mainProgram = "dut";
};
}
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "eksctl";
version = "0.191.0";
version = "0.193.0";
src = fetchFromGitHub {
owner = "weaveworks";
repo = pname;
rev = version;
hash = "sha256-ypHBvaCvQ1FZiQmKTkQ5h024pLBOpISZooSkIDa1OeQ=";
hash = "sha256-Le/RDF4vhHmCdzuOJaIehqWYnfGH1tHAlSCjwgHXMiE=";
};
vendorHash = "sha256-mdGkdiYjcmsmYnM6fbyUeTC4Zb/Q1+geZrqJELv5i+4=";
+11 -2
View File
@@ -3,6 +3,7 @@
, stdenv
, fetchFromGitHub
, fetchurl
, fetchpatch
, cmake
, qt6
, fmt
@@ -16,11 +17,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "gpt4all";
version = "3.3.0";
version = "3.4.2";
src = fetchFromGitHub {
fetchSubmodules = true;
hash = "sha256-aez/APsei30Tp1em/RDCuq+v8hOavHq4O9qZahrsF/g=";
hash = "sha256-QzU22y6tt3UhazVSPcFuKejH4AV+mw7JExH61NtAKoM=";
owner = "nomic-ai";
repo = "gpt4all";
rev = "v${finalAttrs.version}";
@@ -33,6 +34,12 @@ stdenv.mkDerivation (finalAttrs: {
patches = [
./embedding-local.patch
(fetchpatch {
url = "https://aur.archlinux.org/cgit/aur.git/plain/004-fix-build-with-qt-6.8.0.diff?h=gpt4all-chat&id=d14b12cb63fae95e578aa839a570189a23833051";
sha256 = "3Zur9KFn45f4dgAzOF7p1q42IdLqXwioN4zMiBbWbVU=";
# remove the `gpt4all-chat` part of the paths as sourceRoot is gpt4all-chat
stripLen = 1;
})
];
sourceRoot = "${finalAttrs.src.name}/gpt4all-chat";
@@ -70,6 +77,8 @@ stdenv.mkDerivation (finalAttrs: {
"-DKOMPUTE_OPT_USE_BUILT_IN_VULKAN_HEADER=OFF"
"-DKOMPUTE_OPT_DISABLE_VULKAN_VERSION_CHECK=ON"
"-DKOMPUTE_OPT_USE_BUILT_IN_FMT=OFF"
"-DGGML_VULKAN=ON"
"-DGGML_KOMPUTE=ON"
] ++ lib.optionals (!cudaSupport) [
"-DLLMODEL_CUDA=OFF"
];
-84
View File
@@ -1,84 +0,0 @@
{
"name": "gramma",
"version": "1.6.0",
"license": "ISC",
"repository": "https://github.com/caderek/gramma",
"homepage": "https://caderek.github.io/gramma/",
"description": "Command line grammar checker",
"main": "src/index.js",
"bin": "src/cli.js",
"exports": {
".": "./src/index.js",
"./esm": "./bundle/gramma.esm.js",
"./esm-min": "./bundle/gramma.esm.min.js",
"./iife": "./bundle/gramma.min.js"
},
"types": "src/index.d.ts",
"scripts": {
"build": "rm -rf bin; yarn run build:win64; yarn run build:macos; yarn run build:linux64; yarn run build:zip; yarn run build:bundles",
"build:win64": "pkg -c package.json -t node16-win-x64 --out-path bin/windows64 src/cli.js",
"build:macos": "pkg -c package.json -t node16-macos-x64 --out-path bin/macos src/cli.js",
"build:linux64": "pkg -c package.json -t node16-linux-x64 --out-path bin/linux64 src/cli.js",
"build:bundles": "yarn run build:esm; yarn run build:esm-min; yarn run build:iife",
"build:esm": "esbuild src/index.js --bundle --outfile=bundle/gramma.esm.js --format=esm",
"build:esm-min": "esbuild src/index.js --bundle --outfile=bundle/gramma.esm.min.js --format=esm --minify",
"build:iife": "esbuild src/index.js --bundle --outfile=bundle/gramma.min.js --format=iife --minify --global-name=gramma",
"build:zip": "node scripts/zipBinaries.js",
"format": "prettier --write \"src/**/*.js\"",
"lint": "eslint src/**",
"test": "jest",
"test:ci": "jest --coverage && cat ./coverage/lcov.info | codacy-coverage",
"check:langs": "node scripts/checkLanguagesSupport.js",
"prepare": "husky install",
"definitions": "tsc"
},
"keywords": [
"grammar",
"command-line",
"checker"
],
"author": "Maciej Cąderek | maciej.caderek@gmail.com",
"dependencies": {
"cli-progress": "^3.9.1",
"decompress": "^4.2.1",
"decompress-unzip": "^4.0.1",
"dotenv": "^10.0.0",
"intercept-stdout": "^0.1.2",
"isomorphic-fetch": "^3.0.0",
"kleur": "^4.1.4",
"portfinder": "^1.0.28",
"progress-stream": "^2.0.0",
"prompts": "^2.4.1",
"query-string": "^7.0.1",
"rimraf": "^3.0.2",
"tcp-port-used": "^1.0.2",
"yargs": "^17.2.1"
},
"devDependencies": {
"@types/jest": "^27.0.2",
"codacy-coverage": "^3.4.0",
"esbuild": "^0.13.4",
"eslint": "^7.32.0",
"eslint-config-airbnb": "^18.2.1",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-import": "^2.24.2",
"eslint-plugin-jsx-a11y": "^6.4.1",
"eslint-plugin-react": "^7.26.1",
"gramma": "^1.5.0",
"husky": "^7.0.0",
"jest": "^27.2.4",
"pkg": "^5.3.3",
"prettier": "^2.4.1",
"shelljs": "^0.8.4",
"typescript": "^4.4.3"
},
"jest": {
"verbose": true,
"testMatch": [
"**/?(*.)(spec|test).?(m)js"
]
},
"engines": {
"node": ">=12.0.0"
}
}
+24 -8
View File
@@ -1,34 +1,50 @@
{
lib,
mkYarnPackage,
stdenvNoCC,
fetchYarnDeps,
fetchFromGitHub,
nix-update-script
}: mkYarnPackage rec {
yarnConfigHook,
yarnInstallHook,
nodejs,
nix-update-script,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "gramma";
version = "1.6.0";
src = fetchFromGitHub {
owner = "caderek";
repo = "gramma";
rev = "v${version}";
rev = "refs/tags/v${finalAttrs.version}";
hash = "sha256-gfBwKpsttdhjD/Opn8251qskURpwLX2S5NSbpwP3hFg=";
};
packageJSON = ./package.json;
postPatch = ''
# Set a script name to avoid yargs using cli.js as $0
substituteInPlace src/cli.js \
--replace-fail '.demandCommand()' '.demandCommand().scriptName("gramma")'
'';
offlineCache = fetchYarnDeps {
yarnLock = "${src}/yarn.lock";
yarnLock = "${finalAttrs.src}/yarn.lock";
hash = "sha256-FuR6wUhAaej/vMgjAlICMEj1pPf+7PFrdu2lTFshIkg=";
};
nativeBuildInputs = [
yarnConfigHook
yarnInstallHook
nodejs
];
passthru.updateScript = nix-update-script { };
meta = {
description = "command-line grammar checker";
homepage = "https://caderek.github.io/gramma/";
changelog = "https://github.com/caderek/gramma/releases/tag/v${version}";
changelog = "https://github.com/caderek/gramma/releases/tag/v${finalAttrs.version}";
license = lib.licenses.isc;
mainProgram = "gramma";
maintainers = with lib.maintainers; [ pyrox0 ];
};
}
})
+2 -2
View File
@@ -45,7 +45,7 @@ let
};
in stdenv.mkDerivation (finalAttrs: {
pname = "gucharmap";
version = "15.1.5";
version = "16.0.1";
outputs = [ "out" "lib" "dev" "devdoc" ];
@@ -54,7 +54,7 @@ in stdenv.mkDerivation (finalAttrs: {
owner = "GNOME";
repo = "gucharmap";
rev = finalAttrs.version;
hash = "sha256-PG86D8QvqHdmo3aJseCerngmuWUqtSMdWzbixWE2HOQ=";
hash = "sha256-eQ27TIggwQ2RjDQO5ytVrUT7iNtbP5HOwMcpzweMW8A=";
};
strictDeps = true;
+73
View File
@@ -0,0 +1,73 @@
{
stdenv,
lib,
fetchFromGitHub,
nix-update-script,
adwaita-icon-theme,
gtk4,
libadwaita,
desktop-file-utils,
wrapGAppsHook4,
meson,
ninja,
pkg-config,
cmake,
python3Packages,
appstream,
fetchPypi,
gobject-introspection,
glib,
}:
python3Packages.buildPythonApplication rec {
pname = "hashes";
version = "1.1.0";
pyproject = false;
src = fetchFromGitHub {
owner = "zefr0x";
repo = "hashes";
rev = "refs/tags/v${version}";
hash = "sha256-BmfSCHs+JcpsAG8AhaYf+SDFI+LdJKMKgBIodd66qmw=";
};
nativeBuildInputs = [
meson
ninja
desktop-file-utils
cmake
pkg-config
appstream
gobject-introspection
wrapGAppsHook4
];
buildInputs = [
gtk4
libadwaita
glib
adwaita-icon-theme
];
dependencies = with python3Packages; [
name-that-hash
pygobject3
];
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
passthru.updateScript = nix-update-script { };
meta = {
homepage = "https://github.com/zefr0x/hashes/tree/main";
changelog = "https://github.com/zefr0x/hashes/releases/tag/v${version}";
description = "Simple hash algorithm identification GUI";
maintainers = with lib.maintainers; [ bot-wxt1221 ];
license = lib.licenses.gpl3Plus;
mainProgram = "hashes";
platforms = lib.platforms.unix;
};
}
@@ -35,10 +35,10 @@ diff -Naur cron-old/pathnames.h cron-new/pathnames.h
+#define _PATH_SENDMAIL "@sendmailPath@"
+
+#undef _PATH_VI
+#define _PATH_VI "@VIPATH@"
+#define _PATH_VI "@viPath@"
+
+#undef _PATH_DEFPATH
+#define _PATH_DEFPATH "@DEFPATH@"
+#define _PATH_DEFPATH "@defPath@"
+
+/* Nixpkgs-specific patch end */
+
+2 -2
View File
@@ -20,8 +20,8 @@ stdenv.mkDerivation (finalAttrs: {
(substituteAll {
src = ./0000-nixpkgs-specific.diff;
inherit sendmailPath;
VIPATH = lib.getExe' vim "vim";
DEFPATH = lib.concatStringsSep ":" [
viPath = lib.getExe' vim "vim";
defPath = lib.concatStringsSep ":" [
"/run/wrappers/bin"
"/nix/var/nix/profiles/default/bin"
"/run/current-system/sw/bin"
+3 -3
View File
@@ -9,17 +9,17 @@
}:
rustPlatform.buildRustPackage rec {
pname = "kclvm_cli";
version = "0.10.0";
version = "0.10.3";
src = fetchFromGitHub {
owner = "kcl-lang";
repo = "kcl";
rev = "v${version}";
hash = "sha256-OMPo2cT0ngwHuGghVSfGoDgf+FThj2GsZ3Myb1wSxQM=";
hash = "sha256-qIaDc10NxQKBH7WRzzkQ6bQfkSqsDrFxSwSX+Hf7qS8=";
};
sourceRoot = "${src.name}/cli";
cargoHash = "sha256-2694O2q6UbNySgn76aBTjdqt2Hh1GrdRaro064fGBrI=";
cargoHash = "sha256-mB4qOUj9qZmbstvBIyaWHEzX3DQ7tLhQKDEvea4Bnyk=";
cargoPatches = [ ./cargo_lock.patch ];
buildInputs = [ kclvm rustc ] ++ (
@@ -1,47 +1,44 @@
{ chromaprint
, cmake
, docbook_xml_dtd_45
, docbook_xsl
, fetchurl
, ffmpeg
, flac
, id3lib
, kdePackages
, lib
, libogg
, libvorbis
, libxslt
, mp4v2
, pkg-config
, python3
, qtbase
, qtdeclarative
, qtmultimedia
, qttools
, readline
, stdenv
, taglib
, wrapQtAppsHook
, zlib
, withCLI ? true
, withKDE ? true
, withQt ? false
{
lib,
chromaprint,
cmake,
docbook_xml_dtd_45,
docbook_xsl,
fetchurl,
ffmpeg,
flac,
id3lib,
kdePackages,
libogg,
libvorbis,
libxslt,
mp4v2,
pkg-config,
python3,
qt6,
readline,
stdenv,
taglib,
zlib,
# Boolean flags
withCLI ? true,
withKDE ? true,
withQt ? false,
}:
let
inherit (lib) optionals;
inherit (qt6)
qtbase
qtdeclarative
qtmultimedia
qttools
wrapQtAppsHook
;
apps = lib.concatStringsSep ";" (
optionals withCLI [ "CLI" ]
++ optionals withKDE [ "KDE" ]
++ optionals withQt [ "Qt" ]
lib.optionals withCLI [ "CLI" ] ++ lib.optionals withKDE [ "KDE" ] ++ lib.optionals withQt [ "Qt" ]
);
mainProgram =
if withQt then "kid3-qt"
else if withKDE then "kid3"
else "kid3-cli";
in
stdenv.mkDerivation (finalAttrs: {
pname = "kid3";
@@ -62,29 +59,34 @@ stdenv.mkDerivation (finalAttrs: {
wrapQtAppsHook
];
buildInputs = [
chromaprint
ffmpeg
flac
id3lib
libogg
libvorbis
libxslt
mp4v2
qtbase
qtdeclarative
qtmultimedia
readline
taglib
zlib
] ++ lib.optionals withKDE (with kdePackages; [
kconfig
kconfigwidgets
kcoreaddons
kio
kxmlgui
phonon
]);
buildInputs =
[
chromaprint
ffmpeg
flac
id3lib
libogg
libvorbis
libxslt
mp4v2
qtbase
qtdeclarative
qtmultimedia
readline
taglib
zlib
]
++ lib.optionals withKDE (
with kdePackages;
[
kconfig
kconfigwidgets
kcoreaddons
kio
kxmlgui
phonon
]
);
cmakeFlags = [ (lib.cmakeFeature "WITH_APPS" apps) ];
@@ -95,10 +97,8 @@ stdenv.mkDerivation (finalAttrs: {
};
meta = {
description = "Simple and powerful audio tag editor";
inherit mainProgram;
homepage = "https://kid3.kde.org/";
license = lib.licenses.lgpl2Plus;
description = "Simple and powerful audio tag editor";
longDescription = ''
If you want to easily tag multiple MP3, Ogg/Vorbis, FLAC, MPC, MP4/AAC,
MP2, Opus, Speex, TrueAudio, WavPack, WMA, WAV and AIFF files (e.g. full
@@ -128,6 +128,14 @@ stdenv.mkDerivation (finalAttrs: {
- Edit synchronized lyrics and event timing codes, import and export
LRC files.
'';
license = lib.licenses.lgpl2Plus;
mainProgram =
if withQt then
"kid3-qt"
else if withKDE then
"kid3"
else
"kid3-cli";
maintainers = with lib.maintainers; [ AndersonTorres ];
platforms = lib.platforms.linux;
};
+2 -2
View File
@@ -7,7 +7,7 @@
buildGoModule rec {
pname = "litmusctl";
version = "1.10.0";
version = "1.11.0";
nativeBuildInputs = [
installShellFiles
@@ -21,7 +21,7 @@ buildGoModule rec {
owner = "litmuschaos";
repo = "litmusctl";
rev = "${version}";
hash = "sha256-0I07qgl/yyNAG19eAkZAXh7TkK3V1lnQTPXskF6k/L0=";
hash = "sha256-ByDtmKLdPSFGIPCdFlNr2yv3gnyfdjiuIuKcryvKwkY=";
};
vendorHash = "sha256-7FYOQ89aUFPX+5NCPYKg+YGCXstQ6j9DK4V2mCgklu0=";
@@ -12,7 +12,7 @@ index 4a21b94..0ac7911 100644
- ${PROJECT_SOURCE_DIR}/third_party/antlr4/runtime/Cpp/runtime/src
+ @libargs@/include
+ @catch2@/include
+ @yaml-cpp@/include
+ @yamlCpp@/include
+ @antlr4RuntimeCpp@/include/antlr4-runtime
${PROJECT_SOURCE_DIR}/src/
)
+2 -1
View File
@@ -27,7 +27,8 @@ stdenv.mkDerivation rec {
(substituteAll {
src = ./fix-lib-paths.patch;
antlr4RuntimeCpp = antlr4.runtime.cpp.dev;
inherit libargs catch2 yaml-cpp;
yamlCpp = yaml-cpp;
inherit libargs catch2;
})
];
+1 -1
View File
@@ -511,7 +511,7 @@ dependencies = [
[[package]]
name = "motoc"
version = "0.3.1"
version = "0.3.3"
dependencies = [
"anyhow",
"bindgen 0.70.1",
+2 -2
View File
@@ -8,13 +8,13 @@
rustPlatform.buildRustPackage rec {
pname = "motoc";
version = "0.3.1";
version = "0.3.3";
src = fetchFromGitHub {
owner = "galister";
repo = "motoc";
rev = "refs/tags/v${version}";
hash = "sha256-119RWsAM5kKjsxA6wGdjhB99G31QaYlZBRaFCg5TtmI=";
hash = "sha256-AmHTnCUTHoeLsOJrD35BooU9mZr5ctoCJmjW5CaTYBY=";
};
cargoLock = {
+3 -3
View File
@@ -8,17 +8,17 @@
rustPlatform.buildRustPackage rec {
pname = "mountpoint-s3";
version = "1.9.1";
version = "1.10.0";
src = fetchFromGitHub {
owner = "awslabs";
repo = "mountpoint-s3";
rev = "v${version}";
hash = "sha256-8t/gAz08jFRuF0q3bo4y8tiIq4iYgAkXf5udYNIccu0=";
hash = "sha256-sMxggPe3m1fzfcfwsr2lUECswZ7pFSAJ8b0cURwXFmw=";
fetchSubmodules = true;
};
cargoHash = "sha256-Fz7LfAn78JVip0QshoL5KMAEHMtG8bkLzz4v95/qt3E=";
cargoHash = "sha256-Gsp/AmxSobEut0jYakK0ymmSpStriAop+Abnl3GlSF4=";
# thread 'main' panicked at cargo-auditable/src/collect_audit_data.rs:77:9:
# cargo metadata failure: error: none of the selected packages contains these features: libfuse3
+14 -13
View File
@@ -1,21 +1,22 @@
{ lib
, stdenv
, fetchFromGitHub
, autoreconfHook
, flint
, gmp
, mpfr
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
flint,
gmp,
mpfr,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "msolve";
version = "0.7.2";
version = "0.7.3";
src = fetchFromGitHub {
owner = "algebraic-solving";
repo = "msolve";
rev = "v${finalAttrs.version}";
hash = "sha256-p7fD954aMApyBP58cvGrPwHEqhkxWlaiDHUlQT7kX4c=";
hash = "sha256-F4jEZ3+bA3FADiVZMDNE0T9kd1K1ZBInIaORqQtv+sY=";
};
postPatch = ''
@@ -34,13 +35,13 @@ stdenv.mkDerivation (finalAttrs: {
doCheck = true;
meta = with lib; {
meta = {
description = "Library for polynomial system solving through algebraic methods";
mainProgram = "msolve";
homepage = "https://msolve.lip6.fr";
changelog = "https://github.com/algebraic-solving/msolve/releases/tag/${finalAttrs.src.rev}";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ wegank ];
platforms = platforms.unix;
license = lib.licenses.gpl2Plus;
maintainers = with lib.maintainers; [ wegank ];
platforms = lib.platforms.unix;
};
})
+3 -3
View File
@@ -5,16 +5,16 @@
rustPlatform.buildRustPackage rec {
pname = "obs-cmd";
version = "0.17.8";
version = "0.17.9";
src = fetchFromGitHub {
owner = "grigio";
repo = "obs-cmd";
rev = "v${version}";
hash = "sha256-IOGdy3X0/r/kuEXAvLeJk2HXtcGI+vbh4Dn1/yOpkmM=";
hash = "sha256-R3zGYVa5ux3pcniuXzKwxJK/5/7YrVOrqC2H42P2fK0=";
};
cargoHash = "sha256-oCu/ygjZxEqxE+5Vca3l1mZP3hd+r+5gi2iogQMnEcU=";
cargoHash = "sha256-bFOaR48xdc4+DvlFnXCWtzqMbE1cTo7xrsf/aIBlRX0=";
meta = with lib; {
description = "Minimal CLI to control OBS Studio via obs-websocket";
+2 -2
View File
@@ -1,6 +1,6 @@
#!@runtimeShell@
@fish@/bin/fish \
@OMF@/share/oh-my-fish/bin/install \
@omf@/share/oh-my-fish/bin/install \
--noninteractive \
--offline=@OMF@/share/oh-my-fish
--offline=@omf@/share/oh-my-fish
+1 -1
View File
@@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
cp -v ${substituteAll {
name = "omf-install";
src = ./omf-install;
OMF = placeholder "out";
omf = placeholder "out";
inherit fish runtimeShell;
}} $out/bin/omf-install
+4 -4
View File
@@ -5,7 +5,6 @@
jsoncpp,
lib,
libGL,
openxr-loader,
python3,
stdenv,
unstableGitUpdater,
@@ -22,7 +21,8 @@ stdenv.mkDerivation {
owner = "znixian";
repo = "OpenOVR";
rev = "f969a972e9a151de776fa8d1bd6e67056f0a5d5d";
hash = "sha256-CE+ushwNv8kQSXtrQ6K5veBmpQvQaMKk6P9G1wV2uvM=";
fetchSubmodules = true;
hash = "sha256-3Aar7HGhn9nd/EtJoeUbQTkUR16jx946ZXMNDOXSdfQ=";
};
nativeBuildInputs = [ cmake ];
@@ -31,7 +31,6 @@ stdenv.mkDerivation {
glm
jsoncpp
libGL
openxr-loader
python3
vulkan-headers
vulkan-loader
@@ -40,7 +39,8 @@ stdenv.mkDerivation {
cmakeFlags = [
(lib.cmakeFeature "CMAKE_CXX_FLAGS" "-Wno-error=format-security")
(lib.cmakeBool "USE_SYSTEM_OPENXR" true)
# See https://gitlab.com/znixian/OpenOVR/-/issues/416
(lib.cmakeBool "USE_SYSTEM_OPENXR" false)
(lib.cmakeBool "USE_SYSTEM_GLM" true)
];
+30 -10
View File
@@ -1,20 +1,37 @@
{ lib, buildGoModule, buildNpmPackage, fetchFromGitHub, moreutils, jq, git }:
{
lib,
buildGoModule,
buildNpmPackage,
fetchFromGitHub,
moreutils,
npm-lockfile-fix,
jq,
git,
}:
let
# finalAttrs when 🥺 (buildGoModule does not support them)
# https://github.com/NixOS/nixpkgs/issues/273815
version = "1.6.1";
version = "1.7.5";
src = fetchFromGitHub {
owner = "thomiceli";
repo = "opengist";
rev = "v${version}";
hash = "sha256-rJ8oiH08kSSFNgPHKGo68Oi1i3L1SEJyHuzoxKMOZME=";
hash = "sha256-mZ4j9UWdKa3nygcRO5ceyONetkks3ZGWxvzD34eOXew=";
# follow https://github.com/thomiceli/opengist/pull/350 and remove here
postFetch = ''
${lib.getExe npm-lockfile-fix} $out/package-lock.json
'';
};
frontend = buildNpmPackage {
pname = "opengist-frontend";
inherit version src;
nativeBuildInputs = [ moreutils jq ];
nativeBuildInputs = [
moreutils
jq
];
# npm complains of "invalid package". shrug. we can give it a version.
preBuild = ''
@@ -33,15 +50,17 @@ let
cp -R public $out
'';
npmDepsHash = "sha256-Sy321tIQOOrypk+EOGGixEzrPdhA9U8Hak+DOS+d00A=";
npmDepsHash = "sha256-cITkgRvWOml6uH77WkiNgFedEuPNze63Gntet09uS5w=";
};
in
buildGoModule {
pname = "opengist";
inherit version src;
vendorHash = "sha256-IorqXJKzUTUL5zfKRipZaJtRlwVOmTwolJXFG/34Ais=";
tags = [
"fs_embed"
vendorHash = "sha256-6PpS/dsonc/akBn8NwUIVFNe2FjynAhF1TYIYT9K/ws=";
tags = [ "fs_embed" ];
ldflags = [
"-s"
"-X github.com/thomiceli/opengist/internal/config.OpengistVersion=v${version}"
];
# required for tests
@@ -62,10 +81,11 @@ buildGoModule {
meta = {
description = "Self-hosted pastebin powered by Git";
mainProgram = "opengist";
homepage = "https://github.com/thomiceli/opengist";
license = lib.licenses.agpl3Only;
maintainers = [ ];
changelog = "https://github.com/thomiceli/opengist/blob/master/CHANGELOG.md";
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ phanirithvij ];
mainProgram = "opengist";
};
}
+3 -3
View File
@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "patch2pr";
version = "0.28.0";
version = "0.29.0";
src = fetchFromGitHub {
owner = "bluekeyes";
repo = "patch2pr";
rev = "v${version}";
hash = "sha256-Pr2h5iezn//oyvuUoq5B49wEL1cUXOHhHjR3ylMXowQ=";
hash = "sha256-eWOzK08ZlNORaRRtDumxOhsQWNXxk48jxcanwhEOChY=";
};
vendorHash = "sha256-6w49XQNElSHpOamEZNpvvr67vYrZYXy2Sm7dWMh6OiU=";
vendorHash = "sha256-x2w1HYrJo0HqyGGlIaxKqy1XYj/akQm0ijbYuK7qg58=";
ldflags = [
"-X main.version=${version}"
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "pipet";
version = "0.2.2";
version = "0.3.0";
src = fetchFromGitHub {
owner = "bjesus";
repo = "pipet";
rev = version;
hash = "sha256-NhqrNehmL6LLLEOVT/s2PdQ7HtSCfoM4MST1IHVrJXE=";
hash = "sha256-pu+2sHdLz9TvYHBwvGTtFr/oAD+CreOR8io82YQANxc=";
};
vendorHash = "sha256-jNIjF5jxcpNLAjuWo7OG/Ac4l6NpQNCKzYUgdAoL+C4=";
+2 -2
View File
@@ -2,13 +2,13 @@
buildGoModule rec {
pname = "podman-tui";
version = "1.2.2";
version = "1.2.3";
src = fetchFromGitHub {
owner = "containers";
repo = "podman-tui";
rev = "v${version}";
hash = "sha256-ldFlW0QNjOvuJGyd2SzmMWA3ofS2ZW5krvCJRU83NXs=";
hash = "sha256-IINxDP0ajQdqbHTjeUeFqPbLTSCTl9gEhPxUWOe6zQs=";
};
vendorHash = null;
-3
View File
@@ -9,7 +9,6 @@
makeDesktopItem,
openjdk17,
stdenvNoCC,
swt,
webkitgtk_4_0,
wrapGAppsHook3,
gitUpdater,
@@ -29,7 +28,6 @@ let
glib-networking
gtk3
libsecret
swt
webkitgtk_4_0
];
in
@@ -56,7 +54,6 @@ stdenvNoCC.mkDerivation (finalAttrs: {
makeWrapper $out/portfolio/PortfolioPerformance $out/bin/portfolio \
--prefix LD_LIBRARY_PATH : "${runtimeLibs}" \
--prefix CLASSPATH : "${swt}/jars/swt.jar" \
--prefix PATH : ${openjdk17}/bin
# Create desktop item
@@ -6,7 +6,7 @@
buildNpmPackage rec {
pname = "prettier-plugin-go-template";
version = "0-unstable-2023-07-26";
version = "0.0.15-unstable-2023-07-26";
src = fetchFromGitHub {
owner = "NiklasPor";
@@ -17,6 +17,15 @@ buildNpmPackage rec {
npmDepsHash = "sha256-PpJnVZFRxpUHux2jIBDtyBS4qNo6IJY4kwTAq6stEVQ=";
dontNpmPrune = true;
# Fixes error: Cannot find module 'prettier'
postInstall = ''
pushd "$nodeModulesPath"
find -mindepth 1 -maxdepth 1 -type d -print0 | grep --null-data -Exv "\./(ulid|prettier)" | xargs -0 rm -rfv
popd
'';
meta = {
description = "Fixes prettier formatting for go templates";
mainProgram = "prettier-plugin-go-template";
+17 -14
View File
@@ -1,27 +1,30 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
, pkg-config
, qt6
, curl
, ffmpeg
, cubeb
{
lib,
stdenv,
fetchFromGitHub,
cmake,
pkg-config,
qt6,
curl,
ffmpeg,
cubeb,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "qcm";
version = "1.0.5";
version = "1.1.2";
src = fetchFromGitHub {
owner = "hypengw";
repo = "Qcm";
rev = "v${finalAttrs.version}";
fetchSubmodules = true;
hash = "sha256-/FOT2xK01JbJbTd5AT5Dk/5EF9qUyLvPTnw8PMtHYoQ=";
hash = "sha256-41GsG+NKCMw+LuRUf31ilRso/SkKYVV3IrMSviOZdWs=";
};
patches = [ ./remove_cubeb_vendor.patch ];
patches = [
./remove_cubeb_vendor.patch
];
nativeBuildInputs = [
cmake
@@ -32,6 +35,7 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
qt6.qtbase
qt6.qtdeclarative
qt6.qtsvg
qt6.qtwayland
curl
ffmpeg
@@ -40,8 +44,7 @@ stdenv.mkDerivation (finalAttrs: {
# Correct qml import path
postInstall = ''
mkdir $out/lib/qt-6
mv $out/lib/qml $out/lib/qt-6/qml
mv $out/lib/qt6 $out/lib/qt-6
'';
qtWrapperArgs = [
@@ -0,0 +1,28 @@
{
lib,
rustPlatform,
fetchFromGitHub,
}:
rustPlatform.buildRustPackage rec {
pname = "river-bsp-layout";
version = "2.1.0";
src = fetchFromGitHub {
owner = "areif-dev";
repo = "river-bsp-layout";
rev = "v${version}";
hash = "sha256-LRVZPAS4V5PtrqyOkKUfrZuwLqPZbLoyjn2DPxCFE2o=";
};
cargoHash = "sha256-CtVyRwfIS8R48LUecKXoak+HHB5yNZ5RgguIWOhyFA8=";
meta = {
homepage = "https://github.com/areif-dev/river-bsp-layout";
description = "Binary space partition / grid layout manager for River WM";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ areif-dev ];
mainProgram = "river-bsp-layout";
platforms = lib.platforms.linux;
};
}
+7 -4
View File
@@ -11,16 +11,16 @@
rustPlatform.buildRustPackage rec {
pname = "rustic";
version = "0.9.1";
version = "0.9.3";
src = fetchFromGitHub {
owner = "rustic-rs";
repo = "rustic";
rev = "refs/tags/v${version}";
hash = "sha256-hkkylXJOhPOC4p+MOuYCzfcmCoHmm+/8afsaPFwD1/s=";
hash = "sha256-5Zr3ZxKUT8S8vfHNaCResF+S2UcHrk5pGwJH4riTzIw=";
};
cargoHash = "sha256-Rh96vPLAxz8KCIk9y9TFB2fP0JngnM9LSsClWfgYUG0=";
cargoHash = "sha256-HOpBBXJk8bHjXfRq8UczfMjr3bM91lB62taTlUGUC+M=";
nativeBuildInputs = [ installShellFiles ];
@@ -49,6 +49,9 @@ rustPlatform.buildRustPackage rec {
lib.licenses.mit
lib.licenses.asl20
];
maintainers = [ lib.maintainers.nobbz ];
maintainers = [
lib.maintainers.nobbz
lib.maintainers.pmw
];
};
}
+2 -2
View File
@@ -7,13 +7,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "sarasa-gothic";
version = "1.0.21";
version = "1.0.22";
src = fetchurl {
# Use the 'ttc' files here for a smaller closure size.
# (Using 'ttf' files gives a closure size about 15x larger, as of November 2021.)
url = "https://github.com/be5invis/Sarasa-Gothic/releases/download/v${finalAttrs.version}/Sarasa-TTC-${finalAttrs.version}.zip";
hash = "sha256-zoTZ0JwkV6zaKHw1PegzE6NiGGVptBZgCgD8O9ZHHGc=";
hash = "sha256-356T39GotzLj4lu5KYulpFn2RmS7fZOgjz6Yy9M2T6Y=";
};
sourceRoot = ".";
+23
View File
@@ -0,0 +1,23 @@
# This file was automatically generated by passthru.fetch-deps.
# Please dont edit it manually, your changes might get overwritten!
{ fetchNuGet }: [
(fetchNuGet { pname = "Autofac"; version = "8.1.1"; hash = "sha256-///N/c/OmCa7DUVz9/hIA/rFsaJ4TMltqdrVk7Ycmq8="; })
(fetchNuGet { pname = "Newtonsoft.Json"; version = "13.0.3"; hash = "sha256-hy/BieY4qxBWVVsDqqOPaLy1QobiIapkbrESm6v2PHc="; })
(fetchNuGet { pname = "Seq.Api"; version = "2024.3.0"; hash = "sha256-OUBZ9VV7C5p/CzW0hoN3N9m1RAEGg24wNYFZgfJgk4s="; })
(fetchNuGet { pname = "Seq.Apps"; version = "2023.4.0"; hash = "sha256-PLN0KYbxH9aQkMCTOSmb16NcGD+XDooJdU4QIej1i+0="; })
(fetchNuGet { pname = "Seq.Syntax"; version = "1.0.0"; hash = "sha256-FcDdFhRE2EIgQjoTHDjKLq/Pl9mKzezL/B75pGhvk9s="; })
(fetchNuGet { pname = "Serilog"; version = "4.0.2"; hash = "sha256-vkd4s/PsKnnVzN1+f9haIP5LoxNWxnhdv3mBQYl/2Hc="; })
(fetchNuGet { pname = "Serilog.Expressions"; version = "5.0.0"; hash = "sha256-xpAT8U0pzTvRGa/qBd2M3YOQDD1xgAHCMVN9NEz0L4E="; })
(fetchNuGet { pname = "Serilog.Formatting.Compact"; version = "3.0.0"; hash = "sha256-nejEYqJEMG9P2iFZvbsCUPr5LZRtxbdUTLCI9N71jHY="; })
(fetchNuGet { pname = "Serilog.Formatting.Compact.Reader"; version = "4.0.0"; hash = "sha256-89+SaaXp9Pt8YTkTwVuMV3PzlPMg9mOHiFBKs3oHOUs="; })
(fetchNuGet { pname = "Serilog.Sinks.Console"; version = "6.0.0"; hash = "sha256-QH8ykDkLssJ99Fgl+ZBFBr+RQRl0wRTkeccQuuGLyro="; })
(fetchNuGet { pname = "Serilog.Sinks.File"; version = "5.0.0"; hash = "sha256-GKy9hwOdlu2W0Rw8LiPyEwus+sDtSOTl8a5l9uqz+SQ="; })
(fetchNuGet { pname = "Serilog.Sinks.Seq"; version = "8.0.0"; hash = "sha256-1AEtDLODwS9WBkJ2yrmjKl2Rq3q2VPs1H9bQCUhC05s="; })
(fetchNuGet { pname = "SerilogTracing"; version = "2.1.2"; hash = "sha256-fhSiUgk21s7kiz4QYF2fy9YLC1X0YHibi95x2flPqMM="; })
(fetchNuGet { pname = "Superpower"; version = "3.0.0"; hash = "sha256-5MNmhBDYyOs+sTH364Qdn+Ck328BAQaVC1KMQ7yK2Vw="; })
(fetchNuGet { pname = "System.Diagnostics.DiagnosticSource"; version = "8.0.1"; hash = "sha256-zmwHjcJgKcbkkwepH038QhcnsWMJcHys+PEbFGC0Jgo="; })
(fetchNuGet { pname = "System.Reactive"; version = "6.0.1"; hash = "sha256-Lo5UMqp8DsbVSUxa2UpClR1GoYzqQQcSxkfyFqB/d4Q="; })
(fetchNuGet { pname = "System.Security.Cryptography.ProtectedData"; version = "8.0.0"; hash = "sha256-fb0pa9sQxN+mr0vnXg1Igbx49CaOqS+GDkTfWNboUvs="; })
(fetchNuGet { pname = "Tavis.UriTemplates"; version = "2.0.0"; hash = "sha256-Rd3VH55GFiXhMDbUcnKri2jDVIA1M7CQ+6Fjdsn/PSE="; })
]
+42
View File
@@ -0,0 +1,42 @@
{
lib,
buildDotnetModule,
fetchFromGitHub,
dotnetCorePackages,
testers,
}:
buildDotnetModule (finalAttrs: {
pname = "seq-cli";
version = "2024.3.922";
src = fetchFromGitHub {
owner = "datalust";
repo = "seqcli";
rev = "v${finalAttrs.version}";
hash = "sha256-qqvuxG/QkkYjYw+p5QxLBWYHyltKDWT3JT167bEAdEI=";
};
projectFile = "src/SeqCli/SeqCli.csproj";
nugetDeps = ./deps.nix;
dotnetInstallFlags = "-f net8.0";
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.runtime_8_0;
executables = [ "seqcli" ];
passthru.tests.version = testers.testVersion {
package = finalAttrs.finalPackage;
command = "seqcli version";
};
meta = {
description = "The Seq command-line client. Administer, log, ingest, search, from any OS";
homepage = "https://github.com/datalust/seqcli";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ hausken ];
mainProgram = "seqcli";
platforms = lib.platforms.all;
};
})
+2 -2
View File
@@ -6,13 +6,13 @@
buildGoModule rec {
pname = "spacectl";
version = "1.5.0";
version = "1.6.0";
src = fetchFromGitHub {
owner = "spacelift-io";
repo = "spacectl";
rev = "v${version}";
hash = "sha256-wEu7AmFn1782XTKKb7JxQWn/ZSHrQbuZ/SDldn6pUNo=";
hash = "sha256-pO+jYuCyP6YrU9vE3//O0EyTDXYQ1WSpFI/8WbneDCA=";
};
vendorHash = "sha256-SYfXG6YM0Q2rCnoTM2tYvE17uBCD8yQiW/5DTCxMPWo=";
+3 -3
View File
@@ -5,16 +5,16 @@
}:
rustPlatform.buildRustPackage rec {
pname = "srgn";
version = "0.13.2";
version = "0.13.3";
src = fetchFromGitHub {
owner = "alexpovel";
repo = "srgn";
rev = "srgn-v${version}";
hash = "sha256-yVjxNTftrtKb/KHRZG7E3JcsCEtixhfBiHl/6zdcLMo=";
hash = "sha256-JjO4ZH4CYu2qwYfUrwTASYuxyBjObLb9ydPPbObew0g=";
};
cargoHash = "sha256-Z8y5gN4CzfllUzSMUyCc7TZKeIYVZtATnaIQIga5cAk=";
cargoHash = "sha256-/Y85FbmHfape2K8tdu/amjW8Q5Eg19HOPCE/x8qZ8uY=";
nativeBuildInputs = [ installShellFiles ];
+40
View File
@@ -0,0 +1,40 @@
{
lib,
stdenv,
fetchFromGitHub,
nix-update-script,
openssl,
autoreconfHook,
pkg-config,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "sscep";
version = "0.10.0";
src = fetchFromGitHub {
owner = "certnanny";
repo = "sscep";
rev = "v${finalAttrs.version}";
hash = "sha256-wlxQONOCLPuNdI6AyMJoLP09cs+ak7Jv9idhXTT5RWA=";
};
buildInputs = [ openssl ];
nativeBuildInputs = [
autoreconfHook
pkg-config
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Client-only implementation of the SCEP (Cisco System's Simple Certificate Enrollment Protocol)";
homepage = "https://github.com/certnanny/sscep";
maintainers = [ lib.maintainers.stv0g ];
license = [
lib.licenses.bsd2
lib.licenses.openssl
];
platforms = lib.platforms.all;
};
})
+3 -3
View File
@@ -8,16 +8,16 @@
buildGoModule rec {
pname = "stackql";
version = "0.5.742";
version = "0.5.748";
src = fetchFromGitHub {
owner = "stackql";
repo = "stackql";
rev = "v${version}";
hash = "sha256-GMc22n0y4lKv4DlG9069p/TrMJLyw0Zdiykuo41Tgys=";
hash = "sha256-3nt0hGBbS99WCRs3WnaB+0T/DS/uWROigYhXJw0fms8=";
};
vendorHash = "sha256-dssGqcS9l3VipEypKErlCeRs087Tb5Kx4VXvkErZar4=";
vendorHash = "sha256-oIpkhZHqg02qs68/ljuhNkw0BiIkY++du/pJRHXlPs0=";
ldflags = [
"-s"
-8
View File
@@ -1,8 +0,0 @@
--- a/make_linux.mak
+++ b/make_linux.mak
@@ -63,4 +63,4 @@
AWT_LFLAGS = -shared ${SWT_LFLAGS}
-AWT_LIBS = -L$(AWT_LIB_PATH) -ljawt
+AWT_LIBS = `pkg-config --libs x11` -L$(AWT_LIB_PATH) -ljawt
-14
View File
@@ -1,14 +0,0 @@
--- a/make_linux.mak
+++ b/make_linux.mak
@@ -53,9 +53,4 @@
-# Do not use pkg-config to get libs because it includes unnecessary dependencies (i.e. pangoxft-1.0)
-GTKCFLAGS = `pkg-config --cflags gtk+-$(GTK_VERSION) gtk+-unix-print-$(GTK_VERSION)`
+GTKCFLAGS = `pkg-config --cflags gtk+-$(GTK_VERSION) gthread-2.0 gtk+-unix-print-$(GTK_VERSION) x11 xtst`
+GTKLIBS = `pkg-config --libs gtk+-$(GTK_VERSION) gthread-2.0 gtk+-unix-print-$(GTK_VERSION) x11 xtst`
-ifeq ($(GTK_VERSION), 3.0)
-GTKLIBS = `pkg-config --libs-only-L gtk+-$(GTK_VERSION) gthread-2.0` $(XLIB64) -L/usr/X11R6/lib -lgtk-3 -lgdk-3 -lcairo -lgthread-2.0 -lXtst
-else
-GTKLIBS = `pkg-config --libs-only-L gtk+-$(GTK_VERSION) gthread-2.0` $(XLIB64) -L/usr/X11R6/lib -lgtk-x11-$(GTK_VERSION) -lgthread-2.0 -lXtst
-endif
+33 -76
View File
@@ -1,13 +1,9 @@
{
atk,
fetchzip,
gtk2,
gtk3,
jdk,
lib,
libGL,
libGLU,
libXt,
libXtst,
pkg-config,
stdenv,
stripJavaArchivesHook,
@@ -15,18 +11,16 @@
stdenv.mkDerivation (finalAttrs: {
pname = "swt";
version = "4.5";
fullVersion = "${finalAttrs.version}-201506032000";
version = "4.33";
fullVersion = "${finalAttrs.version}-202409030240";
hardeningDisable = [ "format" ];
passthru.srcMetadataByPlatform = {
x86_64-linux.platform = "gtk-linux-x86_64";
x86_64-linux.hash = "sha256-JhzRCrVzsM2NBf65l6CDZdgchlbECHGUg0J0bQVT2Z0=";
i686-linux.platform = "gtk-linux-x86";
i686-linux.hash = "sha256-C7H1CUFkl7GPpqDFSzYnlLWa1XcawI2hbtsn9fIJio0=";
x86_64-linux.hash = "sha256-0OUr+jpwTx5/eoA6Uo2E9/SBAtf+IMMiSVRhOfaWFhE=";
x86_64-darwin.platform = "cocoa-macosx-x86_64";
x86_64-darwin.hash = "sha256-CrSFkrlnSP2uQzRrRzv8F0lXEA7TNK9RFe2neDjtXnI=";
x86_64-darwin.hash = "sha256-n948C/YPF55WPYvub3re/wARLP1Wk+XhJiIuI0YQH5c=";
};
passthru.srcMetadata =
finalAttrs.passthru.srcMetadataByPlatform.${stdenv.hostPlatform.system} or null;
@@ -56,84 +50,41 @@ stdenv.mkDerivation (finalAttrs: {
};
nativeBuildInputs = [
jdk
stripJavaArchivesHook
pkg-config
];
buildInputs = [
atk
gtk2
jdk
libGL
gtk3
libGLU
libXtst
] ++ lib.optionals (lib.hasPrefix "8u" jdk.version) [ libXt ];
patches = [
./awt-libs.patch
./gtk-libs.patch
];
prePatch = ''
# clear whitespace from makefiles (since we match on EOL later)
sed -i 's/ \+$//' ./*.mak
SWT_JAVA_HOME = jdk;
AWT_LIB_PATH = "${jdk}/lib/openjdk/lib";
# Used by the makefile which is responsible for the shared objects only
OUTPUT_DIR = "${placeholder "out"}/lib";
# GTK4 is not supported yet. Waiting for:
# https://github.com/eclipse-platform/eclipse.platform.swt/pull/1482
makeFlags = "gtk3";
preBuild = ''
cd library
mkdir -p ${finalAttrs.OUTPUT_DIR}
'';
postPatch =
let
makefile-sed = builtins.toFile "swt-makefile.sed" ''
# fix pkg-config invocations in CFLAGS/LIBS pairs.
#
# change:
# FOOCFLAGS = `pkg-config --cflags `foo bar`
# FOOLIBS = `pkg-config --libs-only-L foo` -lbaz
# into:
# FOOCFLAGS = `pkg-config --cflags foo bar`
# FOOLIBS = `pkg-config --libs foo bar`
#
# the latter works more consistently.
/^[A-Z0-9_]\+CFLAGS = `pkg-config --cflags [^`]\+`$/ {
N
s/${''
^\([A-Z0-9_]\+\)CFLAGS = `pkg-config --cflags \(.\+\)`\
\1LIBS = `pkg-config --libs-only-L .\+$''}/${''
\1CFLAGS = `pkg-config --cflags \2`\
\1LIBS = `pkg-config --libs \2`''}/
}
# fix WebKit libs not being there
s/\$(WEBKIT_LIB) \$(WEBKIT_OBJECTS)$/\0 `pkg-config --libs glib-2.0`/g
'';
in
''
declare -a makefiles=(./*.mak)
sed -i -f ${makefile-sed} "''${makefiles[@]}"
# assign Makefile variables eagerly & change backticks to `$(shell …)`
sed -i -e 's/ = `\([^`]\+\)`/ := $(shell \1)/' \
-e 's/`\([^`]\+\)`/$(shell \1)/' \
"''${makefiles[@]}"
'';
buildPhase = ''
runHook preBuild
export JAVA_HOME=${jdk}
./build.sh
# Build the jar
postBuild = ''
cd ../
mkdir out
find org/ -name '*.java' -type f -exec javac -d out/ {} +
runHook postBuild
find org/ -name '*.java' -type f -exec javac -encoding utf8 -d out/ {} +
# Copy non Java resource files
find org/ -not -name '*.java' -not -name '*.html' -type f -exec cp {} out/{} \;
'';
# The makefile doesn't have an install target, the installation of the shared
# objects is part of the `all` target.
installPhase = ''
runHook preInstall
if [[ -n "$prefix" ]]; then
install -d -- "$prefix"
fi
install -Dm 644 -t "$out/lib" -- *.so
install -d -- "$out/jars"
install -m 644 -t out -- version.txt
(cd out && jar -c *) > "$out/jars/swt.jar"
@@ -147,8 +98,14 @@ stdenv.mkDerivation (finalAttrs: {
A widget toolkit for Java to access the user-interface facilities of
the operating systems on which it is implemented.
'';
license = lib.licenses.epl10;
license = with lib.licenses; [
# All of these are located in the about_files directory of the source
ijg
lgpl21
mpl11
mpl20
];
maintainers = [ ];
platforms = lib.platforms.linux;
platforms = lib.attrNames finalAttrs.passthru.srcMetadataByPlatform;
};
})
File diff suppressed because it is too large Load Diff
+9 -4
View File
@@ -2,19 +2,24 @@
rustPlatform.buildRustPackage rec {
pname = "system76-power";
version = "1.1.23";
version = "1.2.1";
src = fetchFromGitHub {
owner = "pop-os";
repo = "system76-power";
rev = version;
sha256 = "sha256-RuYDG4eZE599oa04xUR+W5B3/IPOpQUss1x7hzoydUQ=";
sha256 = "sha256-kYDrSfpOuRigDX792w3hATXoxX6PWpYWXkxw9Q28P5s=";
};
nativeBuildInputs = [ pkg-config ];
buildInputs = [ dbus libusb1 ];
cargoHash = "sha256-Vps02ZRVmeOQ8jDFZJYAUb502MhqY+2YV2W1/9XGY+0=";
cargoLock = {
lockFile = ./Cargo.lock;
outputHashes = {
"sysfs-class-0.1.3" = "sha256-ztfwfCRAkxUd/LLNG5fpVuFdgX+tCKL3F35qYJ2GDm8=";
};
};
postInstall = ''
install -D -m 0644 data/com.system76.PowerDaemon.conf $out/etc/dbus-1/system.d/com.system76.PowerDaemon.conf
@@ -28,6 +33,6 @@ rustPlatform.buildRustPackage rec {
homepage = "https://github.com/pop-os/system76-power";
license = licenses.gpl3Plus;
platforms = [ "i686-linux" "x86_64-linux" ];
maintainers = [ ];
maintainers = [ maintainers.smonson ];
};
}
@@ -0,0 +1,136 @@
{
lib,
stdenv,
fetchFromGitHub,
cargo,
cmake,
ninja,
pkg-config,
rustPlatform,
rustc,
curl,
freetype,
libGLU,
libnotify,
libogg,
libX11,
opusfile,
pcre,
python3,
SDL2,
sqlite,
wavpack,
ffmpeg,
x264,
vulkan-headers,
vulkan-loader,
glslang,
spirv-tools,
gtest,
darwin,
}:
let
clientExecutable = "TaterClient-DDNet";
in
stdenv.mkDerivation (finalAttrs: {
pname = "taterclient-ddnet";
version = "8.6.0";
src = fetchFromGitHub {
owner = "sjrc6";
repo = "taterclient-ddnet";
rev = finalAttrs.version;
hash = "sha256-IfTQRMC2wcEH+KhlADHVIhfavlTN4mfTtlN5+/KojA0=";
};
cargoDeps = rustPlatform.fetchCargoTarball {
inherit (finalAttrs) pname src version;
hash = "sha256-L6NsLC5hg4/MlTfnOITBNoPIoKxlDx5BwXWnV7W4uT0=";
};
nativeBuildInputs = [
cmake
ninja
pkg-config
rustc
cargo
rustPlatform.cargoSetupHook
];
nativeCheckInputs = [ gtest ];
buildInputs =
[
curl
libnotify
pcre
python3
sqlite
freetype
libGLU
libogg
opusfile
SDL2
wavpack
ffmpeg
x264
vulkan-loader
vulkan-headers
glslang
spirv-tools
]
++ lib.optionals stdenv.hostPlatform.isLinux [ libX11 ]
++ lib.optionals stdenv.hostPlatform.isDarwin (
with darwin.apple_sdk.frameworks;
[
Carbon
Cocoa
OpenGL
Security
]
);
postPatch = ''
substituteInPlace src/engine/shared/storage.cpp \
--replace-fail /usr/ $out/
'';
cmakeFlags = [
"-DAUTOUPDATE=OFF"
"-DCLIENT=ON"
"-DSERVER=OFF"
"-DTOOLS=OFF"
"-DCLIENT_EXECUTABLE=${clientExecutable}"
];
# Tests loop forever on Darwin for some reason
doCheck = !stdenv.hostPlatform.isDarwin;
checkTarget = "run_tests";
preFixup = lib.optionalString stdenv.hostPlatform.isDarwin ''
# Upstream links against <prefix>/lib while it installs this library in <prefix>/lib/ddnet
install_name_tool -change "$out/lib/libsteam_api.dylib" "$out/lib/ddnet/libsteam_api.dylib" "$out/bin/${clientExecutable}"
'';
postInstall = ''
# Desktop application conflicts with the ddnet package
mv "$out/share/applications/ddnet.desktop" "$out/share/applications/taterclient-ddnet.desktop"
substituteInPlace $out/share/applications/taterclient-ddnet.desktop \
--replace-fail "Exec=DDNet" "Exec=${clientExecutable}" \
--replace-fail "Name=DDNet" "Name=TaterClient (DDNet)" \
--replace-fail "Comment=Launch DDNet" "Comment=Launch ${clientExecutable}"
'';
meta = {
description = "Modification of DDNet teeworlds client";
homepage = "https://github.com/sjrc6/taterclient-ddnet";
changelog = "https://github.com/sjrc6/taterclient-ddnet/releases";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
melon
theobori
];
mainProgram = clientExecutable;
};
})
+69
View File
@@ -0,0 +1,69 @@
{
lib,
stdenv,
fetchurl,
swt,
jre,
makeWrapper,
alsa-lib,
jack2,
fluidsynth,
libpulseaudio,
lilv,
nixosTests,
}:
stdenv.mkDerivation (finalAttrs: {
version = "1.6.4";
pname = "tuxguitar";
src = fetchurl {
url = "https://github.com/helge17/tuxguitar/releases/download/${finalAttrs.version}/tuxguitar-${finalAttrs.version}-linux-swt-amd64.tar.gz";
hash = "sha256-FD1+7jV69E9AfTczjD6DOGD+pPlscg4o8A9ADBUM9B4=";
};
nativeBuildInputs = [
makeWrapper
];
installPhase = ''
mkdir -p $out/bin
cp -r dist lib share $out/
cp tuxguitar.sh $out/bin/tuxguitar
ln -s $out/dist $out/bin/dist
ln -s $out/lib $out/bin/lib
ln -s $out/share $out/bin/share
wrapProgram $out/bin/tuxguitar \
--set JAVA "${jre}/bin/java" \
--prefix LD_LIBRARY_PATH : "$out/lib/:${
lib.makeLibraryPath [
swt
alsa-lib
jack2
fluidsynth
libpulseaudio
lilv
]
}" \
--prefix CLASSPATH : "${swt}/jars/swt.jar:$out/lib/tuxguitar.jar:$out/lib/itext.jar"
'';
passthru.tests = {
nixos = nixosTests.tuxguitar;
};
meta = {
description = "Multitrack guitar tablature editor";
longDescription = ''
TuxGuitar is a multitrack guitar tablature editor and player written
in Java-SWT. It can open GuitarPro, PowerTab and TablEdit files.
'';
homepage = "http://www.tuxguitar.com.ar/";
sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
license = lib.licenses.lgpl2;
maintainers = with lib.maintainers; [ ardumont ];
platforms = [ "x86_64-linux" ];
};
})
+106
View File
@@ -0,0 +1,106 @@
{
stdenv,
lib,
testers,
fetchurl,
pkg-config,
makeWrapper,
autoreconfHook,
bash-completion,
OVMF,
qemu,
ocamlPackages,
perl,
cpio,
getopt,
libosinfo,
pcre2,
libxml2,
jansson,
glib,
libguestfs-with-appliance,
cdrkit,
nbdkit,
withWindowsGuestSupport ? true,
pkgsCross, # for rsrvany
virtio-win,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "virt-v2v";
version = "2.6.0";
src = fetchurl {
url = "https://download.libguestfs.org/virt-v2v/${lib.versions.majorMinor finalAttrs.version}-stable/virt-v2v-${finalAttrs.version}.tar.gz";
sha256 = "sha256-W7t/n1QO9UebyH85abtnSY5i7kH/6h8JIAlFQoD1vkU=";
};
postPatch = ''
substituteInPlace common/mlv2v/uefi.ml \
--replace-fail '/usr/share/OVMF/OVMF_CODE.fd' "${OVMF.firmware}" \
--replace-fail '/usr/share/OVMF/OVMF_VARS.fd' "${OVMF.variables}"
patchShebangs .
'';
nativeBuildInputs =
[
pkg-config
autoreconfHook
makeWrapper
bash-completion
perl
libguestfs-with-appliance
qemu
cpio
cdrkit
getopt
]
++ (with ocamlPackages; [
ocaml
findlib
]);
buildInputs =
[
libosinfo
pcre2
libxml2
jansson
glib
]
++ (with ocamlPackages; [
ocaml_libvirt
nbd
]);
postInstall =
''
for bin in $out/bin/*; do
wrapProgram "$bin" \
--prefix PATH : "$out/bin:${
lib.makeBinPath [
nbdkit
qemu
]
}"
done
''
+ lib.optionalString withWindowsGuestSupport ''
ln -s "${virtio-win}" $out/share/virtio-win
ln -s "${pkgsCross.mingwW64.rhsrvany}/bin/" $out/share/virt-tools
'';
PKG_CONFIG_BASH_COMPLETION_COMPLETIONSDIR = "${placeholder "out"}/share/bash-completion/completions";
passthru.tests.version = testers.testVersion { package = finalAttrs.finalPackage; };
meta = {
homepage = "https://github.com/libguestfs/virt-v2v";
description = "Convert guests from foreign hypervisors to run on KVM";
license = lib.licenses.gpl2Only;
maintainers = with lib.maintainers; [ lukts30 ];
platforms = lib.platforms.linux;
mainProgram = "virt-v2v";
};
})
@@ -1,17 +1,23 @@
{ lib
, stdenv
, cmake
, fetchFromGitHub
, pkg-config
, qtbase
, qtscript
, qtsvg
, substituteAll
, unzip
, wrapQtAppsHook
, zip
{
lib,
cmake,
fetchFromGitHub,
pkg-config,
qt5,
stdenv,
substituteAll,
unzip,
zip,
}:
let
inherit (qt5)
qtbase
qtscript
qtsvg
wrapQtAppsHook
;
in
stdenv.mkDerivation (finalAttrs: {
pname = "vym";
version = "2.9.26";
@@ -23,13 +29,16 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-5cHhv9GDjJvSqGJ+7fI0xaWCiXw/0WP0Bem/ZRV8Y7M=";
};
outputs = [ "out" "man" ];
outputs = [
"out"
"man"
];
patches = [
(substituteAll {
src = ./000-fix-zip-paths.diff;
zipPath = "${zip}/bin/zip";
unzipPath = "${unzip}/bin/unzip";
src = ./patches/0000-fix-zip-paths.diff;
zipPath = "${lib.getExe zip}";
unzipPath = "${lib.getExe unzip}";
})
];
@@ -45,16 +54,20 @@ stdenv.mkDerivation (finalAttrs: {
qtsvg
];
strictDeps = true;
qtWrapperArgs = [
"--prefix PATH : ${lib.makeBinPath [ unzip zip ]}"
"--prefix PATH : ${
lib.makeBinPath [
unzip
zip
]
}"
];
strictDeps = true;
meta = {
homepage = "http://www.insilmaril.de/vym/";
description = "Mind-mapping software";
mainProgram = "vym";
longDescription = ''
VYM (View Your Mind) is a tool to generate and manipulate maps which show
your thoughts. Such maps can help you to improve your creativity and
@@ -67,6 +80,7 @@ stdenv.mkDerivation (finalAttrs: {
work with such maps.
'';
license = with lib.licenses; [ gpl2Plus ];
mainProgram = "vym";
maintainers = with lib.maintainers; [ AndersonTorres ];
platforms = lib.platforms.linux;
};
+6 -6
View File
@@ -1,14 +1,14 @@
{
"darwin": {
"hash": "sha256-5SAOjGlMD9Lt+z6NjtIbZM7ES2xw8PBudG10lD4DnVk=",
"version": "0.2024.10.15.08.02.stable_02"
"hash": "sha256-6cPn6ukGPpEdzCcENGUT5h+UPSo8rrEZEjeLEHJTG/4=",
"version": "0.2024.10.15.08.02.stable_03"
},
"linux_x86_64": {
"hash": "sha256-i5YWruFxbKNC0PxeUCb3uhWpcr0ukiQFdPuJBzwLwR0=",
"version": "0.2024.10.15.08.02.stable_02"
"hash": "sha256-ftTBelAaGWxrOlpDGtEeNT9GjtS4XZdvzUsWxEnrGzs=",
"version": "0.2024.10.15.08.02.stable_03"
},
"linux_aarch64": {
"hash": "sha256-hnn7DGPKi0wDtpY4HYJxgO5TbkSAZVmaPfB0S2oTJ2E=",
"version": "0.2024.10.15.08.02.stable_02"
"hash": "sha256-y7oSCc+bsRj7BSF8MiYpNJ73M5xBBTIRhotHdRPsfqk=",
"version": "0.2024.10.15.08.02.stable_03"
}
}
+3
View File
@@ -5,6 +5,7 @@
pkg-config,
fetchFromGitHub,
wayland,
gitUpdater,
}:
rustPlatform.buildRustPackage rec {
pname = "waycorner";
@@ -30,6 +31,8 @@ rustPlatform.buildRustPackage rec {
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ wayland ]}
'';
passthru.updateScript = gitUpdater { };
meta = {
description = "Hot corners for Wayland";
mainProgram = "waycorner";

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