Merge branch master into haskell-updates
This commit is contained in:
@@ -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];}`
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
)
|
||||
]);
|
||||
})
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
'';
|
||||
})
|
||||
|
||||
]);
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
@@ -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 {};
|
||||
|
||||
@@ -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'")
|
||||
'';
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
""
|
||||
+45
-18
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
+8
-8
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
@@ -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=";
|
||||
|
||||
@@ -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"
|
||||
];
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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 ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 */
|
||||
+
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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/
|
||||
)
|
||||
|
||||
@@ -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;
|
||||
})
|
||||
];
|
||||
|
||||
|
||||
Generated
+1
-1
@@ -511,7 +511,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "motoc"
|
||||
version = "0.3.1"
|
||||
version = "0.3.3"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"bindgen 0.70.1",
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
];
|
||||
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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,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;
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
@@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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 = ".";
|
||||
|
||||
Generated
+23
@@ -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="; })
|
||||
]
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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=";
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
})
|
||||
|
||||
+1774
File diff suppressed because it is too large
Load Diff
@@ -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;
|
||||
};
|
||||
})
|
||||
@@ -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" ];
|
||||
};
|
||||
})
|
||||
@@ -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;
|
||||
};
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user