Merge master into staging-next
This commit is contained in:
@@ -429,6 +429,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- `k3s` can now be configured with an EnvironmentFile for its systemd service, allowing secrets to be provided without ending up in the Nix Store.
|
||||
|
||||
- `gitea` module options have been changed to be RFC042 conforming (i.e. some options were moved to be located under `services.gitea.settings`)
|
||||
|
||||
- `boot.initrd.luks.device.<name>` has a new `tryEmptyPassphrase` option, this is useful for OEM's who need to install an encrypted disk with a future settable passphrase
|
||||
|
||||
- Lisp gained a [manual section](https://nixos.org/manual/nixpkgs/stable/#lisp), documenting a new and backwards incompatible interface. The previous interface will be removed in a future release.
|
||||
|
||||
@@ -10,10 +10,7 @@ let
|
||||
check = x: (lib.types.package.check x) && (attrByPath ["meta" "isIbusEngine"] false x);
|
||||
};
|
||||
|
||||
impanel =
|
||||
if cfg.panel != null
|
||||
then "--panel=${cfg.panel}"
|
||||
else "";
|
||||
impanel = optionalString (cfg.panel != null) "--panel=${cfg.panel}";
|
||||
|
||||
ibusAutostart = pkgs.writeTextFile {
|
||||
name = "autostart-ibus-daemon";
|
||||
|
||||
@@ -22,8 +22,8 @@ let
|
||||
(option: ''
|
||||
menuentry '${defaults.name} ${
|
||||
# Name appended to menuentry defaults to params if no specific name given.
|
||||
option.name or (if option ? params then "(${option.params})" else "")
|
||||
}' ${if option ? class then " --class ${option.class}" else ""} {
|
||||
option.name or (optionalString (option ? params) "(${option.params})")
|
||||
}' ${optionalString (option ? class) " --class ${option.class}"} {
|
||||
linux ${defaults.image} \''${isoboot} ${defaults.params} ${
|
||||
option.params or ""
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ let
|
||||
${concatStringsSep "\n"
|
||||
(mapAttrsToList (command: action: "${command} ${action}") cfg.commands)
|
||||
}
|
||||
${if cfg.clearDefaultCommands then "#stop" else ""}
|
||||
${optionalString cfg.clearDefaultCommands "#stop"}
|
||||
|
||||
#line-edit
|
||||
${concatStringsSep "\n"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkOption mkIf types;
|
||||
inherit (lib) mkOption mkIf types optionalString;
|
||||
|
||||
cfg = config.programs.tmux;
|
||||
|
||||
@@ -17,17 +17,17 @@ let
|
||||
set -g base-index ${toString cfg.baseIndex}
|
||||
setw -g pane-base-index ${toString cfg.baseIndex}
|
||||
|
||||
${if cfg.newSession then "new-session" else ""}
|
||||
${optionalString cfg.newSession "new-session"}
|
||||
|
||||
${if cfg.reverseSplit then ''
|
||||
${optionalString cfg.reverseSplit ''
|
||||
bind v split-window -h
|
||||
bind s split-window -v
|
||||
'' else ""}
|
||||
''}
|
||||
|
||||
set -g status-keys ${cfg.keyMode}
|
||||
set -g mode-keys ${cfg.keyMode}
|
||||
|
||||
${if cfg.keyMode == "vi" && cfg.customPaneNavigationAndResize then ''
|
||||
${optionalString (cfg.keyMode == "vi" && cfg.customPaneNavigationAndResize) ''
|
||||
bind h select-pane -L
|
||||
bind j select-pane -D
|
||||
bind k select-pane -U
|
||||
@@ -37,15 +37,15 @@ let
|
||||
bind -r J resize-pane -D ${toString cfg.resizeAmount}
|
||||
bind -r K resize-pane -U ${toString cfg.resizeAmount}
|
||||
bind -r L resize-pane -R ${toString cfg.resizeAmount}
|
||||
'' else ""}
|
||||
''}
|
||||
|
||||
${if (cfg.shortcut != defaultShortcut) then ''
|
||||
${optionalString (cfg.shortcut != defaultShortcut) ''
|
||||
# rebind main key: C-${cfg.shortcut}
|
||||
unbind C-${defaultShortcut}
|
||||
set -g prefix C-${cfg.shortcut}
|
||||
bind ${cfg.shortcut} send-prefix
|
||||
bind C-${cfg.shortcut} last-window
|
||||
'' else ""}
|
||||
''}
|
||||
|
||||
setw -g aggressive-resize ${boolToStr cfg.aggressiveResize}
|
||||
setw -g clock-mode-style ${if cfg.clock24 then "24" else "12"}
|
||||
|
||||
@@ -781,11 +781,11 @@ in {
|
||||
|
||||
# FIXME Most of these custom warnings and filters for security.acme.certs.* are required
|
||||
# because using mkRemovedOptionModule/mkChangedOptionModule with attrsets isn't possible.
|
||||
warnings = filter (w: w != "") (mapAttrsToList (cert: data: if data.extraDomains != "_mkMergedOptionModule" then ''
|
||||
warnings = filter (w: w != "") (mapAttrsToList (cert: data: optionalString (data.extraDomains != "_mkMergedOptionModule") ''
|
||||
The option definition `security.acme.certs.${cert}.extraDomains` has changed
|
||||
to `security.acme.certs.${cert}.extraDomainNames` and is now a list of strings.
|
||||
Setting a custom webroot for extra domains is not possible, instead use separate certs.
|
||||
'' else "") cfg.certs);
|
||||
'') cfg.certs);
|
||||
|
||||
assertions = let
|
||||
certs = attrValues cfg.certs;
|
||||
|
||||
@@ -275,9 +275,9 @@ in {
|
||||
|
||||
warnings =
|
||||
# https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85
|
||||
filter (w: w != "") (mapAttrsToList (k: v: if v.type == "spotify" then ''
|
||||
filter (w: w != "") (mapAttrsToList (k: v: optionalString (v.type == "spotify") ''
|
||||
services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead.
|
||||
'' else "") cfg.streams);
|
||||
'') cfg.streams);
|
||||
|
||||
systemd.services.snapserver = {
|
||||
after = [ "network.target" ];
|
||||
|
||||
@@ -20,7 +20,7 @@ let
|
||||
'';
|
||||
backupDatabaseScript = db: ''
|
||||
dest="${cfg.location}/${db}.gz"
|
||||
if ${mariadb}/bin/mysqldump ${if cfg.singleTransaction then "--single-transaction" else ""} ${db} | ${gzip}/bin/gzip -c > $dest.tmp; then
|
||||
if ${mariadb}/bin/mysqldump ${optionalString cfg.singleTransaction "--single-transaction"} ${db} | ${gzip}/bin/gzip -c > $dest.tmp; then
|
||||
mv $dest.tmp $dest
|
||||
echo "Backed up to $dest"
|
||||
else
|
||||
|
||||
@@ -300,7 +300,7 @@ in
|
||||
filesFromTmpFile = "/run/restic-backups-${name}/includes";
|
||||
backupPaths =
|
||||
if (backup.dynamicFilesFrom == null)
|
||||
then if (backup.paths != null) then concatStringsSep " " backup.paths else ""
|
||||
then optionalString (backup.paths != null) (concatStringsSep " " backup.paths)
|
||||
else "--files-from ${filesFromTmpFile}";
|
||||
pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [
|
||||
(resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts))
|
||||
|
||||
@@ -196,9 +196,9 @@ in
|
||||
--gcmode ${cfg.gcmode} \
|
||||
--port ${toString cfg.port} \
|
||||
--maxpeers ${toString cfg.maxpeers} \
|
||||
${if cfg.http.enable then ''--http --http.addr ${cfg.http.address} --http.port ${toString cfg.http.port}'' else ""} \
|
||||
${optionalString cfg.http.enable ''--http --http.addr ${cfg.http.address} --http.port ${toString cfg.http.port}''} \
|
||||
${optionalString (cfg.http.apis != null) ''--http.api ${lib.concatStringsSep "," cfg.http.apis}''} \
|
||||
${if cfg.websocket.enable then ''--ws --ws.addr ${cfg.websocket.address} --ws.port ${toString cfg.websocket.port}'' else ""} \
|
||||
${optionalString cfg.websocket.enable ''--ws --ws.addr ${cfg.websocket.address} --ws.port ${toString cfg.websocket.port}''} \
|
||||
${optionalString (cfg.websocket.apis != null) ''--ws.api ${lib.concatStringsSep "," cfg.websocket.apis}''} \
|
||||
${optionalString cfg.metrics.enable ''--metrics --metrics.addr ${cfg.metrics.address} --metrics.port ${toString cfg.metrics.port}''} \
|
||||
--authrpc.addr ${cfg.authrpc.address} --authrpc.port ${toString cfg.authrpc.port} --authrpc.vhosts ${lib.concatStringsSep "," cfg.authrpc.vhosts} \
|
||||
|
||||
@@ -242,7 +242,7 @@ in {
|
||||
jobdir="${jenkinsCfg.home}/$jenkinsjobname"
|
||||
rm -rf "$jobdir"
|
||||
done
|
||||
'' + (if cfg.accessUser != "" then reloadScript else "");
|
||||
'' + (optionalString (cfg.accessUser != "") reloadScript);
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = jenkinsCfg.user;
|
||||
|
||||
@@ -4,7 +4,7 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.minetest-server;
|
||||
flag = val: name: if val != null then "--${name} ${toString val} " else "";
|
||||
flag = val: name: optionalString (val != null) "--${name} ${toString val} ";
|
||||
flags = [
|
||||
(flag cfg.gameId "gameid")
|
||||
(flag cfg.world "world")
|
||||
|
||||
@@ -83,9 +83,8 @@ let
|
||||
};
|
||||
|
||||
mailOption =
|
||||
if foldr (n: a: a || (n.mail or false) != false) false (attrValues cfg.settings)
|
||||
then "--mail=${pkgs.mailutils}/bin/mail"
|
||||
else "";
|
||||
optionalString (foldr (n: a: a || (n.mail or false) != false) false (attrValues cfg.settings))
|
||||
"--mail=${pkgs.mailutils}/bin/mail";
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
|
||||
@@ -7,7 +7,7 @@ let
|
||||
cfg = config.services.syslogd;
|
||||
|
||||
syslogConf = pkgs.writeText "syslog.conf" ''
|
||||
${if (cfg.tty != "") then "kern.warning;*.err;authpriv.none /dev/${cfg.tty}" else ""}
|
||||
${optionalString (cfg.tty != "") "kern.warning;*.err;authpriv.none /dev/${cfg.tty}"}
|
||||
${cfg.defaultConfig}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
@@ -234,7 +234,7 @@ let
|
||||
|
||||
headerChecks = concatStringsSep "\n" (map (x: "${x.pattern} ${x.action}") cfg.headerChecks) + cfg.extraHeaderChecks;
|
||||
|
||||
aliases = let separator = if cfg.aliasMapType == "hash" then ":" else ""; in
|
||||
aliases = let separator = optionalString (cfg.aliasMapType == "hash") ":"; in
|
||||
optionalString (cfg.postmasterAlias != "") ''
|
||||
postmaster${separator} ${cfg.postmasterAlias}
|
||||
''
|
||||
|
||||
@@ -10,7 +10,7 @@ let
|
||||
Connection = ${cfg.device.connection}
|
||||
SynchronizeTime = ${if cfg.device.synchronizeTime then "yes" else "no"}
|
||||
LogFormat = ${cfg.log.format}
|
||||
${if (cfg.device.pin != null) then "PIN = ${cfg.device.pin}" else ""}
|
||||
${optionalString (cfg.device.pin != null) "PIN = ${cfg.device.pin}"}
|
||||
${cfg.extraConfig.gammu}
|
||||
|
||||
|
||||
@@ -33,10 +33,10 @@ let
|
||||
${optionalString (cfg.backend.service == "sql" && cfg.backend.sql.driver == "native_pgsql") (
|
||||
with cfg.backend; ''
|
||||
Driver = ${sql.driver}
|
||||
${if (sql.database!= null) then "Database = ${sql.database}" else ""}
|
||||
${if (sql.host != null) then "Host = ${sql.host}" else ""}
|
||||
${if (sql.user != null) then "User = ${sql.user}" else ""}
|
||||
${if (sql.password != null) then "Password = ${sql.password}" else ""}
|
||||
${optionalString (sql.database!= null) "Database = ${sql.database}"}
|
||||
${optionalString (sql.host != null) "Host = ${sql.host}"}
|
||||
${optionalString (sql.user != null) "User = ${sql.user}"}
|
||||
${optionalString (sql.password != null) "Password = ${sql.password}"}
|
||||
'')}
|
||||
|
||||
${cfg.extraConfig.smsd}
|
||||
|
||||
@@ -26,9 +26,18 @@ in
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "gitea" "cookieSecure" ] [ "services" "gitea" "settings" "session" "COOKIE_SECURE" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "disableRegistration" ] [ "services" "gitea" "settings" "service" "DISABLE_REGISTRATION" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "domain" ] [ "services" "gitea" "settings" "server" "DOMAIN" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "httpAddress" ] [ "services" "gitea" "settings" "server" "HTTP_ADDR" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "httpPort" ] [ "services" "gitea" "settings" "server" "HTTP_PORT" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "log" "level" ] [ "services" "gitea" "settings" "log" "LEVEL" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "log" "rootPath" ] [ "services" "gitea" "settings" "log" "ROOT_PATH" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "rootUrl" ] [ "services" "gitea" "settings" "server" "ROOT_URL" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "ssh" "clonePort" ] [ "services" "gitea" "settings" "server" "SSH_PORT" ])
|
||||
(mkRenamedOptionModule [ "services" "gitea" "staticRootPath" ] [ "services" "gitea" "settings" "server" "STATIC_ROOT_PATH" ])
|
||||
|
||||
(mkChangedOptionModule [ "services" "gitea" "enableUnixSocket" ] [ "services" "gitea" "settings" "server" "PROTOCOL" ] (
|
||||
config: if config.services.gitea.enableUnixSocket then "http+unix" else "http"
|
||||
))
|
||||
|
||||
(mkRemovedOptionModule [ "services" "gitea" "ssh" "enable" ] "services.gitea.ssh.enable has been migrated into freeform setting services.gitea.settings.server.DISABLE_SSH. Keep in mind that the setting is inverted")
|
||||
];
|
||||
@@ -57,7 +66,14 @@ in
|
||||
stateDir = mkOption {
|
||||
default = "/var/lib/gitea";
|
||||
type = types.str;
|
||||
description = lib.mdDoc "gitea data directory.";
|
||||
description = lib.mdDoc "Gitea data directory.";
|
||||
};
|
||||
|
||||
customDir = mkOption {
|
||||
default = "${cfg.stateDir}/custom";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/custom"'';
|
||||
type = types.str;
|
||||
description = lib.mdDoc "Gitea custom directory. Used for config, custom templates and other options.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
@@ -66,6 +82,12 @@ in
|
||||
description = lib.mdDoc "User account under which gitea runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "gitea";
|
||||
description = lib.mdDoc "Group under which gitea runs.";
|
||||
};
|
||||
|
||||
database = {
|
||||
type = mkOption {
|
||||
type = types.enum [ "sqlite3" "mysql" "postgres" ];
|
||||
@@ -216,44 +238,6 @@ in
|
||||
description = lib.mdDoc "Path to the git repositories.";
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = lib.mdDoc "Domain name of your server.";
|
||||
};
|
||||
|
||||
rootUrl = mkOption {
|
||||
type = types.str;
|
||||
default = "http://localhost:3000/";
|
||||
description = lib.mdDoc "Full public URL of gitea server.";
|
||||
};
|
||||
|
||||
httpAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "0.0.0.0";
|
||||
description = lib.mdDoc "HTTP listen address.";
|
||||
};
|
||||
|
||||
httpPort = mkOption {
|
||||
type = types.port;
|
||||
default = 3000;
|
||||
description = lib.mdDoc "HTTP listen port.";
|
||||
};
|
||||
|
||||
enableUnixSocket = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = lib.mdDoc "Configure Gitea to listen on a unix socket instead of the default TCP port.";
|
||||
};
|
||||
|
||||
staticRootPath = mkOption {
|
||||
type = types.either types.str types.path;
|
||||
default = cfg.package.data;
|
||||
defaultText = literalExpression "package.data";
|
||||
example = "/var/lib/gitea/data";
|
||||
description = lib.mdDoc "Upper level of template and static files path.";
|
||||
};
|
||||
|
||||
mailerPasswordFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
@@ -285,7 +269,7 @@ in
|
||||
};
|
||||
}
|
||||
'';
|
||||
type = with types; submodule {
|
||||
type = types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
log = {
|
||||
@@ -303,6 +287,46 @@ in
|
||||
};
|
||||
|
||||
server = {
|
||||
PROTOCOL = mkOption {
|
||||
type = types.enum [ "http" "https" "fcgi" "http+unix" "fcgi+unix" ];
|
||||
default = "http";
|
||||
description = lib.mdDoc ''Listen protocol. `+unix` means "over unix", not "in addition to."'';
|
||||
};
|
||||
|
||||
HTTP_ADDR = mkOption {
|
||||
type = types.either types.str types.path;
|
||||
default = if lib.hasSuffix "+unix" cfg.settings.server.PROTOCOL then "/run/gitea/gitea.sock" else "0.0.0.0";
|
||||
defaultText = literalExpression ''if lib.hasSuffix "+unix" cfg.settings.server.PROTOCOL then "/run/gitea/gitea.sock" else "0.0.0.0"'';
|
||||
description = lib.mdDoc "Listen address. Must be a path when using a unix socket.";
|
||||
};
|
||||
|
||||
HTTP_PORT = mkOption {
|
||||
type = types.port;
|
||||
default = 3000;
|
||||
description = lib.mdDoc "Listen port. Ignored when using a unix socket.";
|
||||
};
|
||||
|
||||
DOMAIN = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = lib.mdDoc "Domain name of your server.";
|
||||
};
|
||||
|
||||
ROOT_URL = mkOption {
|
||||
type = types.str;
|
||||
default = "http://${cfg.settings.server.DOMAIN}:${toString cfg.settings.server.HTTP_PORT}/";
|
||||
defaultText = literalExpression ''"http://''${config.services.gitea.settings.server.DOMAIN}:''${toString config.services.gitea.settings.server.HTTP_PORT}/"'';
|
||||
description = lib.mdDoc "Full public URL of gitea server.";
|
||||
};
|
||||
|
||||
STATIC_ROOT_PATH = mkOption {
|
||||
type = types.either types.str types.path;
|
||||
default = cfg.package.data;
|
||||
defaultText = literalExpression "config.${opt.package}.data";
|
||||
example = "/var/lib/gitea/data";
|
||||
description = lib.mdDoc "Upper level of template and static files path.";
|
||||
};
|
||||
|
||||
DISABLE_SSH = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@@ -359,7 +383,7 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{ assertion = cfg.database.createDatabase -> cfg.database.user == cfg.user;
|
||||
{ assertion = cfg.database.createDatabase -> useSqlite || cfg.database.user == cfg.user;
|
||||
message = "services.gitea.database.user must match services.gitea.user if the database is to be automatically provisioned";
|
||||
}
|
||||
];
|
||||
@@ -389,26 +413,10 @@ in
|
||||
ROOT = cfg.repositoryRoot;
|
||||
};
|
||||
|
||||
server = mkMerge [
|
||||
{
|
||||
DOMAIN = cfg.domain;
|
||||
STATIC_ROOT_PATH = toString cfg.staticRootPath;
|
||||
LFS_JWT_SECRET = "#lfsjwtsecret#";
|
||||
ROOT_URL = cfg.rootUrl;
|
||||
}
|
||||
(mkIf cfg.enableUnixSocket {
|
||||
PROTOCOL = "http+unix";
|
||||
HTTP_ADDR = "/run/gitea/gitea.sock";
|
||||
})
|
||||
(mkIf (!cfg.enableUnixSocket) {
|
||||
HTTP_ADDR = cfg.httpAddress;
|
||||
HTTP_PORT = cfg.httpPort;
|
||||
})
|
||||
(mkIf cfg.lfs.enable {
|
||||
LFS_START_SERVER = true;
|
||||
})
|
||||
|
||||
];
|
||||
server = mkIf cfg.lfs.enable {
|
||||
LFS_START_SERVER = true;
|
||||
LFS_JWT_SECRET = "#lfsjwtsecret#";
|
||||
};
|
||||
|
||||
session = {
|
||||
COOKIE_NAME = lib.mkDefault "session";
|
||||
@@ -428,7 +436,7 @@ in
|
||||
JWT_SECRET = "#oauth2jwtsecret#";
|
||||
};
|
||||
|
||||
lfs = mkIf (cfg.lfs.enable) {
|
||||
lfs = mkIf cfg.lfs.enable {
|
||||
PATH = cfg.lfs.contentDir;
|
||||
};
|
||||
};
|
||||
@@ -457,33 +465,35 @@ in
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.dump.backupDir}' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.dump.backupDir}' 0750 ${cfg.user} gitea - -"
|
||||
"Z '${cfg.dump.backupDir}' - ${cfg.user} gitea - -"
|
||||
"d '${cfg.lfs.contentDir}' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.lfs.contentDir}' 0750 ${cfg.user} gitea - -"
|
||||
"Z '${cfg.lfs.contentDir}' - ${cfg.user} gitea - -"
|
||||
"d '${cfg.repositoryRoot}' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.repositoryRoot}' 0750 ${cfg.user} gitea - -"
|
||||
"Z '${cfg.repositoryRoot}' - ${cfg.user} gitea - -"
|
||||
"d '${cfg.stateDir}' 0750 ${cfg.user} gitea - -"
|
||||
"d '${cfg.stateDir}/conf' 0750 ${cfg.user} gitea - -"
|
||||
"d '${cfg.stateDir}/custom' 0750 ${cfg.user} gitea - -"
|
||||
"d '${cfg.stateDir}/custom/conf' 0750 ${cfg.user} gitea - -"
|
||||
"d '${cfg.stateDir}/data' 0750 ${cfg.user} gitea - -"
|
||||
"d '${cfg.stateDir}/log' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}/.ssh' 0700 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}/conf' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}/custom' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}/custom/conf' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}/data' 0750 ${cfg.user} gitea - -"
|
||||
"z '${cfg.stateDir}/log' 0750 ${cfg.user} gitea - -"
|
||||
"Z '${cfg.stateDir}' - ${cfg.user} gitea - -"
|
||||
"d '${cfg.dump.backupDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.dump.backupDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"Z '${cfg.dump.backupDir}' - ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.repositoryRoot}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.repositoryRoot}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"Z '${cfg.repositoryRoot}' - ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.customDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.customDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}/data' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}/log' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/.ssh' 0700 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.customDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.customDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/data' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/log' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"Z '${cfg.stateDir}' - ${cfg.user} ${cfg.group} - -"
|
||||
|
||||
# If we have a folder or symlink with gitea locales, remove it
|
||||
# And symlink the current gitea locales in place
|
||||
"L+ '${cfg.stateDir}/conf/locale' - - - - ${cfg.package.out}/locale"
|
||||
|
||||
] ++ lib.optionals cfg.lfs.enable [
|
||||
"d '${cfg.lfs.contentDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.lfs.contentDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"Z '${cfg.lfs.contentDir}' - ${cfg.user} ${cfg.group} - -"
|
||||
];
|
||||
|
||||
systemd.services.gitea = {
|
||||
@@ -500,47 +510,52 @@ in
|
||||
# lfs_jwt_secret.
|
||||
# We have to consider this to stay compatible with older installations.
|
||||
preStart = let
|
||||
runConfig = "${cfg.stateDir}/custom/conf/app.ini";
|
||||
secretKey = "${cfg.stateDir}/custom/conf/secret_key";
|
||||
oauth2JwtSecret = "${cfg.stateDir}/custom/conf/oauth2_jwt_secret";
|
||||
oldLfsJwtSecret = "${cfg.stateDir}/custom/conf/jwt_secret"; # old file for LFS_JWT_SECRET
|
||||
lfsJwtSecret = "${cfg.stateDir}/custom/conf/lfs_jwt_secret"; # new file for LFS_JWT_SECRET
|
||||
internalToken = "${cfg.stateDir}/custom/conf/internal_token";
|
||||
runConfig = "${cfg.customDir}/conf/app.ini";
|
||||
secretKey = "${cfg.customDir}/conf/secret_key";
|
||||
oauth2JwtSecret = "${cfg.customDir}/conf/oauth2_jwt_secret";
|
||||
oldLfsJwtSecret = "${cfg.customDir}/conf/jwt_secret"; # old file for LFS_JWT_SECRET
|
||||
lfsJwtSecret = "${cfg.customDir}/conf/lfs_jwt_secret"; # new file for LFS_JWT_SECRET
|
||||
internalToken = "${cfg.customDir}/conf/internal_token";
|
||||
replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
|
||||
in ''
|
||||
# copy custom configuration and generate a random secret key if needed
|
||||
# copy custom configuration and generate random secrets if needed
|
||||
${optionalString (!cfg.useWizard) ''
|
||||
function gitea_setup {
|
||||
cp -f ${configFile} ${runConfig}
|
||||
cp -f '${configFile}' '${runConfig}'
|
||||
|
||||
if [ ! -s ${secretKey} ]; then
|
||||
${exe} generate secret SECRET_KEY > ${secretKey}
|
||||
if [ ! -s '${secretKey}' ]; then
|
||||
${exe} generate secret SECRET_KEY > '${secretKey}'
|
||||
fi
|
||||
|
||||
# Migrate LFS_JWT_SECRET filename
|
||||
if [[ -s ${oldLfsJwtSecret} && ! -s ${lfsJwtSecret} ]]; then
|
||||
mv ${oldLfsJwtSecret} ${lfsJwtSecret}
|
||||
if [[ -s '${oldLfsJwtSecret}' && ! -s '${lfsJwtSecret}' ]]; then
|
||||
mv '${oldLfsJwtSecret}' '${lfsJwtSecret}'
|
||||
fi
|
||||
|
||||
if [ ! -s ${oauth2JwtSecret} ]; then
|
||||
${exe} generate secret JWT_SECRET > ${oauth2JwtSecret}
|
||||
if [ ! -s '${oauth2JwtSecret}' ]; then
|
||||
${exe} generate secret JWT_SECRET > '${oauth2JwtSecret}'
|
||||
fi
|
||||
|
||||
if [ ! -s ${lfsJwtSecret} ]; then
|
||||
${exe} generate secret LFS_JWT_SECRET > ${lfsJwtSecret}
|
||||
${lib.optionalString cfg.lfs.enable ''
|
||||
if [ ! -s '${lfsJwtSecret}' ]; then
|
||||
${exe} generate secret LFS_JWT_SECRET > '${lfsJwtSecret}'
|
||||
fi
|
||||
''}
|
||||
|
||||
if [ ! -s ${internalToken} ]; then
|
||||
${exe} generate secret INTERNAL_TOKEN > ${internalToken}
|
||||
if [ ! -s '${internalToken}' ]; then
|
||||
${exe} generate secret INTERNAL_TOKEN > '${internalToken}'
|
||||
fi
|
||||
|
||||
chmod u+w '${runConfig}'
|
||||
${replaceSecretBin} '#secretkey#' '${secretKey}' '${runConfig}'
|
||||
${replaceSecretBin} '#dbpass#' '${cfg.database.passwordFile}' '${runConfig}'
|
||||
${replaceSecretBin} '#oauth2jwtsecret#' '${oauth2JwtSecret}' '${runConfig}'
|
||||
${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'
|
||||
${replaceSecretBin} '#internaltoken#' '${internalToken}' '${runConfig}'
|
||||
|
||||
${lib.optionalString cfg.lfs.enable ''
|
||||
${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'"
|
||||
''}
|
||||
|
||||
${lib.optionalString (cfg.mailerPasswordFile != null) ''
|
||||
${replaceSecretBin} '#mailerpass#' '${cfg.mailerPasswordFile}' '${runConfig}'
|
||||
''}
|
||||
@@ -565,7 +580,7 @@ in
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = cfg.user;
|
||||
Group = "gitea";
|
||||
Group = cfg.group;
|
||||
WorkingDirectory = cfg.stateDir;
|
||||
ExecStart = "${exe} web --pid /run/gitea/gitea.pid";
|
||||
Restart = "always";
|
||||
@@ -573,7 +588,7 @@ in
|
||||
RuntimeDirectory = "gitea";
|
||||
RuntimeDirectoryMode = "0755";
|
||||
# Access write directories
|
||||
ReadWritePaths = [ cfg.dump.backupDir cfg.repositoryRoot cfg.stateDir cfg.lfs.contentDir ];
|
||||
ReadWritePaths = [ cfg.customDir cfg.dump.backupDir cfg.repositoryRoot cfg.stateDir cfg.lfs.contentDir ];
|
||||
UMask = "0027";
|
||||
# Capabilities
|
||||
CapabilityBoundingSet = "";
|
||||
@@ -606,6 +621,7 @@ in
|
||||
USER = cfg.user;
|
||||
HOME = cfg.stateDir;
|
||||
GITEA_WORK_DIR = cfg.stateDir;
|
||||
GITEA_CUSTOM = cfg.customDir;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -614,12 +630,14 @@ in
|
||||
description = "Gitea Service";
|
||||
home = cfg.stateDir;
|
||||
useDefaultShell = true;
|
||||
group = "gitea";
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups.gitea = {};
|
||||
users.groups = mkIf (cfg.group == "gitea") {
|
||||
gitea = {};
|
||||
};
|
||||
|
||||
warnings =
|
||||
optional (cfg.database.password != "") "config.services.gitea.database.password will be stored as plaintext in the Nix store. Use database.passwordFile instead." ++
|
||||
|
||||
@@ -1215,7 +1215,7 @@ in {
|
||||
enableDelete = true; # This must be true, otherwise GitLab won't manage it correctly
|
||||
extraConfig = {
|
||||
auth.token = {
|
||||
realm = "http${if cfg.https == true then "s" else ""}://${cfg.host}/jwt/auth";
|
||||
realm = "http${optionalString (cfg.https == true) "s"}://${cfg.host}/jwt/auth";
|
||||
service = cfg.registry.serviceName;
|
||||
issuer = cfg.registry.issuer;
|
||||
rootcertbundle = cfg.registry.certFile;
|
||||
|
||||
@@ -3,7 +3,7 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.mbpfan;
|
||||
verbose = if cfg.verbose then "v" else "";
|
||||
verbose = optionalString cfg.verbose "v";
|
||||
settingsFormat = pkgs.formats.ini {};
|
||||
settingsFile = settingsFormat.generate "mbpfan.ini" cfg.settings;
|
||||
|
||||
|
||||
@@ -283,13 +283,13 @@ in
|
||||
|
||||
services.redmine.settings = {
|
||||
production = {
|
||||
scm_subversion_command = if cfg.components.subversion then "${pkgs.subversion}/bin/svn" else "";
|
||||
scm_mercurial_command = if cfg.components.mercurial then "${pkgs.mercurial}/bin/hg" else "";
|
||||
scm_git_command = if cfg.components.git then "${pkgs.git}/bin/git" else "";
|
||||
scm_cvs_command = if cfg.components.cvs then "${pkgs.cvs}/bin/cvs" else "";
|
||||
scm_bazaar_command = if cfg.components.breezy then "${pkgs.breezy}/bin/bzr" else "";
|
||||
imagemagick_convert_command = if cfg.components.imagemagick then "${pkgs.imagemagick}/bin/convert" else "";
|
||||
gs_command = if cfg.components.ghostscript then "${pkgs.ghostscript}/bin/gs" else "";
|
||||
scm_subversion_command = optionalString cfg.components.subversion "${pkgs.subversion}/bin/svn";
|
||||
scm_mercurial_command = optionalString cfg.components.mercurial "${pkgs.mercurial}/bin/hg";
|
||||
scm_git_command = optionalString cfg.components.git "${pkgs.git}/bin/git";
|
||||
scm_cvs_command = optionalString cfg.components.cvs "${pkgs.cvs}/bin/cvs";
|
||||
scm_bazaar_command = optionalString cfg.components.breezy "${pkgs.breezy}/bin/bzr";
|
||||
imagemagick_convert_command = optionalString cfg.components.imagemagick "${pkgs.imagemagick}/bin/convert";
|
||||
gs_command = optionalString cfg.components.ghostscript "${pkgs.ghostscript}/bin/gs";
|
||||
minimagick_font_path = "${cfg.components.minimagick_font_path}";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -20,7 +20,7 @@ let
|
||||
${optionalString (cfg.hostsAllowReg != []) "hosts_allow_reg = ${concatStringsSep "," cfg.hostsAllowReg}"}
|
||||
${optionalString (cfg.hostsAllowSip != []) "hosts_allow_sip = ${concatStringsSep "," cfg.hostsAllowSip}"}
|
||||
${optionalString (cfg.hostsDenySip != []) "hosts_deny_sip = ${concatStringsSep "," cfg.hostsDenySip}"}
|
||||
${if (cfg.passwordFile != "") then "proxy_auth_pwfile = ${cfg.passwordFile}" else ""}
|
||||
${optionalString (cfg.passwordFile != "") "proxy_auth_pwfile = ${cfg.passwordFile}"}
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
|
||||
@@ -58,10 +58,10 @@ in
|
||||
};
|
||||
};
|
||||
serviceOpts = let
|
||||
collectSettingsArgs = if (cfg.collectdBinary.enable) then ''
|
||||
collectSettingsArgs = optionalString (cfg.collectdBinary.enable) ''
|
||||
--collectd.listen-address ${cfg.collectdBinary.listenAddress}:${toString cfg.collectdBinary.port} \
|
||||
--collectd.security-level ${cfg.collectdBinary.securityLevel} \
|
||||
'' else "";
|
||||
'';
|
||||
in {
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
{ config, lib, ...}:
|
||||
|
||||
let
|
||||
inherit (lib) concatStringsSep mkOption types;
|
||||
inherit (lib) concatStringsSep mkOption types optionalString;
|
||||
|
||||
in {
|
||||
|
||||
mkCellServDB = cellName: db: ''
|
||||
>${cellName}
|
||||
'' + (concatStringsSep "\n" (map (dbm: if (dbm.ip != "" && dbm.dnsname != "") then dbm.ip + " #" + dbm.dnsname else "")
|
||||
'' + (concatStringsSep "\n" (map (dbm: optionalString (dbm.ip != "" && dbm.dnsname != "") "${dbm.ip} #${dbm.dnsname}")
|
||||
db))
|
||||
+ "\n";
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ let
|
||||
ttl ${toString proxy.ttl}
|
||||
${render proxy.rules (ruleNetworkName: rule: ''
|
||||
rule ${prefer rule.network ruleNetworkName} {
|
||||
${rule.method}${if rule.method == "iface" then " ${rule.interface}" else ""}
|
||||
${rule.method}${optionalString (rule.method == "iface") " ${rule.interface}"}
|
||||
}'')}
|
||||
}'')}
|
||||
'');
|
||||
|
||||
@@ -86,7 +86,7 @@ in
|
||||
|
||||
redis.createInstance = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = if versionAtLeast config.system.stateVersion "22.05" then "ntopng" else "";
|
||||
default = optionalString (versionAtLeast config.system.stateVersion "22.05") "ntopng";
|
||||
description = lib.mdDoc ''
|
||||
Local Redis instance name. Set to `null` to disable
|
||||
local Redis instance. Defaults to `""` for
|
||||
|
||||
@@ -169,11 +169,11 @@ in
|
||||
else (concatStrings (map (i: "--interface=\"${i}\"")
|
||||
interfaces))} \
|
||||
-h "${hostKey}" \
|
||||
${if !syslog then "--no-syslog" else ""} \
|
||||
${optionalString (!syslog) "--no-syslog" } \
|
||||
${if passwordAuthentication then "--password" else "--no-password" } \
|
||||
${if publicKeyAuthentication then "--publickey" else "--no-publickey" } \
|
||||
${if rootLogin then "--root-login" else "--no-root-login" } \
|
||||
${if loginShell != null then "--login-shell=\"${loginShell}\"" else "" } \
|
||||
${optionalString (loginShell != null) "--login-shell=\"${loginShell}\"" } \
|
||||
${if srpKeyExchange then "--srp-keyexchange" else "--no-srp-keyexchange" } \
|
||||
${if !tcpForwarding then "--no-tcpip-forward" else "--tcpip-forward"} \
|
||||
${if x11Forwarding then "--x11-forward" else "--no-x11-forward" } \
|
||||
|
||||
@@ -474,10 +474,10 @@ in
|
||||
mkdir -m 0755 -p "$(dirname '${k.path}')"
|
||||
ssh-keygen \
|
||||
-t "${k.type}" \
|
||||
${if k ? bits then "-b ${toString k.bits}" else ""} \
|
||||
${if k ? rounds then "-a ${toString k.rounds}" else ""} \
|
||||
${if k ? comment then "-C '${k.comment}'" else ""} \
|
||||
${if k ? openSSHFormat && k.openSSHFormat then "-o" else ""} \
|
||||
${optionalString (k ? bits) "-b ${toString k.bits}"} \
|
||||
${optionalString (k ? rounds) "-a ${toString k.rounds}"} \
|
||||
${optionalString (k ? comment) "-C '${k.comment}'"} \
|
||||
${optionalString (k ? openSSHFormat && k.openSSHFormat) "-o"} \
|
||||
-f "${k.path}" \
|
||||
-N ""
|
||||
fi
|
||||
@@ -550,7 +550,7 @@ in
|
||||
'') cfg.ports}
|
||||
|
||||
${concatMapStrings ({ port, addr, ... }: ''
|
||||
ListenAddress ${addr}${if port != null then ":" + toString port else ""}
|
||||
ListenAddress ${addr}${optionalString (port != null) (":" + toString port)}
|
||||
'') cfg.listenAddresses}
|
||||
|
||||
${optionalString cfgc.setXAuthLocation ''
|
||||
|
||||
@@ -4,7 +4,7 @@ let
|
||||
|
||||
inherit (builtins) toFile;
|
||||
inherit (lib) concatMapStringsSep concatStringsSep mapAttrsToList
|
||||
mkIf mkEnableOption mkOption types literalExpression;
|
||||
mkIf mkEnableOption mkOption types literalExpression optionalString;
|
||||
|
||||
cfg = config.services.strongswan;
|
||||
|
||||
@@ -34,8 +34,8 @@ let
|
||||
|
||||
strongswanConf = {setup, connections, ca, secretsFile, managePlugins, enabledPlugins}: toFile "strongswan.conf" ''
|
||||
charon {
|
||||
${if managePlugins then "load_modular = no" else ""}
|
||||
${if managePlugins then ("load = " + (concatStringsSep " " enabledPlugins)) else ""}
|
||||
${optionalString managePlugins "load_modular = no"}
|
||||
${optionalString managePlugins ("load = " + (concatStringsSep " " enabledPlugins))}
|
||||
plugins {
|
||||
stroke {
|
||||
secrets_file = ${secretsFile}
|
||||
|
||||
@@ -154,8 +154,8 @@ in
|
||||
environment.systemPackages = [ pkgs.stunnel ];
|
||||
|
||||
environment.etc."stunnel.cfg".text = ''
|
||||
${ if cfg.user != null then "setuid = ${cfg.user}" else "" }
|
||||
${ if cfg.group != null then "setgid = ${cfg.group}" else "" }
|
||||
${ optionalString (cfg.user != null) "setuid = ${cfg.user}" }
|
||||
${ optionalString (cfg.group != null) "setgid = ${cfg.group}" }
|
||||
|
||||
debug = ${cfg.logLevel}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ let
|
||||
${optionalString srv.unlisted "type = UNLISTED"}
|
||||
${optionalString (srv.flags != "") "flags = ${srv.flags}"}
|
||||
socket_type = ${if srv.protocol == "udp" then "dgram" else "stream"}
|
||||
${if srv.port != 0 then "port = ${toString srv.port}" else ""}
|
||||
${optionalString (srv.port != 0) "port = ${toString srv.port}"}
|
||||
wait = ${if srv.protocol == "udp" then "yes" else "no"}
|
||||
user = ${srv.user}
|
||||
server = ${srv.server}
|
||||
|
||||
@@ -209,6 +209,20 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
extraSettings = mkOption {
|
||||
type = with types; attrsOf (oneOf [ bool ints.positive str ]);
|
||||
default = {};
|
||||
description = lib.mdDoc ''
|
||||
Extra default configuration for all jails (i.e. `[DEFAULT]`). See
|
||||
<https://github.com/fail2ban/fail2ban/blob/master/config/jail.conf> for an overview.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
findtime = "15m";
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
jails = mkOption {
|
||||
default = { };
|
||||
example = literalExpression ''
|
||||
@@ -335,6 +349,10 @@ in
|
||||
# Actions
|
||||
banaction = ${cfg.banaction}
|
||||
banaction_allports = ${cfg.banaction-allports}
|
||||
${optionalString (cfg.extraSettings != {}) ''
|
||||
# Extra settings
|
||||
${generators.toKeyValue {} cfg.extraSettings}
|
||||
''}
|
||||
'';
|
||||
# Block SSH if there are too many failing connection attempts.
|
||||
# Benefits from verbose sshd logging to observe failed login attempts,
|
||||
|
||||
@@ -72,15 +72,14 @@ let
|
||||
} // (getProviderOptions cfg cfg.provider) // cfg.extraConfig;
|
||||
|
||||
mapConfig = key: attr:
|
||||
if attr != null && attr != [] then (
|
||||
optionalString (attr != null && attr != []) (
|
||||
if isDerivation attr then mapConfig key (toString attr) else
|
||||
if (builtins.typeOf attr) == "set" then concatStringsSep " "
|
||||
(mapAttrsToList (name: value: mapConfig (key + "-" + name) value) attr) else
|
||||
if (builtins.typeOf attr) == "list" then concatMapStringsSep " " (mapConfig key) attr else
|
||||
if (builtins.typeOf attr) == "bool" then "--${key}=${boolToString attr}" else
|
||||
if (builtins.typeOf attr) == "string" then "--${key}='${attr}'" else
|
||||
"--${key}=${toString attr}")
|
||||
else "";
|
||||
"--${key}=${toString attr}");
|
||||
|
||||
configString = concatStringsSep " " (mapAttrsToList mapConfig allConfig);
|
||||
in
|
||||
|
||||
@@ -72,7 +72,7 @@ in {
|
||||
EnvironmentFile = cfg.credentialsFile;
|
||||
ExecStart = ''
|
||||
${cfg.package}/bin/cachix ${lib.optionalString cfg.verbose "--verbose"} ${lib.optionalString (cfg.host != null) "--host ${cfg.host}"} \
|
||||
deploy agent ${cfg.name} ${if cfg.profile != null then cfg.profile else ""}
|
||||
deploy agent ${cfg.name} ${optionalString (cfg.profile != null) cfg.profile}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@@ -1025,8 +1025,8 @@ in
|
||||
|
||||
services.postfix = lib.mkIf cfg.mail.incoming.enable {
|
||||
enable = true;
|
||||
sslCert = if cfg.sslCertificate != null then cfg.sslCertificate else "";
|
||||
sslKey = if cfg.sslCertificateKey != null then cfg.sslCertificateKey else "";
|
||||
sslCert = lib.optionalString (cfg.sslCertificate != null) cfg.sslCertificate;
|
||||
sslKey = lib.optionalString (cfg.sslCertificateKey != null) cfg.sslCertificateKey;
|
||||
|
||||
origin = cfg.hostname;
|
||||
relayDomains = [ cfg.hostname ];
|
||||
|
||||
@@ -54,7 +54,7 @@ in {
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.fcgiwrap}/sbin/fcgiwrap -c ${builtins.toString cfg.preforkProcesses} ${
|
||||
if (cfg.socketType != "unix") then "-s ${cfg.socketType}:${cfg.socketAddress}" else ""
|
||||
optionalString (cfg.socketType != "unix") "-s ${cfg.socketType}:${cfg.socketAddress}"
|
||||
}";
|
||||
} // (if cfg.user != null && cfg.group != null then {
|
||||
User = cfg.user;
|
||||
|
||||
@@ -64,7 +64,7 @@ let
|
||||
];
|
||||
|
||||
maybeModuleString = moduleName:
|
||||
if elem moduleName cfg.enableModules then ''"${moduleName}"'' else "";
|
||||
optionalString (elem moduleName cfg.enableModules) ''"${moduleName}"'';
|
||||
|
||||
modulesIncludeString = concatStringsSep ",\n"
|
||||
(filter (x: x != "") (map maybeModuleString allKnownModules));
|
||||
@@ -106,15 +106,15 @@ let
|
||||
static-file.exclude-extensions = ( ".fcgi", ".php", ".rb", "~", ".inc" )
|
||||
index-file.names = ( "index.html" )
|
||||
|
||||
${if cfg.mod_userdir then ''
|
||||
${optionalString cfg.mod_userdir ''
|
||||
userdir.path = "public_html"
|
||||
'' else ""}
|
||||
''}
|
||||
|
||||
${if cfg.mod_status then ''
|
||||
${optionalString cfg.mod_status ''
|
||||
status.status-url = "/server-status"
|
||||
status.statistics-url = "/server-statistics"
|
||||
status.config-url = "/server-config"
|
||||
'' else ""}
|
||||
''}
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
@@ -318,7 +318,7 @@ let
|
||||
|
||||
listenString = { addr, port, ssl, extraParameters ? [], ... }:
|
||||
# UDP listener for QUIC transport protocol.
|
||||
(if ssl && vhost.quic then "
|
||||
(optionalString (ssl && vhost.quic) "
|
||||
listen ${addr}:${toString port} quic "
|
||||
+ optionalString vhost.default "default_server "
|
||||
+ optionalString vhost.reuseport "reuseport "
|
||||
@@ -326,7 +326,7 @@ let
|
||||
let inCompatibleParameters = [ "ssl" "proxy_protocol" "http2" ];
|
||||
isCompatibleParameter = param: !(any (p: p == param) inCompatibleParameters);
|
||||
in filter isCompatibleParameter extraParameters))
|
||||
+ ";" else "")
|
||||
+ ";")
|
||||
+ "
|
||||
|
||||
listen ${addr}:${toString port} "
|
||||
|
||||
@@ -234,11 +234,11 @@ in
|
||||
ln -sfn ${tomcat}/conf/$i ${cfg.baseDir}/conf/`basename $i`
|
||||
done
|
||||
|
||||
${if cfg.extraConfigFiles != [] then ''
|
||||
${optionalString (cfg.extraConfigFiles != []) ''
|
||||
for i in ${toString cfg.extraConfigFiles}; do
|
||||
ln -sfn $i ${cfg.baseDir}/conf/`basename $i`
|
||||
done
|
||||
'' else ""}
|
||||
''}
|
||||
|
||||
# Create a modified catalina.properties file
|
||||
# Change all references from CATALINA_HOME to CATALINA_BASE and add support for shared libraries
|
||||
@@ -345,7 +345,7 @@ in
|
||||
|
||||
# Symlink all the given web applications files or paths into the webapps/ directory
|
||||
# of this virtual host
|
||||
for i in "${if virtualHost ? webapps then toString virtualHost.webapps else ""}"; do
|
||||
for i in "${optionalString (virtualHost ? webapps) (toString virtualHost.webapps)}"; do
|
||||
if [ -f $i ]; then
|
||||
# If the given web application is a file, symlink it into the webapps/ directory
|
||||
ln -sfn $i ${cfg.baseDir}/virtualhosts/${virtualHost.name}/webapps/`basename $i`
|
||||
|
||||
@@ -33,7 +33,7 @@ let
|
||||
then realGrub.override { efiSupport = cfg.efiSupport; }
|
||||
else null;
|
||||
|
||||
f = x: if x == null then "" else "" + x;
|
||||
f = x: optionalString (x != null) ("" + x);
|
||||
|
||||
grubConfig = args:
|
||||
let
|
||||
@@ -52,7 +52,7 @@ let
|
||||
fullName = lib.getName realGrub;
|
||||
fullVersion = lib.getVersion realGrub;
|
||||
grubEfi = f grubEfi;
|
||||
grubTargetEfi = if cfg.efiSupport && (cfg.version == 2) then f (grubEfi.grubTarget or "") else "";
|
||||
grubTargetEfi = optionalString (cfg.efiSupport && (cfg.version == 2)) (f (grubEfi.grubTarget or ""));
|
||||
bootPath = args.path;
|
||||
storePath = config.boot.loader.grub.storePath;
|
||||
bootloaderId = if args.efiBootloaderId == null then "${config.system.nixos.distroName}${efiSysMountPoint'}" else args.efiBootloaderId;
|
||||
|
||||
@@ -20,7 +20,7 @@ let
|
||||
|
||||
nix = config.nix.package.out;
|
||||
|
||||
timeout = if config.boot.loader.timeout != null then config.boot.loader.timeout else "";
|
||||
timeout = optionalString (config.boot.loader.timeout != null) config.boot.loader.timeout;
|
||||
|
||||
editor = if cfg.editor then "True" else "False";
|
||||
|
||||
@@ -32,9 +32,9 @@ let
|
||||
|
||||
inherit (config.system.nixos) distroName;
|
||||
|
||||
memtest86 = if cfg.memtest86.enable then pkgs.memtest86-efi else "";
|
||||
memtest86 = optionalString cfg.memtest86.enable pkgs.memtest86-efi;
|
||||
|
||||
netbootxyz = if cfg.netbootxyz.enable then pkgs.netbootxyz-efi else "";
|
||||
netbootxyz = optionalString cfg.netbootxyz.enable pkgs.netbootxyz-efi;
|
||||
|
||||
copyExtraFiles = pkgs.writeShellScript "copy-extra-files" ''
|
||||
empty_file=$(${pkgs.coreutils}/bin/mktemp)
|
||||
|
||||
@@ -1024,13 +1024,12 @@ in
|
||||
copy_bin_and_libs ${pkgs.gnupg}/libexec/scdaemon
|
||||
|
||||
${concatMapStringsSep "\n" (x:
|
||||
if x.gpgCard != null then
|
||||
optionalString (x.gpgCard != null)
|
||||
''
|
||||
mkdir -p $out/secrets/gpg-keys/${x.device}
|
||||
cp -a ${x.gpgCard.encryptedPass} $out/secrets/gpg-keys/${x.device}/cryptkey.gpg
|
||||
cp -a ${x.gpgCard.publicKey} $out/secrets/gpg-keys/${x.device}/pubkey.asc
|
||||
''
|
||||
else ""
|
||||
) (attrValues luks.devices)
|
||||
}
|
||||
''}
|
||||
|
||||
@@ -319,7 +319,7 @@ in
|
||||
message = let
|
||||
fs = head (filter notAutoResizable fileSystems);
|
||||
in
|
||||
"Mountpoint '${fs.mountPoint}': 'autoResize = true' is not supported for 'fsType = \"${fs.fsType}\"':${if fs.fsType == "auto" then " fsType has to be explicitly set and" else ""} only the ext filesystems and f2fs support it.";
|
||||
"Mountpoint '${fs.mountPoint}': 'autoResize = true' is not supported for 'fsType = \"${fs.fsType}\"':${optionalString (fs.fsType == "auto") " fsType has to be explicitly set and"} only the ext filesystems and f2fs support it.";
|
||||
}
|
||||
];
|
||||
|
||||
|
||||
@@ -170,11 +170,11 @@ let
|
||||
--setenv HOST_PORT="$HOST_PORT" \
|
||||
--setenv PATH="$PATH" \
|
||||
${optionalString cfg.ephemeral "--ephemeral"} \
|
||||
${if cfg.additionalCapabilities != null && cfg.additionalCapabilities != [] then
|
||||
''--capability="${concatStringsSep "," cfg.additionalCapabilities}"'' else ""
|
||||
${optionalString (cfg.additionalCapabilities != null && cfg.additionalCapabilities != [])
|
||||
''--capability="${concatStringsSep "," cfg.additionalCapabilities}"''
|
||||
} \
|
||||
${if cfg.tmpfs != null && cfg.tmpfs != [] then
|
||||
''--tmpfs=${concatStringsSep " --tmpfs=" cfg.tmpfs}'' else ""
|
||||
${optionalString (cfg.tmpfs != null && cfg.tmpfs != [])
|
||||
''--tmpfs=${concatStringsSep " --tmpfs=" cfg.tmpfs}''
|
||||
} \
|
||||
${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
|
||||
'';
|
||||
|
||||
@@ -214,11 +214,11 @@ let
|
||||
mkdir $out
|
||||
diskImage=$out/disk.img
|
||||
${qemu}/bin/qemu-img create -f qcow2 $diskImage "120M"
|
||||
${if cfg.useEFIBoot then ''
|
||||
${lib.optionalString cfg.useEFIBoot ''
|
||||
efiVars=$out/efi-vars.fd
|
||||
cp ${cfg.efi.variables} $efiVars
|
||||
chmod 0644 $efiVars
|
||||
'' else ""}
|
||||
''}
|
||||
'';
|
||||
buildInputs = [ pkgs.util-linux ];
|
||||
QEMU_OPTS = "-nographic -serial stdio -monitor none"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ lib
|
||||
, fetchFromGitHub
|
||||
, fetchFromGitLab
|
||||
, fetchpatch
|
||||
, gitUpdater
|
||||
, python3Packages
|
||||
, blueprint-compiler
|
||||
@@ -38,7 +38,15 @@ python3Packages.buildPythonApplication rec {
|
||||
sha256 = "sha256-8VF/CD0Wu2eV6wOpj/M6peKDthFWlcg+1NzzTSIH4S8=";
|
||||
};
|
||||
|
||||
patches = [ ./vulkan_icd.patch ];
|
||||
patches = [
|
||||
./vulkan_icd.patch
|
||||
|
||||
# Remove next version
|
||||
(fetchpatch {
|
||||
url = "https://github.com/bottlesdevs/Bottles/commit/7cb284f9bac0b71bf632bfc70d94f7a53bc51267.patch";
|
||||
hash = "sha256-mRF+BtQ0qM7Yvx7SONeH2wc04F87fEyNRlBuyQrzN8Y=";
|
||||
})
|
||||
];
|
||||
|
||||
# https://github.com/bottlesdevs/Bottles/wiki/Packaging
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,40 +1,44 @@
|
||||
{ lib, stdenv, fetchFromGitHub
|
||||
, autoconf, autoconf-archive, automake, glib, intltool, libtool, pkg-config
|
||||
, gnome-desktop, gnupg, gtk3, udisks
|
||||
{ lib, stdenv, fetchFromGitHub, writeText
|
||||
, glib, meson, ninja, pkg-config, python3
|
||||
, coreutils, gnome-desktop, gnupg, gtk3, systemdMinimal, udisks
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "eos-installer";
|
||||
version = "4.0.3";
|
||||
version = "5.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "endlessm";
|
||||
repo = "eos-installer";
|
||||
rev = "Release_${version}";
|
||||
sha256 = "1nl6vim5dd83kvskmf13xp9d6zx39fayz4z0wqwf7xf4nwl07gwz";
|
||||
sha256 = "utTTux8o8TN51bvnGldrtMEatiLA1AiHf/9XJZ7k7KM=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [
|
||||
autoconf autoconf-archive automake glib intltool libtool pkg-config
|
||||
glib gnupg meson ninja pkg-config python3
|
||||
];
|
||||
buildInputs = [ gnome-desktop gtk3 udisks ];
|
||||
buildInputs = [ gnome-desktop gtk3 systemdMinimal udisks ];
|
||||
|
||||
preConfigure = ''
|
||||
./autogen.sh
|
||||
patchShebangs tests
|
||||
substituteInPlace tests/test-scribe.c \
|
||||
--replace /bin/true ${coreutils}/bin/true \
|
||||
--replace /bin/false ${coreutils}/bin/false
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
mesonFlags = [
|
||||
"--libexecdir=${placeholder "out"}/bin"
|
||||
"--localstatedir=/var"
|
||||
"--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
|
||||
"--cross-file=${writeText "crossfile.ini" ''
|
||||
[binaries]
|
||||
gpg = '${gnupg}/bin/gpg'
|
||||
''}"
|
||||
];
|
||||
|
||||
# These are for runtime, so can't be discovered from PATH, which
|
||||
# is constructed from nativeBuildInputs.
|
||||
GPG_PATH = "${gnupg}/bin/gpg";
|
||||
GPGCONF_PATH = "${gnupg}/bin/gpgconf";
|
||||
PKG_CONFIG_SYSTEMD_SYSTEMDSYSTEMUNITDIR = "${placeholder "out"}/lib/systemd/system";
|
||||
|
||||
doCheck = true;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{ stdenv, lib, buildGoModule, fetchFromGitHub }:
|
||||
let
|
||||
version = "1.4.8";
|
||||
version = "1.5.2";
|
||||
in
|
||||
buildGoModule {
|
||||
pname = "ktunnel";
|
||||
@@ -10,14 +10,14 @@ buildGoModule {
|
||||
owner = "omrikiei";
|
||||
repo = "ktunnel";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Iw7Z4iuKxmRrS51KP3k/ouXW4xssdNgxDDzNQR2Zygg=";
|
||||
sha256 = "sha256-QZL3TSvxSPuBjjATAqoAOZNBSB6NCGfHHG2dq8C4Wwk=";
|
||||
};
|
||||
|
||||
ldflags = [
|
||||
"-s" "-w"
|
||||
];
|
||||
|
||||
vendorSha256 = "sha256-p9AYZWNO2oqLich0qzZYuAk55HqB6ttS66ORuNZ4rJg=";
|
||||
vendorHash = "sha256-Q8t/NWGeUB1IpxdsxvyvbYh/adtcA4p+7bcCy9YFjsw=";
|
||||
|
||||
preCheck = "export HOME=$(mktemp -d)";
|
||||
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "werf";
|
||||
version = "1.2.219";
|
||||
version = "1.2.224";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "werf";
|
||||
repo = "werf";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-yenIGKN6OoDxPRn4aHOQu8Msp1WzjLZzTZkSSKq1zlc=";
|
||||
hash = "sha256-j7Lio56CMC4bJ58Oucm1hCqFNzMeoDpDRh/ALmF9Y3Y=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-lif2Vj8HQH8rZeBIky1lz5J6ISdV2yPyR1vQrPcZLuU=";
|
||||
vendorHash = "sha256-SdBWW1tv3OauCex8l6Kg7uKLFUOvDvCE8rnULytndqw=";
|
||||
|
||||
proxyVendor = true;
|
||||
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
let
|
||||
pname = "qownnotes";
|
||||
appname = "QOwnNotes";
|
||||
version = "23.4.0";
|
||||
version = "23.4.6";
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
inherit pname appname version;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.tuxfamily.org/${pname}/src/${pname}-${version}.tar.xz";
|
||||
sha256 = "sha256-8gSy7WL0wpLAXxVo3oOA9X12qd/R7P3MgmlwXxpJSUs=";
|
||||
sha256 = "sha256-lfQkY/B+mv+hUeAfmZkZ2BHq7MjR0MUVNPjk5QCGisE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -179,7 +179,7 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "cloud-hypervisor"
|
||||
version = "31.0.0"
|
||||
version = "31.1.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"api_client",
|
||||
@@ -545,8 +545,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "kvm-ioctls"
|
||||
version = "0.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b8f8dc9c1896e5f144ec5d07169bc29f39a047686d29585a91f30489abfaeb6b"
|
||||
source = "git+https://github.com/rust-vmm/kvm-ioctls?branch=main#23a3bb045a467e60bb00328a0b13cea13b5815d0"
|
||||
dependencies = [
|
||||
"kvm-bindings",
|
||||
"libc",
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cloud-hypervisor";
|
||||
version = "31.0";
|
||||
version = "31.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cloud-hypervisor";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "RDHrBu8ePpFkN7BkTbqe2EXNNW7q96zNrjo269K1Zdo=";
|
||||
sha256 = "vQa43ic3pRzRfT8S9LQIO+VIo6AS2tEMT16CDrMw8R0=";
|
||||
};
|
||||
|
||||
cargoLock = {
|
||||
@@ -16,6 +16,7 @@ rustPlatform.buildRustPackage rec {
|
||||
outputHashes = {
|
||||
"acpi_tables-0.1.0" = "sha256-hP9Fi1K6hX0PkOuomjIzY+oOiPO/5YSNzo0Z98Syz2A=";
|
||||
"kvm-bindings-0.6.0" = "sha256-wGdAuPwsgRIqx9dh0m+hC9A/Akz9qg9BM+p06Fi5ACM=";
|
||||
"kvm-ioctls-0.13.0" = "sha256-jHnFGwBWnAa2lRu4a5eRNy1Y26NX5MV8alJ86VR++QE=";
|
||||
"micro_http-0.1.0" = "sha256-w2witqKXE60P01oQleujmHSnzMKxynUGKWyq5GEh1Ew=";
|
||||
"mshv-bindings-0.1.1" = "sha256-NwLPzX23nOe00qGoj1rLCWsJ5xEMmPUEtPVZNAYorWQ=";
|
||||
"versionize_derive-0.1.4" = "sha256-BPl294UqjVl8tThuvylXUFjFNjJx8OSfBGJLg8jIkWw=";
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{ lib, stdenv, fetchurl, fetchpatch, python3Packages, zlib, pkg-config, glib, buildPackages
|
||||
, perl, pixman, vde2, alsa-lib, texinfo, flex
|
||||
, pixman, vde2, alsa-lib, texinfo, flex
|
||||
, bison, lzo, snappy, libaio, libtasn1, gnutls, nettle, curl, ninja, meson, sigtool
|
||||
, makeWrapper, runtimeShell, removeReferencesTo
|
||||
, attr, libcap, libcap_ng, socat, libslirp
|
||||
, CoreServices, Cocoa, Hypervisor, rez, setfile, vmnet
|
||||
, guestAgentSupport ? with stdenv.hostPlatform; isLinux || isSunOS || isWindows
|
||||
, guestAgentSupport ? with stdenv.hostPlatform; isLinux || isNetBSD || isOpenBSD || isSunOS || isWindows
|
||||
, numaSupport ? stdenv.isLinux && !stdenv.isAarch32, numactl
|
||||
, seccompSupport ? stdenv.isLinux, libseccomp
|
||||
, alsaSupport ? lib.hasSuffix "linux" stdenv.hostPlatform.system && !nixosTestRunner
|
||||
@@ -37,31 +37,37 @@
|
||||
, qemu # for passthru.tests
|
||||
}:
|
||||
|
||||
let
|
||||
hexagonSupport = hostCpuTargets == null || lib.elem "hexagon" hostCpuTargets;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "qemu"
|
||||
+ lib.optionalString xenSupport "-xen"
|
||||
+ lib.optionalString hostCpuOnly "-host-cpu-only"
|
||||
+ lib.optionalString nixosTestRunner "-for-vm-tests";
|
||||
version = "7.2.1";
|
||||
version = "8.0.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.qemu.org/qemu-${version}.tar.xz";
|
||||
sha256 = "jIVpms+dekOl/immTN1WNwsMLRrQdLr3CYqCTReq1zs=";
|
||||
sha256 = "u2DwNBUxGB1sw5ad0ZoBPQQnqH+RgZOXDZrbkRMeVtA=";
|
||||
};
|
||||
|
||||
depsBuildBuild = [ buildPackages.stdenv.cc ];
|
||||
depsBuildBuild = [ buildPackages.stdenv.cc ]
|
||||
++ lib.optionals hexagonSupport [ pkg-config ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper removeReferencesTo
|
||||
pkg-config flex bison meson ninja perl
|
||||
pkg-config flex bison meson ninja
|
||||
|
||||
# Don't change this to python3 and python3.pkgs.*, breaks cross-compilation
|
||||
python3Packages.python python3Packages.sphinx python3Packages.sphinx-rtd-theme
|
||||
]
|
||||
++ lib.optionals gtkSupport [ wrapGAppsHook ]
|
||||
++ lib.optionals hexagonSupport [ glib ]
|
||||
++ lib.optionals stdenv.isDarwin [ sigtool ];
|
||||
|
||||
buildInputs = [ zlib glib perl pixman
|
||||
buildInputs = [ zlib glib pixman
|
||||
vde2 texinfo lzo snappy libtasn1
|
||||
gnutls nettle curl libslirp
|
||||
]
|
||||
@@ -117,15 +123,6 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "sha256-oC+bRjEHixv1QEFO9XAm4HHOwoiT+NkhknKGPydnZ5E=";
|
||||
revert = true;
|
||||
})
|
||||
# glibc >=2.37 compat, see https://lore.kernel.org/qemu-devel/20230110174901.2580297-1-berrange@redhat.com/
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/qemu-project/qemu/-/commit/9f0246539ae84a5e21efd1cc4516fc343f08115a.patch";
|
||||
sha256 = "sha256-1iWOWkLH0WP1Hk23fmrRVdX7YZWUXOvWRMTt8QM93BI=";
|
||||
})
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.com/qemu-project/qemu/-/commit/6003159ce18faad4e1bc7bf9c85669019cd4950e.patch";
|
||||
sha256 = "sha256-DKGCbR+VDIFLp6FhER78gyJ3Rn1dD47pMtkcIIMd0B8=";
|
||||
})
|
||||
]
|
||||
++ lib.optional nixosTestRunner ./force-uid0-on-9p.patch;
|
||||
|
||||
@@ -241,8 +238,6 @@ stdenv.mkDerivation rec {
|
||||
# Add a ‘qemu-kvm’ wrapper for compatibility/convenience.
|
||||
postInstall = ''
|
||||
ln -s $out/bin/qemu-system-${stdenv.hostPlatform.qemuArch} $out/bin/qemu-kvm
|
||||
'' + lib.optionalString stdenv.isLinux ''
|
||||
ln -s $out/libexec/virtiofsd $out/bin
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
@@ -262,6 +257,5 @@ stdenv.mkDerivation rec {
|
||||
mainProgram = "qemu-kvm";
|
||||
maintainers = with maintainers; [ eelco qyliss ];
|
||||
platforms = platforms.unix;
|
||||
priority = 10; # Prefer virtiofsd from the virtiofsd package.
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
From 747a741772cde6bb340eb8bdb493390280de8d16 Mon Sep 17 00:00:00 2001
|
||||
From 2ec149ea3f0046fa83e3be74aca192649a60be47 Mon Sep 17 00:00:00 2001
|
||||
From: Keno Fischer <keno@juliacomputing.com>
|
||||
Date: Sat, 16 Jun 2018 20:56:54 -0400
|
||||
Subject: [PATCH] 9p: darwin: Provide fallback impl for utimensat
|
||||
@@ -29,23 +29,23 @@ Signed-off-by: Will Cohen <wwcohen@gmail.com>
|
||||
4 files changed, 111 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/hw/9pfs/9p-local.c b/hw/9pfs/9p-local.c
|
||||
index d42ce6d8b8..b2c1fa42e1 100644
|
||||
index 9d07620235..9c77a431d5 100644
|
||||
--- a/hw/9pfs/9p-local.c
|
||||
+++ b/hw/9pfs/9p-local.c
|
||||
@@ -1085,7 +1085,7 @@ static int local_utimensat(FsContext *s, V9fsPath *fs_path,
|
||||
@@ -1081,7 +1081,7 @@ static int local_utimensat(FsContext *s, V9fsPath *fs_path,
|
||||
goto out;
|
||||
}
|
||||
|
||||
- ret = utimensat(dirfd, name, buf, AT_SYMLINK_NOFOLLOW);
|
||||
- ret = qemu_utimensat(dirfd, name, buf, AT_SYMLINK_NOFOLLOW);
|
||||
+ ret = utimensat_nofollow(dirfd, name, buf);
|
||||
close_preserve_errno(dirfd);
|
||||
out:
|
||||
g_free(dirpath);
|
||||
diff --git a/hw/9pfs/9p-util-darwin.c b/hw/9pfs/9p-util-darwin.c
|
||||
index bec0253474..2fc0475292 100644
|
||||
index 95146e7354..74ab2a7f99 100644
|
||||
--- a/hw/9pfs/9p-util-darwin.c
|
||||
+++ b/hw/9pfs/9p-util-darwin.c
|
||||
@@ -95,3 +95,99 @@ int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t dev)
|
||||
@@ -145,3 +145,99 @@ int qemu_mknodat(int dirfd, const char *filename, mode_t mode, dev_t dev)
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -160,12 +160,12 @@ index db451b0784..320697f347 100644
|
||||
+ return utimensat(dirfd, filename, times, AT_SYMLINK_NOFOLLOW);
|
||||
+}
|
||||
diff --git a/hw/9pfs/9p-util.h b/hw/9pfs/9p-util.h
|
||||
index 97e681e167..fd50d6243a 100644
|
||||
index c314cf381d..12d57f3398 100644
|
||||
--- a/hw/9pfs/9p-util.h
|
||||
+++ b/hw/9pfs/9p-util.h
|
||||
@@ -36,6 +36,12 @@ static inline int qemu_lsetxattr(const char *path, const char *name,
|
||||
#define qemu_lsetxattr lsetxattr
|
||||
#endif
|
||||
@@ -101,6 +101,12 @@ static inline int errno_to_dotl(int err) {
|
||||
#define qemu_utimensat utimensat
|
||||
#define qemu_unlinkat unlinkat
|
||||
|
||||
+/* Compatibility with old SDK Versions for Darwin */
|
||||
+#if defined(CONFIG_DARWIN) && !defined(UTIME_NOW)
|
||||
@@ -176,7 +176,7 @@ index 97e681e167..fd50d6243a 100644
|
||||
static inline void close_preserve_errno(int fd)
|
||||
{
|
||||
int serrno = errno;
|
||||
@@ -98,6 +104,8 @@ ssize_t flistxattrat_nofollow(int dirfd, const char *filename,
|
||||
@@ -163,6 +169,8 @@ ssize_t flistxattrat_nofollow(int dirfd, const char *filename,
|
||||
char *list, size_t size);
|
||||
ssize_t fremovexattrat_nofollow(int dirfd, const char *filename,
|
||||
const char *name);
|
||||
@@ -186,5 +186,4 @@ index 97e681e167..fd50d6243a 100644
|
||||
/*
|
||||
* Darwin has d_seekoff, which appears to function similarly to d_off.
|
||||
--
|
||||
2.35.1
|
||||
|
||||
2.39.2
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
{ lib, stdenv, fetchFromGitHub }:
|
||||
{ lib, stdenvNoCC, fetchFromGitHub }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "scheme-manpages";
|
||||
version = "unstable-2023-02-06";
|
||||
version = "unstable-2023-03-26";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "schemedoc";
|
||||
repo = "manpages";
|
||||
rev = "ccaa76761a1b100e99287c120196bd5f32d4a403";
|
||||
hash = "sha256-RL/94dQiZJ60cXHQ9r4P3hRBqe55oUissCmSp4XLM+o=";
|
||||
rev = "eac67db33b2111f19ac267585032df8b4838e6f4";
|
||||
hash = "sha256-FBoagGHWsxZo40gOqeBUw0L+LtNAVF/q6IZ3N9QBFQs=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"commit": "88252bfad2741817b521acc02a424b878264bf9f",
|
||||
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/88252bfad2741817b521acc02a424b878264bf9f.tar.gz",
|
||||
"sha256": "00nc417r9xrknhmyjh3rfxlsbchizxicnbp98q63yb5czdapg4bm",
|
||||
"msg": "Update from Hackage at 2023-04-13T09:45:26Z"
|
||||
"commit": "67ecaa60725908a5bc562294a2c0e03e30858aa7",
|
||||
"url": "https://github.com/commercialhaskell/all-cabal-hashes/archive/67ecaa60725908a5bc562294a2c0e03e30858aa7.tar.gz",
|
||||
"sha256": "0yf0dliq65j5achg3iqz0hkf25jjkgxarsdsr5vl2r5h41n39qg3",
|
||||
"msg": "Update from Hackage at 2023-04-18T09:14:41Z"
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "gleam";
|
||||
version = "0.28.2";
|
||||
version = "0.28.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gleam-lang";
|
||||
repo = pname;
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-4sYHI3yh5KvLxdpWkCMya7v5aXG+FvvK7hmpOkX1R28=";
|
||||
hash = "sha256-3uHR6W2Vbqen9e6OXEFFl91/LzXCix4alnprFB36yes=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ git pkg-config ];
|
||||
@@ -16,7 +16,7 @@ rustPlatform.buildRustPackage rec {
|
||||
buildInputs = [ openssl ] ++
|
||||
lib.optionals stdenv.isDarwin [ Security libiconv ];
|
||||
|
||||
cargoSha256 = "sha256-7RLeLZS28eIGObisRRI3skSkplWZGnyikvD3qfFDpU8=";
|
||||
cargoHash = "sha256-3+Jb/POABFIBkKpaTD9JDc1vrDzsJe9mGRBQR3UnDAg=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A statically typed language for the Erlang VM";
|
||||
|
||||
@@ -38,6 +38,11 @@ self: super: {
|
||||
happy = dontCheck super.happy;
|
||||
happy_1_19_12 = doDistribute (dontCheck super.happy_1_19_12);
|
||||
|
||||
# add arm specific library
|
||||
wiringPi = overrideCabal ({librarySystemDepends ? [], ...}: {
|
||||
librarySystemDepends = librarySystemDepends ++ [pkgs.wiringpi];
|
||||
}) super.wiringPi;
|
||||
|
||||
} // lib.optionalAttrs pkgs.stdenv.hostPlatform.isAarch64 {
|
||||
# AARCH64-SPECIFIC OVERRIDES
|
||||
|
||||
|
||||
@@ -2489,7 +2489,7 @@ self: super: {
|
||||
# 2022-11-15: Needs newer witch package and brick 1.3 which in turn works with text-zipper 0.12
|
||||
# Other dependencies are resolved with doJailbreak for both swarm and brick_1_3
|
||||
swarm = doJailbreak (super.swarm.override {
|
||||
brick = doJailbreak (dontCheck super.brick_1_6);
|
||||
brick = doJailbreak (dontCheck super.brick_1_7);
|
||||
});
|
||||
|
||||
# Too strict upper bound on bytestring
|
||||
|
||||
@@ -62,8 +62,6 @@ in {
|
||||
|
||||
ghc-source-gen = checkAgainAfter super.ghc-source-gen "0.4.3.0" "fails to build" (markBroken super.ghc-source-gen);
|
||||
|
||||
lucid = jailbreakForCurrentVersion super.lucid "2.11.1";
|
||||
|
||||
haskell-src-meta = doJailbreak super.haskell-src-meta;
|
||||
|
||||
# Tests fail in GHC 9.2
|
||||
@@ -211,7 +209,7 @@ in {
|
||||
# https://github.com/tweag/ormolu/issues/941
|
||||
fourmolu = overrideCabal (drv: {
|
||||
libraryHaskellDepends = drv.libraryHaskellDepends ++ [ self.file-embed ];
|
||||
}) (disableCabalFlag "fixity-th" super.fourmolu_0_10_0_0);
|
||||
}) (disableCabalFlag "fixity-th" super.fourmolu_0_10_1_0);
|
||||
|
||||
# Apply workaround for Cabal 3.8 bug https://github.com/haskell/cabal/issues/8455
|
||||
# by making `pkg-config --static` happy. Note: Cabal 3.9 is also affected, so
|
||||
|
||||
@@ -4975,6 +4975,7 @@ broken-packages:
|
||||
- softfloat-hs
|
||||
- solar
|
||||
- solga
|
||||
- som # test failure in job https://hydra.nixos.org/build/216744749 at 2023-04-20
|
||||
- Sonnex
|
||||
- sorted
|
||||
- sorting
|
||||
@@ -5254,6 +5255,7 @@ broken-packages:
|
||||
- tasty-hedgehog-coverage
|
||||
- tasty-json
|
||||
- tasty-mgolden
|
||||
- tasty-papi # test failure in job https://hydra.nixos.org/build/216756583 at 2023-04-20
|
||||
- tasty-stats
|
||||
- tasty-test-vector
|
||||
- TastyTLT
|
||||
@@ -5701,6 +5703,7 @@ broken-packages:
|
||||
- vector-fftw
|
||||
- vector-functorlazy
|
||||
- vector-heterogenous
|
||||
- vector-quicksort # dependency missing in job https://hydra.nixos.org/build/216753081 at 2023-04-20
|
||||
- vector-random
|
||||
- vector-read-instances
|
||||
- vector-space-map
|
||||
|
||||
@@ -134,7 +134,7 @@ extra-packages:
|
||||
- retrie < 1.2.0.0 # 2022-12-30: required for hls on ghc < 9.2
|
||||
- ghc-tags == 1.5.* # 2023-02-18: preserve for ghc-lib == 9.2.*
|
||||
- primitive == 0.7.4.0 # 2023-03-04: primitive 0.8 is not compatible with too many packages on ghc 9.4 as of now
|
||||
- fourmolu == 0.10.0.0 # 2023-04-03: for hls-fourmolu-plugin 1.1.1.0
|
||||
- fourmolu == 0.10.1.0 # 2023-04-18: for hls-fourmolu-plugin 1.1.1.0
|
||||
|
||||
package-maintainers:
|
||||
abbradar:
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Stackage LTS 20.17
|
||||
# Stackage LTS 20.18
|
||||
# This file is auto-generated by
|
||||
# maintainers/scripts/haskell/update-stackage.sh
|
||||
default-package-overrides:
|
||||
@@ -8,7 +8,7 @@ default-package-overrides:
|
||||
- AC-Angle ==1.0
|
||||
- acc ==0.2.0.1
|
||||
- ace ==0.6
|
||||
- acid-state ==0.16.1.1
|
||||
- acid-state ==0.16.1.2
|
||||
- action-permutations ==0.0.0.1
|
||||
- active ==0.2.0.17
|
||||
- ad ==4.5.4
|
||||
@@ -43,7 +43,7 @@ default-package-overrides:
|
||||
- al ==0.1.4.2
|
||||
- alarmclock ==0.7.0.6
|
||||
- alerts ==0.1.2.0
|
||||
- alex ==3.2.7.1
|
||||
- alex ==3.2.7.2
|
||||
- alex-meta ==0.3.0.13
|
||||
- algebra ==4.3.1
|
||||
- algebraic-graphs ==0.6.1
|
||||
@@ -446,8 +446,8 @@ default-package-overrides:
|
||||
- convertible ==1.1.1.1
|
||||
- cookie ==0.4.6
|
||||
- copr-api ==0.1.0
|
||||
- core-data ==0.3.9.0
|
||||
- core-program ==0.6.5.0
|
||||
- core-data ==0.3.9.1
|
||||
- core-program ==0.6.5.1
|
||||
- core-telemetry ==0.2.8.0
|
||||
- core-text ==0.3.8.1
|
||||
- countable ==1.2
|
||||
@@ -554,7 +554,7 @@ default-package-overrides:
|
||||
- dawg-ord ==0.5.1.2
|
||||
- dbcleaner ==0.1.3
|
||||
- DBFunctor ==0.1.2.1
|
||||
- dbus ==1.2.27
|
||||
- dbus ==1.2.28
|
||||
- dbus-hslogger ==0.1.0.1
|
||||
- debian ==4.0.4
|
||||
- debian-build ==0.10.2.1
|
||||
@@ -771,7 +771,7 @@ default-package-overrides:
|
||||
- filecache ==0.4.1
|
||||
- file-embed ==0.0.15.0
|
||||
- file-embed-lzma ==0.0.1
|
||||
- filelock ==0.1.1.5
|
||||
- filelock ==0.1.1.6
|
||||
- filemanip ==0.3.6.3
|
||||
- file-modules ==0.1.2.4
|
||||
- filepath-bytestring ==1.4.2.1.12
|
||||
@@ -1047,7 +1047,7 @@ default-package-overrides:
|
||||
- hasql-dynamic-statements ==0.3.1.2
|
||||
- hasql-implicits ==0.1.1
|
||||
- hasql-migration ==0.3.0
|
||||
- hasql-notifications ==0.2.0.3
|
||||
- hasql-notifications ==0.2.0.4
|
||||
- hasql-optparse-applicative ==0.5
|
||||
- hasql-pool ==0.8.0.7
|
||||
- hasql-queue ==1.2.0.2
|
||||
@@ -1301,7 +1301,7 @@ default-package-overrides:
|
||||
- inbox ==0.2.0
|
||||
- include-file ==0.1.0.4
|
||||
- incremental ==0.3.1
|
||||
- incremental-parser ==0.5.0.4
|
||||
- incremental-parser ==0.5.0.5
|
||||
- indents ==0.5.0.1
|
||||
- indexed ==0.1.3
|
||||
- indexed-containers ==0.1.0.2
|
||||
@@ -1398,7 +1398,7 @@ default-package-overrides:
|
||||
- keep-alive ==0.2.1.0
|
||||
- keycode ==0.2.2
|
||||
- keys ==3.12.3
|
||||
- ki ==1.0.0.2
|
||||
- ki ==1.0.1.0
|
||||
- kind-apply ==0.3.2.1
|
||||
- kind-generics ==0.4.1.4
|
||||
- kind-generics-th ==0.2.2.3
|
||||
@@ -1509,7 +1509,7 @@ default-package-overrides:
|
||||
- lua ==2.2.1
|
||||
- lua-arbitrary ==1.0.1.1
|
||||
- lucid2 ==0.0.20221012
|
||||
- lucid ==2.11.1
|
||||
- lucid ==2.11.20230408
|
||||
- lucid-cdn ==0.2.2.0
|
||||
- lucid-extras ==0.2.2
|
||||
- lukko ==0.1.1.3
|
||||
@@ -1576,7 +1576,7 @@ default-package-overrides:
|
||||
- microlens-mtl ==0.2.0.3
|
||||
- microlens-platform ==0.4.2.1
|
||||
- microlens-process ==0.2.0.2
|
||||
- microlens-th ==0.4.3.11
|
||||
- microlens-th ==0.4.3.12
|
||||
- microspec ==0.2.1.3
|
||||
- microstache ==1.0.2.3
|
||||
- midair ==0.2.0.1
|
||||
@@ -1652,15 +1652,15 @@ default-package-overrides:
|
||||
- mono-traversable-instances ==0.1.1.0
|
||||
- mono-traversable-keys ==0.2.0
|
||||
- more-containers ==0.2.2.2
|
||||
- morpheus-graphql ==0.27.0
|
||||
- morpheus-graphql-app ==0.27.0
|
||||
- morpheus-graphql-client ==0.27.0
|
||||
- morpheus-graphql-code-gen ==0.27.0
|
||||
- morpheus-graphql-code-gen-utils ==0.27.0
|
||||
- morpheus-graphql-core ==0.27.0
|
||||
- morpheus-graphql-server ==0.27.0
|
||||
- morpheus-graphql-subscriptions ==0.27.0
|
||||
- morpheus-graphql-tests ==0.27.0
|
||||
- morpheus-graphql ==0.27.1
|
||||
- morpheus-graphql-app ==0.27.1
|
||||
- morpheus-graphql-client ==0.27.1
|
||||
- morpheus-graphql-code-gen ==0.27.1
|
||||
- morpheus-graphql-code-gen-utils ==0.27.1
|
||||
- morpheus-graphql-core ==0.27.1
|
||||
- morpheus-graphql-server ==0.27.1
|
||||
- morpheus-graphql-subscriptions ==0.27.1
|
||||
- morpheus-graphql-tests ==0.27.1
|
||||
- moss ==0.2.0.1
|
||||
- mountpoints ==1.0.2
|
||||
- mpi-hs ==0.7.2.0
|
||||
@@ -1939,7 +1939,7 @@ default-package-overrides:
|
||||
- polysemy-fs ==0.1.0.0
|
||||
- polysemy-kvstore ==0.1.3.0
|
||||
- polysemy-methodology ==0.2.2.0
|
||||
- polysemy-plugin ==0.4.4.0
|
||||
- polysemy-plugin ==0.4.5.0
|
||||
- polysemy-several ==0.1.1.0
|
||||
- polysemy-webserver ==0.2.1.1
|
||||
- polysemy-zoo ==0.8.1.0
|
||||
@@ -2105,7 +2105,7 @@ default-package-overrides:
|
||||
- reducers ==3.12.4
|
||||
- refact ==0.3.0.2
|
||||
- ref-fd ==0.5.0.1
|
||||
- refined ==0.8
|
||||
- refined ==0.8.1
|
||||
- reflection ==2.1.7
|
||||
- reform ==0.2.7.5
|
||||
- reform-blaze ==0.2.4.4
|
||||
@@ -2203,7 +2203,7 @@ default-package-overrides:
|
||||
- sample-frame-np ==0.0.5
|
||||
- sampling ==0.3.5
|
||||
- sandi ==0.5
|
||||
- sandwich ==0.1.3.0
|
||||
- sandwich ==0.1.3.1
|
||||
- sandwich-hedgehog ==0.1.1.0
|
||||
- sandwich-quickcheck ==0.1.0.6
|
||||
- sandwich-slack ==0.1.1.0
|
||||
@@ -2413,7 +2413,7 @@ default-package-overrides:
|
||||
- StateVar ==1.2.2
|
||||
- stateWriter ==0.3.0
|
||||
- static-text ==0.2.0.7
|
||||
- statistics ==0.16.1.2
|
||||
- statistics ==0.16.2.0
|
||||
- status-notifier-item ==0.3.1.0
|
||||
- stb-image-redux ==0.2.1.2
|
||||
- step-function ==0.2.0.1
|
||||
@@ -2442,7 +2442,7 @@ default-package-overrides:
|
||||
- streaming-attoparsec ==1.0.0.1
|
||||
- streaming-bytestring ==0.2.4
|
||||
- streaming-cassava ==0.2.0.0
|
||||
- streaming-commons ==0.2.2.5
|
||||
- streaming-commons ==0.2.2.6
|
||||
- streaming-wai ==0.1.1
|
||||
- streamly ==0.8.1.1
|
||||
- streams ==3.3.2
|
||||
@@ -2708,7 +2708,7 @@ default-package-overrides:
|
||||
- typed-process ==0.2.11.0
|
||||
- typed-uuid ==0.2.0.0
|
||||
- type-equality ==1
|
||||
- type-errors ==0.2.0.1
|
||||
- type-errors ==0.2.0.2
|
||||
- type-fun ==0.1.3
|
||||
- type-hint ==0.1
|
||||
- type-level-integers ==0.0.1
|
||||
@@ -2879,7 +2879,7 @@ default-package-overrides:
|
||||
- wave ==0.2.0
|
||||
- wcwidth ==0.0.2
|
||||
- webby ==1.1.0
|
||||
- webdriver ==0.10.0.0
|
||||
- webdriver ==0.10.0.1
|
||||
- webex-teams-api ==0.2.0.1
|
||||
- webex-teams-conduit ==0.2.0.1
|
||||
- webgear-core ==1.0.4
|
||||
@@ -2905,7 +2905,7 @@ default-package-overrides:
|
||||
- witherable ==0.4.2
|
||||
- within ==0.2.0.1
|
||||
- with-location ==0.1.0
|
||||
- with-utf8 ==1.0.2.3
|
||||
- with-utf8 ==1.0.2.4
|
||||
- witness ==0.6.1
|
||||
- wizards ==1.0.3
|
||||
- wl-pprint ==1.2.1
|
||||
@@ -2973,7 +2973,7 @@ default-package-overrides:
|
||||
- yesod-auth ==1.6.11.1
|
||||
- yesod-auth-basic ==0.1.0.3
|
||||
- yesod-auth-hashdb ==1.7.1.7
|
||||
- yesod-auth-oauth2 ==0.7.0.3
|
||||
- yesod-auth-oauth2 ==0.7.1.0
|
||||
- yesod-bin ==1.6.2.2
|
||||
- yesod-core ==1.6.24.2
|
||||
- yesod-eventsource ==1.6.0.1
|
||||
|
||||
@@ -810,11 +810,8 @@ dont-distribute-packages:
|
||||
- bitcoin-api
|
||||
- bitcoin-api-extra
|
||||
- bitcoin-block
|
||||
- bitcoin-compact-filters
|
||||
- bitcoin-tx
|
||||
- bitcoin-types
|
||||
- bitcoind-regtest
|
||||
- bitcoind-rpc
|
||||
- bitfield
|
||||
- bitly-cli
|
||||
- bitmaps
|
||||
@@ -1112,6 +1109,7 @@ dont-distribute-packages:
|
||||
- cqrs-test
|
||||
- cqrs-testkit
|
||||
- crackNum
|
||||
- crackNum_3_4
|
||||
- craft
|
||||
- craftwerk-cairo
|
||||
- craftwerk-gtk
|
||||
@@ -1279,6 +1277,7 @@ dont-distribute-packages:
|
||||
- distribution-plot
|
||||
- dixi
|
||||
- dl-fedora
|
||||
- dl-fedora_0_9_5
|
||||
- dmenu-pkill
|
||||
- dmenu-pmount
|
||||
- dmenu-search
|
||||
@@ -1544,9 +1543,6 @@ dont-distribute-packages:
|
||||
- ftshell
|
||||
- funbot
|
||||
- funbot-git-hook
|
||||
- funcons-lambda-cbv-mp
|
||||
- funcons-simple
|
||||
- funcons-tools
|
||||
- function-combine
|
||||
- functor
|
||||
- functor-combo
|
||||
@@ -1600,7 +1596,6 @@ dont-distribute-packages:
|
||||
- geolite-csv
|
||||
- getemx
|
||||
- gf
|
||||
- ghc-debug-brick
|
||||
- ghc-imported-from
|
||||
- ghc-instances
|
||||
- ghc-mod
|
||||
|
||||
@@ -1083,11 +1083,11 @@ self: super: builtins.intersectAttrs super {
|
||||
}) super.fourmolu;
|
||||
|
||||
# Test suite wants to run main executable
|
||||
fourmolu_0_10_0_0 = overrideCabal (drv: {
|
||||
fourmolu_0_10_1_0 = overrideCabal (drv: {
|
||||
preCheck = drv.preCheck or "" + ''
|
||||
export PATH="$PWD/dist/build/fourmolu:$PATH"
|
||||
'';
|
||||
}) super.fourmolu_0_10_0_0;
|
||||
}) super.fourmolu_0_10_1_0;
|
||||
|
||||
# Test suite needs to execute 'disco' binary
|
||||
disco = overrideCabal (drv: {
|
||||
|
||||
+519
-793
File diff suppressed because it is too large
Load Diff
@@ -58,10 +58,13 @@ stdenv.mkDerivation rec {
|
||||
buildPackages.libgphoto2;
|
||||
in
|
||||
''
|
||||
mkdir -p $out/lib/udev/rules.d
|
||||
mkdir -p $out/lib/udev/{rules.d,hwdb.d}
|
||||
${executablePrefix}/lib/libgphoto2/print-camera-list \
|
||||
udev-rules version 175 group camera \
|
||||
>$out/lib/udev/rules.d/40-gphoto2.rules
|
||||
udev-rules version 201 group camera \
|
||||
>$out/lib/udev/rules.d/40-libgphoto2.rules
|
||||
${executablePrefix}/lib/libgphoto2/print-camera-list \
|
||||
hwdb version 201 group camera \
|
||||
>$out/lib/udev/hwdb.d/20-gphoto.hwdb
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, makeWrapper
|
||||
, meson
|
||||
, ninja
|
||||
@@ -21,22 +20,15 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xdg-desktop-portal-wlr";
|
||||
version = "0.6.0";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "emersion";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-UztkfvMIbslPd/d262NZFb6WfESc9nBsSSH96BA4Aqw=";
|
||||
sha256 = "sha256-EwBHkXFEPAEgVUGC/0e2Bae/rV5lec1ttfbJ5ce9cKw=";
|
||||
};
|
||||
|
||||
# scdoc: mark as build-time dependency
|
||||
# https://github.com/emersion/xdg-desktop-portal-wlr/pull/248
|
||||
patches = [(fetchpatch {
|
||||
url = "https://github.com/emersion/xdg-desktop-portal-wlr/commit/92ccd62428082ba855e359e83730c4370cd1aac7.patch";
|
||||
hash = "sha256-mU1whfp7BoSylaS3y+YwfABImZFOeuItSXCon0C7u20=";
|
||||
})];
|
||||
|
||||
strictDeps = true;
|
||||
depsBuildBuild = [ pkg-config ];
|
||||
nativeBuildInputs = [ meson ninja pkg-config scdoc wayland-scanner makeWrapper ];
|
||||
|
||||
@@ -1,18 +1,43 @@
|
||||
{ lib, stdenv, fetchurl, buildDunePackage, pkg-config, gsl, darwin, dune-configurator }:
|
||||
{ lib, stdenv, fetchFromGitHub, fetchpatch, buildDunePackage, pkg-config, gsl, darwin, dune-configurator }:
|
||||
|
||||
buildDunePackage rec {
|
||||
pname = "gsl";
|
||||
version = "1.24.3";
|
||||
|
||||
useDune2 = true;
|
||||
minimalOCamlVersion = "4.12";
|
||||
|
||||
minimumOCamlVersion = "4.08";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/mmottl/gsl-ocaml/releases/download/${version}/gsl-${version}.tbz";
|
||||
sha256 = "1mpzcgbrha2l8iikqbmn32668v2mnnsykxg5n5jgs0qnskn2nvrn";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mmottl";
|
||||
repo = "gsl-ocaml";
|
||||
rev = version;
|
||||
hash = "sha256-I+u7lFEredt8ZLiba8x904eTgSUdZq82/e82B+/GIlo=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Switched to Dune lang 2.7
|
||||
(fetchpatch {
|
||||
url = "https://github.com/mmottl/gsl-ocaml/commit/be0f6933f16fea6d6fb2e39178816974be4c3724.patch";
|
||||
sha256 = "sha256-G/4JT8XPYw+oNJEwJ9zRdUBwtNUHL+T8/htCb3qfuT8=";
|
||||
})
|
||||
# Fix dune rules
|
||||
(fetchpatch {
|
||||
url = "https://github.com/mmottl/gsl-ocaml/commit/0b38a22d9813de27eab5caafafeabd945f298b5e.patch";
|
||||
sha256 = "sha256-S6OUDase2kR7V6fizaev5huqEAIM5QOkx3n18rj4y3w=";
|
||||
})
|
||||
# Updated opam file
|
||||
(fetchpatch {
|
||||
url = "https://github.com/mmottl/gsl-ocaml/commit/b749455b76501c9e3623e05d659565eab7292602.patch";
|
||||
sha256 = "sha256-/GACjI3cRCApyGyk1kQp0rB/Hae8DIR9zs6q9KiS1ZQ=";
|
||||
})
|
||||
# Used new OCaml 4.12 C-macros
|
||||
(fetchpatch {
|
||||
url = "https://github.com/mmottl/gsl-ocaml/commit/cca79ea56a7ee83a4c67b432decdaef3de8c9d30.patch";
|
||||
sha256 = "sha256-bsIKkvj9W8oAYSvP6ZfbqSgt5fSirc780O08WBhVRmI=";
|
||||
})
|
||||
];
|
||||
|
||||
duneVersion = "3";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ dune-configurator gsl ];
|
||||
propagatedBuildInputs = lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Accelerate ];
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "xc";
|
||||
version = "0.1.181";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "joerdav";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-C6qZdO6+n9BWm69y09kvnEBF45sB6bfOfmteNO2x68I=";
|
||||
sha256 = "sha256-e/cJ1kVFUs2chOpqu2tHsK9MBhlMx9u6mIa5uUwvVg8=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-cySflcTuAzbFZbtXmzZ98nfY8HUq1UedONTtKP4EICs=";
|
||||
vendorHash = "sha256-hCdIO377LiXFKz0GfCmAADTPfoatk8YWzki7lVP3yLw=";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://xcfile.dev/";
|
||||
|
||||
@@ -0,0 +1,19 @@
|
||||
{ callPackage, openssl, fetchpatch, python3, enableNpm ? true }:
|
||||
|
||||
let
|
||||
buildNodejs = callPackage ./nodejs.nix {
|
||||
inherit openssl;
|
||||
python = python3;
|
||||
};
|
||||
|
||||
in
|
||||
buildNodejs {
|
||||
inherit enableNpm;
|
||||
version = "20.0.0";
|
||||
sha256 = "sha256-dFDnV5Vo99HLOYGFz85HLaKDeyqjbFliCyLOS5d7XLU=";
|
||||
patches = [
|
||||
./revert-arm64-pointer-auth.patch
|
||||
./disable-darwin-v8-system-instrumentation-node19.patch
|
||||
./bypass-darwin-xcrun-node16.patch
|
||||
];
|
||||
}
|
||||
@@ -17,6 +17,8 @@
|
||||
, rustPlatform
|
||||
, writeShellScriptBin
|
||||
, yarn
|
||||
, swift
|
||||
, AVKit
|
||||
, CoreAudio
|
||||
}:
|
||||
|
||||
@@ -138,7 +140,7 @@ python3.pkgs.buildPythonApplication {
|
||||
ninja
|
||||
qt6.wrapQtAppsHook
|
||||
rsync
|
||||
];
|
||||
] ++ lib.optional stdenv.isDarwin swift;
|
||||
nativeCheckInputs = with python3.pkgs; [ pytest mock astroid ];
|
||||
|
||||
buildInputs = [
|
||||
@@ -186,7 +188,10 @@ python3.pkgs.buildPythonApplication {
|
||||
waitress
|
||||
werkzeug
|
||||
zipp
|
||||
] ++ lib.optionals stdenv.isDarwin [ CoreAudio ];
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
AVKit
|
||||
CoreAudio
|
||||
];
|
||||
|
||||
# Activate optimizations
|
||||
RELEASE = true;
|
||||
|
||||
Generated
+456
-455
File diff suppressed because it is too large
Load Diff
@@ -3,22 +3,30 @@
|
||||
, fetchFromGitea
|
||||
, rustPlatform
|
||||
, pkg-config
|
||||
, git
|
||||
, openssl
|
||||
, Security
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "fedigroups";
|
||||
version = "0.4.4";
|
||||
version = "0.4.5";
|
||||
|
||||
src = fetchFromGitea {
|
||||
domain = "git.ondrovo.com";
|
||||
owner = "MightyPork";
|
||||
repo = "group-actor";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-1WqIQp16bs+UB+NSEZn0JH6NOkuAx8iUfho4roA2B00=";
|
||||
sha256 = "sha256-NMqoYUNN2ntye9mNC3KAAc0DBg+QY7+6/DASwHPexY0=";
|
||||
forceFetchGit = true; # Archive generation is disabled on this gitea instance
|
||||
leaveDotGit = true; # git command in build.rs
|
||||
};
|
||||
|
||||
# The lockfile in the repo is not up to date
|
||||
postPatch = ''
|
||||
cp ${./Cargo.lock} Cargo.lock
|
||||
'';
|
||||
|
||||
cargoLock = {
|
||||
lockFile = ./Cargo.lock;
|
||||
outputHashes = {
|
||||
@@ -28,6 +36,7 @@ rustPlatform.buildRustPackage rec {
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
git
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "virtiofsd";
|
||||
version = "1.5.1";
|
||||
version = "1.6.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "virtio-fs";
|
||||
repo = "virtiofsd";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-FQKZVkPD4DQKMduWW2g9vD1vvaFlU6QpNEj+g3yeE2Q=";
|
||||
sha256 = "jxo6qQLIhwT6cqhYWx+5GEnuS9E7O2u82QrzxabjcOs=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-scKbu69lrEfUpErs6gZyZOGb3OwCzDThbs6O0ZtJX/8=";
|
||||
cargoHash = "sha256-1wDlYQXRJSkXyQU7H+mQWtsLSpX7i7SdmFYLjyRWfx8=";
|
||||
|
||||
LIBCAPNG_LIB_PATH = "${lib.getLib libcap_ng}/lib";
|
||||
LIBCAPNG_LINK_TYPE =
|
||||
|
||||
@@ -31,7 +31,7 @@ index d5c1c8bb10..88c77e8142 100755
|
||||
- log.error("Error: cannot launch ldconfig -p to locate libfakeXinerama:")
|
||||
- log.error(" %s", e)
|
||||
- return find_lib("libfakeXinerama.so.1")
|
||||
+ return "@libfakeXinerama@/lib/libfakeXinerama.so.1"
|
||||
+ return "@libfakeXinerama@/lib/libfakeXinerama.so.1.0"
|
||||
|
||||
current_xinerama_config = None
|
||||
|
||||
|
||||
@@ -5,18 +5,22 @@
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "chatgpt";
|
||||
version = "1.1.1";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "j178";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-sGcVtppw1q05ICcYyRcF2gpFCzbBftaxAM4X4/k48as=";
|
||||
hash = "sha256-5tEtkEDQxWFVWyK7uipm20yccCPkCDaMLzS25MmGRbE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-lD9G8N1BpWda2FAi80qzvdiQXoJIWl529THYMfQmXtg=";
|
||||
vendorHash = "sha256-q1+4KExXth7+UC8h0+M6ChnW7T1j468umi7Q1jwnzgo=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
subPackages = [ "cmd" ];
|
||||
|
||||
postInstall = ''
|
||||
mv $out/bin/cmd $out/bin/$pname
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Interactive CLI for ChatGPT";
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenvNoCC.mkDerivation rec {
|
||||
pname = "panoply";
|
||||
version = "5.2.3";
|
||||
version = "5.2.5";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.giss.nasa.gov/tools/panoply/download/PanoplyJ-${version}.tgz";
|
||||
sha256 = "sha256-bbePMbI1YF0YvakO5vlURdE7UG3pLiuByImYvDq9cRY=";
|
||||
sha256 = "sha256-FzLL4FCAT9iZ6YFlzc+D5LPg89L/s9dIum/DoFe61Es=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "tbls";
|
||||
version = "1.64.0";
|
||||
version = "1.65.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "k1LoW";
|
||||
repo = "tbls";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-XHHoPaT+qo2UBfYvslFhhSmo7a9YsBX3Ay+piOBVTxc=";
|
||||
hash = "sha256-/RyDv256qbi1CMHmB2LZxMBqOM81nA3r5N8jRrww/mQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-YrDQSySBplYgakgvb6BwK1AK6h0Usy8MvCndHSSYrlQ=";
|
||||
vendorHash = "sha256-qT8YhNZ+9n9+VduW8a/tr74w3OyWue7a51667Q9dMCg=";
|
||||
|
||||
CGO_CFLAGS = [ "-Wno-format-security" ];
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "vale";
|
||||
version = "2.24.2";
|
||||
version = "2.24.3";
|
||||
|
||||
subPackages = [ "cmd/vale" ];
|
||||
outputs = [ "out" "data" ];
|
||||
@@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
owner = "errata-ai";
|
||||
repo = "vale";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-d8AXKUlIbIuzQMj963uaArt+DakIi08aXtEFVYbm/oE=";
|
||||
hash = "sha256-8sJdt7lM/Ut/mtCoN2QZjtqh1fiWbI9taiLlnnx66PE=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-ZgBt4BgZWViNqYCuqb/Wt1zVjFM9h1UsmsYox7kMJ1A=";
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "zet";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "yarrow";
|
||||
repo = "zet";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-IjM+jSb+kdML0zZGuz9+9wrFzQCujn/bg9/vaTzMtUs=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-kHIOsSR7ZxBzp4dtm2hbi8ddtlQ86x5EASk5HFmnhFo=";
|
||||
|
||||
# tests fail with `--release`
|
||||
# https://github.com/yarrow/zet/pull/7
|
||||
checkType = "debug";
|
||||
|
||||
meta = with lib; {
|
||||
description = "CLI utility to find the union, intersection, set difference, etc of files considered as sets of lines";
|
||||
homepage = "https://github.com/yarrow/zet";
|
||||
changelog = "https://github.com/yarrow/zet/blob/${src.rev}/CHANGELOG.md";
|
||||
license = with licenses; [ asl20 mit ];
|
||||
maintainers = with maintainers; [ figsoda ];
|
||||
};
|
||||
}
|
||||
@@ -9401,9 +9401,13 @@ with pkgs;
|
||||
nodejs-slim-19_x = callPackage ../development/web/nodejs/v19.nix {
|
||||
enableNpm = false;
|
||||
};
|
||||
nodejs_20 = callPackage ../development/web/nodejs/v20.nix { };
|
||||
nodejs-slim_20 = callPackage ../development/web/nodejs/v20.nix {
|
||||
enableNpm = false;
|
||||
};
|
||||
# Update this when adding the newest nodejs major version!
|
||||
nodejs_latest = nodejs-19_x;
|
||||
nodejs-slim_latest = nodejs-slim-19_x;
|
||||
nodejs_latest = nodejs_20;
|
||||
nodejs-slim_latest = nodejs-slim_20;
|
||||
|
||||
buildNpmPackage = callPackage ../build-support/node/build-npm-package { };
|
||||
|
||||
@@ -14037,6 +14041,8 @@ with pkgs;
|
||||
|
||||
zerofree = callPackage ../tools/filesystems/zerofree { };
|
||||
|
||||
zet = callPackage ../tools/text/zet { };
|
||||
|
||||
zfp = callPackage ../tools/compression/zfp { };
|
||||
|
||||
zfs-autobackup = callPackage ../tools/backup/zfs-autobackup { };
|
||||
@@ -35659,7 +35665,7 @@ with pkgs;
|
||||
angband = callPackage ../games/angband { };
|
||||
|
||||
anki = callPackage ../games/anki {
|
||||
inherit (darwin.apple_sdk.frameworks) CoreAudio;
|
||||
inherit (darwin.apple_sdk.frameworks) AVKit CoreAudio;
|
||||
};
|
||||
anki-bin = callPackage ../games/anki/bin.nix { };
|
||||
|
||||
|
||||
Reference in New Issue
Block a user