Merge remote-tracking branch 'origin/master' into staging-next

Fixed conflict in pkgs/applications/graphics/krita/

krita: 5.1.5 -> 5.2.0
7a40fdc288
, and
treewide: use kde mirror everywhere, don't use pname in download urls
aa15f5066d
This commit is contained in:
Fabián Heredia Montiel 2023-12-04 17:44:17 -06:00
commit 5b8deaceca
413 changed files with 9421 additions and 4081 deletions

3
.github/CODEOWNERS vendored
View file

@ -105,6 +105,9 @@
/nixos/lib/systemd-*.nix @NixOS/systemd
/pkgs/os-specific/linux/systemd @NixOS/systemd
# Systemd-boot
/nixos/modules/system/boot/loader/systemd-boot @JulienMalka
# Images and installer media
/nixos/modules/installer/cd-dvd/ @samueldr
/nixos/modules/installer/sd-card/ @samueldr

View file

@ -40,7 +40,7 @@ Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.
output here
```
### Priorities
---
Add a :+1: [reaction] to [issues you find important].

View file

@ -38,7 +38,7 @@ Please run `nix-shell -p nix-info --run "nix-info -m"` and paste the result.
output here
```
### Priorities
---
Add a :+1: [reaction] to [issues you find important].

View file

@ -30,7 +30,7 @@ assignees: ''
[open documentation issues]: https://github.com/NixOS/nixpkgs/issues?q=is%3Aissue+is%3Aopen+label%3A%229.needs%3A+documentation%22
[open documentation pull requests]: https://github.com/NixOS/nixpkgs/pulls?q=is%3Aopen+is%3Apr+label%3A%228.has%3A+documentation%22%2C%226.topic%3A+documentation%22
### Priorities
---
Add a :+1: [reaction] to [issues you find important].

View file

@ -27,7 +27,7 @@ There's a high chance that you'll have the new version right away while helping
Note for maintainers: Please tag this issue in your PR.
**Priorities**
---
Add a :+1: [reaction] to [issues you find important].

View file

@ -18,7 +18,7 @@ assignees: ''
* license: mit, bsd, gpl2+ , ...
* platforms: unix, linux, darwin, ...
**Priorities**
---
Add a :+1: [reaction] to [issues you find important].

View file

@ -86,7 +86,7 @@ nix log $(nix path-info --derivation nixpkgs#<package>)
(please share the relevant fragment of the diffoscope output here, and any
additional analysis you may have done)
### Priorities
---
Add a :+1: [reaction] to [issues you find important].

View file

@ -41,7 +41,7 @@ List of open PRs: https://github.com/NixOS/nixpkgs/pulls
Reviewing guidelines: https://nixos.org/manual/nixpkgs/unstable/#chap-reviewing-contributions
-->
### Priorities
---
Add a :+1: [reaction] to [pull requests you find important].

View file

@ -12253,7 +12253,7 @@
moni = {
email = "lythe1107@gmail.com";
matrix = "@fortuneteller2k:matrix.org";
github = "moni";
github = "moni-dz";
githubId = 20619776;
name = "moni";
};
@ -13949,6 +13949,18 @@
githubId = 6931743;
name = "pasqui23";
};
passivelemon = {
email = "jeremyseber@gmail.com";
github = "PassiveLemon";
githubId = 72527881;
name = "PassiveLemon";
};
patricksjackson = {
email = "patrick@jackson.dev";
github = "patricksjackson";
githubId = 160646;
name = "Patrick Jackson";
};
patryk27 = {
email = "pwychowaniec@pm.me";
github = "Patryk27";
@ -17272,6 +17284,12 @@
githubId = 327943;
name = "Scott Zhu Reeves";
};
starzation = {
email = "nixpkgs@starzation.net";
github = "starzation";
githubId = 145975416;
name = "Starzation";
};
stasjok = {
name = "Stanislav Asunkin";
email = "nixpkgs@stasjok.ru";
@ -18790,6 +18808,11 @@
githubId = 347983;
name = "Udo Spallek";
};
ufUNnxagpM = {
github = "ufUNnxagpM";
githubId = 12422133;
name = "Chromo-residuum-opec";
};
ulrikstrid = {
email = "ulrik.strid@outlook.com";
github = "ulrikstrid";
@ -19777,6 +19800,12 @@
githubId = 3992240;
name = "Elijah Rum";
};
x0ba = {
name = "x0ba";
email = "dax@omg.lol";
github = "x0ba";
githubId = 64868985;
};
x3ro = {
name = "^x3ro";
email = "nix@x3ro.dev";

View file

@ -382,22 +382,22 @@ data BuildState
icon :: BuildState -> Text
icon = \case
Failed -> ":x:"
DependencyFailed -> ":heavy_exclamation_mark:"
OutputLimitExceeded -> ":warning:"
Failed -> ""
DependencyFailed -> ""
OutputLimitExceeded -> "⚠️"
Unknown x -> "unknown code " <> showT x
TimedOut -> ":hourglass::no_entry_sign:"
Canceled -> ":no_entry_sign:"
Unfinished -> ":hourglass_flowing_sand:"
HydraFailure -> ":construction:"
Success -> ":heavy_check_mark:"
TimedOut -> "⌛🚫"
Canceled -> "🚫"
Unfinished -> ""
HydraFailure -> "🚧"
Success -> ""
platformIcon :: Platform -> Text
platformIcon (Platform x) = case x of
"x86_64-linux" -> ":penguin:"
"aarch64-linux" -> ":iphone:"
"x86_64-darwin" -> ":apple:"
"aarch64-darwin" -> ":green_apple:"
"x86_64-linux" -> "🐧"
"aarch64-linux" -> "📱"
"x86_64-darwin" -> "🍎"
"aarch64-darwin" -> "🍏"
_ -> x
platformIsOS :: OS -> Platform -> Bool
@ -626,7 +626,7 @@ printBuildSummary eval@Eval{id} fetchTime summary topBrokenRdeps =
<> optionalHideableList "#### Unmaintained packages with failed dependency" (unmaintainedList (failedDeps summary))
<> optionalHideableList "#### Unmaintained packages with unknown error" (unmaintainedList (unknownErr summary))
<> optionalHideableList "#### Top 50 broken packages, sorted by number of reverse dependencies" (brokenLine <$> topBrokenRdeps)
<> ["","*:arrow_heading_up:: The number of packages that depend (directly or indirectly) on this package (if any). If two numbers are shown the first (lower) number considers only packages which currently have enabled hydra jobs, i.e. are not marked broken. The second (higher) number considers all packages.*",""]
<> ["","*⤴️: The number of packages that depend (directly or indirectly) on this package (if any). If two numbers are shown the first (lower) number considers only packages which currently have enabled hydra jobs, i.e. are not marked broken. The second (higher) number considers all packages.*",""]
<> footer
where
footer = ["*Report generated with [maintainers/scripts/haskell/hydra-report.hs](https://github.com/NixOS/nixpkgs/blob/haskell-updates/maintainers/scripts/haskell/hydra-report.hs)*"]
@ -651,7 +651,7 @@ printBuildSummary eval@Eval{id} fetchTime summary topBrokenRdeps =
brokenLine :: (PkgName, Int) -> Text
brokenLine (PkgName name, rdeps) =
"[" <> name <> "](https://packdeps.haskellers.com/reverse/" <> name <>
") :arrow_heading_up: " <> Text.pack (show rdeps) <> " "
") ⤴️ " <> Text.pack (show rdeps) <> " "
numSummary = statusToNumSummary summary
@ -733,7 +733,7 @@ printBuildSummary eval@Eval{id} fetchTime summary topBrokenRdeps =
, Text.pack
( if summaryReverseDeps entry > 0
then
" :arrow_heading_up: " <> show (summaryUnbrokenReverseDeps entry) <>
" ⤴️ " <> show (summaryUnbrokenReverseDeps entry) <>
" | " <> show (summaryReverseDeps entry)
else ""
)
@ -750,9 +750,9 @@ printBuildSummary eval@Eval{id} fetchTime summary topBrokenRdeps =
)
tldr = case (errors, warnings) of
([],[]) -> [":green_circle: **Ready to merge** (if there are no [evaluation errors](https://hydra.nixos.org/jobset/nixpkgs/haskell-updates))"]
([],_) -> [":yellow_circle: **Potential issues** (and possibly [evaluation errors](https://hydra.nixos.org/jobset/nixpkgs/haskell-updates))"]
_ -> [":red_circle: **Branch not mergeable**"]
([],[]) -> ["🟢 **Ready to merge** (if there are no [evaluation errors](https://hydra.nixos.org/jobset/nixpkgs/haskell-updates))"]
([],_) -> ["🟡 **Potential issues** (and possibly [evaluation errors](https://hydra.nixos.org/jobset/nixpkgs/haskell-updates))"]
_ -> ["🔴 **Branch not mergeable**"]
warnings =
if' (Unfinished > maybe Success worstState maintainedJob) "`maintained` jobset failed." <>
if' (Unfinished == maybe Success worstState mergeableJob) "`mergeable` jobset is not finished." <>

View file

@ -17,6 +17,7 @@ dkjson,,,,,,
fennel,,,,,,misterio77
fifo,,,,,,
fluent,,,,,,alerque
fzy,,,,,,mrcjkb
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
haskell-tools.nvim,,,,,,
http,,,,0.3-0,,vcunat

1 name src ref server version luaversion maintainers
17 fennel misterio77
18 fifo
19 fluent alerque
20 fzy mrcjkb
21 gitsigns.nvim https://github.com/lewis6991/gitsigns.nvim.git 5.1
22 haskell-tools.nvim
23 http 0.3-0 vcunat

View file

@ -317,6 +317,7 @@ with lib.maintainers; {
das-g
imincik
nh2
nialov
sikmir
willcohen
];

View file

@ -42,8 +42,12 @@ boot.loader.grub.enableCryptodisk = true;
## FIDO2 {#sec-luks-file-systems-fido2}
NixOS also supports unlocking your LUKS-Encrypted file system using a
FIDO2 compatible token. In the following example, we will create a new
NixOS also supports unlocking your LUKS-Encrypted file system using a FIDO2
compatible token.
### Without systemd in initrd {#sec-luks-file-systems-fido2-legacy}
In the following example, we will create a new
FIDO2 credential and add it as a new key to our existing device
`/dev/sda2`:
@ -75,3 +79,37 @@ as [Trezor](https://trezor.io/).
```nix
boot.initrd.luks.devices."/dev/sda2".fido2.passwordLess = true;
```
### systemd Stage 1 {#sec-luks-file-systems-fido2-systemd}
If systemd stage 1 is enabled, it handles unlocking of LUKS-enrypted volumes
during boot. The following example enables systemd stage1 and adds support for
unlocking the existing LUKS2 volume `root` using any enrolled FIDO2 compatible
tokens.
```nix
boot.initrd = {
luks.devices.root = {
crypttabExtraOpts = [ "fido2-device=auto" ];
device = "/dev/sda2";
};
systemd.enable = true;
};
```
All tokens that should be used for unlocking the LUKS2-encrypted volume must
first be enrolled using [systemd-cryptenroll](https://www.freedesktop.org/software/systemd/man/systemd-cryptenroll.html).
In the following example, a new key slot for the first discovered token is
added to the LUKS volume.
```ShellSession
# systemd-cryptenroll --fido2-device=auto /dev/sda2
```
Existing key slots are left intact, unless `--wipe-slot=` is specified. It is
recommened to add a recovery key that should be stored in a secure physical
location and can be entered wherever a password would be entered.
```ShellSession
# systemd-cryptenroll --recovery-key /dev/sda2
```

View file

@ -71,7 +71,9 @@ Make sure to also check the many updates in the [Nixpkgs library](#sec-release-2
- `services.mastodon` doesn't support providing a TCP port to its `streaming`
component anymore, as upstream implemented parallelization by running
multiple instances instead of running multiple processes in one instance.
Please create a PR if you are interested in this feature.
Please create a PR if you are interested in this feature.\
Due to this, the desired number of such instances
{option}`services.mastodon.streamingProcesses` now needs to be declared explicitly.
- The `services.hostapd` module was rewritten to support `passwordFile` like
options, WPA3-SAE, and management of multiple interfaces. This breaks

View file

@ -14,9 +14,12 @@ In addition to numerous new and upgraded packages, this release has the followin
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- [Guix](https://guix.gnu.org), a functional package manager inspired by Nix. Available as [services.guix](#opt-services.guix.enable).
- [maubot](https://github.com/maubot/maubot), a plugin-based Matrix bot framework. Available as [services.maubot](#opt-services.maubot.enable).
- [Anki Sync Server](https://docs.ankiweb.net/sync-server.html), the official sync server built into recent versions of Anki. Available as [services.anki-sync-server](#opt-services.anki-sync-server.enable).
The pre-existing [services.ankisyncd](#opt-services.ankisyncd.enable) has been marked deprecated and will be dropped after 24.05 due to lack of maintenance of the anki-sync-server softwares.
- [Clevis](https://github.com/latchset/clevis), a pluggable framework for automated decryption, used to unlock encrypted devices in initrd. Available as [boot.initrd.clevis.enable](#opt-boot.initrd.clevis.enable).
@ -31,6 +34,8 @@ In addition to numerous new and upgraded packages, this release has the followin
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
- `addDriverRunpath` has been added to facilitate the deprecation of the old `addOpenGLRunpath` setuphook. This change is motivated by the evolution of the setuphook to include all hardware acceleration.
- Cinnamon has been updated to 6.0. Please beware that the [Wayland session](https://blog.linuxmint.com/?p=4591) is still experimental in this release.
- Programs written in [Nim](https://nim-lang.org/) are built with libraries selected by lockfiles.
@ -49,3 +54,6 @@ In addition to numerous new and upgraded packages, this release has the followin
- New instances of Gitea using MySQL now ignore the `[database].CHARSET` config option and always use the `utf8mb4` charset, existing instances should migrate via the `gitea doctor convert` CLI command.
- The `hardware.pulseaudio` module now sets permission of pulse user home directory to 755 when running in "systemWide" mode. It fixes [issue 114399](https://github.com/NixOS/nixpkgs/issues/114399).
- QtMultimedia has changed its default backend to `QT_MEDIA_BACKEND=ffmpeg` (previously `gstreamer` on Linux or `darwin` on MacOS).
The previous native backends remain available but are now minimally maintained. Refer to [upstream documentation](https://doc.qt.io/qt-6/qtmultimedia-index.html#ffmpeg-as-the-default-backend) for further details about each platform.

View file

@ -684,6 +684,7 @@
./services/misc/gollum.nix
./services/misc/gpsd.nix
./services/misc/greenclip.nix
./services/misc/guix
./services/misc/headphones.nix
./services/misc/heisenbridge.nix
./services/misc/homepage-dashboard.nix

View file

@ -1,193 +1,144 @@
{ config, lib, pkgs, ... }:
{ config, lib, options, pkgs, ... }: # XXX migration code for freeform settings: `options` can be removed in 2025
let optionsGlobal = options; in
let
inherit (builtins) length map;
inherit (lib.attrsets) attrNames filterAttrs hasAttr mapAttrs mapAttrsToList optionalAttrs;
inherit (lib.attrsets) attrNames attrValues mapAttrsToList removeAttrs;
inherit (lib.lists) all allUnique concatLists elem isList map;
inherit (lib.modules) mkDefault mkIf;
inherit (lib.options) literalExpression mkEnableOption mkOption mkPackageOption;
inherit (lib.strings) concatLines optionalString toLower;
inherit (lib.types) addCheck attrsOf lines nonEmptyStr nullOr package path port str strMatching submodule;
inherit (lib.options) mkEnableOption mkOption mkPackageOption;
inherit (lib.strings) concatLines match optionalString toLower;
inherit (lib.trivial) isInt;
inherit (lib.types) addCheck attrsOf coercedTo either enum int lines listOf nonEmptyStr nullOr oneOf path port singleLineStr strMatching submodule;
# Checks if given list of strings contains unique
# elements when compared without considering case.
# Type: checkIUnique :: [string] -> bool
# Example: checkIUnique ["foo" "Foo"] => false
checkIUnique = lst:
let
lenUniq = l: length (lib.lists.unique l);
in
lenUniq lst == lenUniq (map toLower lst);
scalarType =
# see the option's description below for the
# handling/transformation of each possible type
oneOf [ (enum [ true null ]) int path singleLineStr ];
# TSM rejects servername strings longer than 64 chars.
servernameType = strMatching ".{1,64}";
servernameType = strMatching "[^[:space:]]{1,64}";
serverOptions = { name, config, ... }: {
options.name = mkOption {
freeformType = attrsOf (either scalarType (listOf scalarType));
# Client system-options file directives are explained here:
# https://www.ibm.com/docs/en/storage-protect/8.1.20?topic=commands-processing-options
options.servername = mkOption {
type = servernameType;
default = name;
example = "mainTsmServer";
description = lib.mdDoc ''
Local name of the IBM TSM server,
must be uncapitalized and no longer than 64 chars.
The value will be used for the
`server`
directive in {file}`dsm.sys`.
must not contain space or more than 64 chars.
'';
};
options.server = mkOption {
options.tcpserveraddress = mkOption {
type = nonEmptyStr;
example = "tsmserver.company.com";
description = lib.mdDoc ''
Host/domain name or IP address of the IBM TSM server.
The value will be used for the
`tcpserveraddress`
directive in {file}`dsm.sys`.
'';
};
options.port = mkOption {
options.tcpport = mkOption {
type = addCheck port (p: p<=32767);
default = 1500; # official default
description = lib.mdDoc ''
TCP port of the IBM TSM server.
The value will be used for the
`tcpport`
directive in {file}`dsm.sys`.
TSM does not support ports above 32767.
'';
};
options.node = mkOption {
options.nodename = mkOption {
type = nonEmptyStr;
example = "MY-TSM-NODE";
description = lib.mdDoc ''
Target node name on the IBM TSM server.
The value will be used for the
`nodename`
directive in {file}`dsm.sys`.
'';
};
options.genPasswd = mkEnableOption (lib.mdDoc ''
automatic client password generation.
This option influences the
`passwordaccess`
directive in {file}`dsm.sys`.
This option does *not* cause a line in
{file}`dsm.sys` by itself, but generates a
corresponding `passwordaccess` directive.
The password will be stored in the directory
given by the option {option}`passwdDir`.
given by the option {option}`passworddir`.
*Caution*:
If this option is enabled and the server forces
to renew the password (e.g. on first connection),
a random password will be generated and stored
'');
options.passwdDir = mkOption {
type = path;
options.passwordaccess = mkOption {
type = enum [ "generate" "prompt" ];
visible = false;
};
options.passworddir = mkOption {
type = nullOr path;
default = null;
example = "/home/alice/tsm-password";
description = lib.mdDoc ''
Directory that holds the TSM
node's password information.
The value will be used for the
`passworddir`
directive in {file}`dsm.sys`.
'';
};
options.includeExclude = mkOption {
type = lines;
default = "";
options.inclexcl = mkOption {
type = coercedTo lines
(pkgs.writeText "inclexcl.dsm.sys")
(nullOr path);
default = null;
example = ''
exclude.dir /nix/store
include.encrypt /home/.../*
'';
description = lib.mdDoc ''
`include.*` and
`exclude.*` directives to be
used when sending files to the IBM TSM server.
The lines will be written into a file that the
`inclexcl`
directive in {file}`dsm.sys` points to.
Text lines with `include.*` and `exclude.*` directives
to be used when sending files to the IBM TSM server,
or an absolute path pointing to a file with such lines.
'';
};
options.extraConfig = mkOption {
# TSM option keys are case insensitive;
# we have to ensure there are no keys that
# differ only by upper and lower case.
type = addCheck
(attrsOf (nullOr str))
(attrs: checkIUnique (attrNames attrs));
default = {};
example.compression = "yes";
example.passwordaccess = null;
description = lib.mdDoc ''
Additional key-value pairs for the server stanza.
Values must be strings, or `null`
for the key not to be used in the stanza
(e.g. to overrule values generated by other options).
'';
};
options.text = mkOption {
type = lines;
example = literalExpression
''lib.modules.mkAfter "compression no"'';
description = lib.mdDoc ''
Additional text lines for the server stanza.
This option can be used if certion configuration keys
must be used multiple times or ordered in a certain way
as the {option}`extraConfig` option can't
control the order of lines in the resulting stanza.
Note that the `server`
line at the beginning of the stanza is
not part of this option's value.
'';
};
options.stanza = mkOption {
type = str;
internal = true;
visible = false;
description = lib.mdDoc "Server stanza text generated from the options.";
};
config.name = mkDefault name;
# Client system-options file directives are explained here:
# https://www.ibm.com/docs/en/spectrum-protect/8.1.13?topic=commands-processing-options
config.extraConfig =
mapAttrs (lib.trivial.const mkDefault) (
{
commmethod = "v6tcpip"; # uses v4 or v6, based on dns lookup result
tcpserveraddress = config.server;
tcpport = builtins.toString config.port;
nodename = config.node;
passwordaccess = if config.genPasswd then "generate" else "prompt";
passworddir = ''"${config.passwdDir}"'';
} // optionalAttrs (config.includeExclude!="") {
inclexcl = ''"${pkgs.writeText "inclexcl.dsm.sys" config.includeExclude}"'';
}
);
config.text =
let
attrset = filterAttrs (k: v: v!=null) config.extraConfig;
mkLine = k: v: k + optionalString (v!="") " ${v}";
lines = mapAttrsToList mkLine attrset;
in
concatLines lines;
config.stanza = ''
server ${config.name}
${config.text}
'';
config.commmethod = mkDefault "v6tcpip"; # uses v4 or v6, based on dns lookup result
config.passwordaccess = if config.genPasswd then "generate" else "prompt";
# XXX migration code for freeform settings, these can be removed in 2025:
options.warnings = optionsGlobal.warnings;
options.assertions = optionsGlobal.assertions;
imports = let inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule; in [
(mkRemovedOptionModule [ "extraConfig" ] "Please just add options directly to the server attribute set, cf. the description of `programs.tsmClient.servers`.")
(mkRemovedOptionModule [ "text" ] "Please just add options directly to the server attribute set, cf. the description of `programs.tsmClient.servers`.")
(mkRenamedOptionModule [ "name" ] [ "servername" ])
(mkRenamedOptionModule [ "server" ] [ "tcpserveraddress" ])
(mkRenamedOptionModule [ "port" ] [ "tcpport" ])
(mkRenamedOptionModule [ "node" ] [ "nodename" ])
(mkRenamedOptionModule [ "passwdDir" ] [ "passworddir" ])
(mkRenamedOptionModule [ "includeExclude" ] [ "inclexcl" ])
];
};
options.programs.tsmClient = {
enable = mkEnableOption (lib.mdDoc ''
IBM Spectrum Protect (Tivoli Storage Manager, TSM)
IBM Storage Protect (Tivoli Storage Manager, TSM)
client command line applications with a
client system-options file "dsm.sys"
'');
servers = mkOption {
type = attrsOf (submodule [ serverOptions ]);
type = attrsOf (submodule serverOptions);
default = {};
example.mainTsmServer = {
server = "tsmserver.company.com";
node = "MY-TSM-NODE";
extraConfig.compression = "yes";
tcpserveraddress = "tsmserver.company.com";
nodename = "MY-TSM-NODE";
compression = "yes";
};
description = lib.mdDoc ''
Server definitions ("stanzas")
for the client system-options file.
The name of each entry will be used for
the internal `servername` by default.
Each attribute will be transformed into a line
with a key-value pair within the server's stanza.
Integers as values will be
canonically turned into strings.
The boolean value `true` will be turned
into a line with just the attribute's name.
The value `null` will not generate a line.
A list as values generates an entry for
each value, according to the rules above.
'';
};
defaultServername = mkOption {
@ -222,45 +173,107 @@ let
to add paths to the client system-options file.
'';
};
wrappedPackage = mkOption {
type = package;
readOnly = true;
description = lib.mdDoc ''
The TSM client derivation, wrapped with the path
to the client system-options file "dsm.sys".
This option is to provide the effective derivation
wrappedPackage = mkPackageOption pkgs "tsm-client" {
default = null;
extraDescription = ''
This option is to provide the effective derivation,
wrapped with the path to the
client system-options file "dsm.sys".
It should not be changed, but exists
for other modules that want to call TSM executables.
'';
};
} // { readOnly = true; };
};
cfg = config.programs.tsmClient;
servernames = map (s: s.servername) (attrValues cfg.servers);
assertions = [
{
assertion = checkIUnique (mapAttrsToList (k: v: v.name) cfg.servers);
assertions =
[
{
assertion = allUnique (map toLower servernames);
message = ''
TSM server names
(option `programs.tsmClient.servers`)
contain duplicate name
(note that server names are case insensitive).
'';
}
{
assertion = (cfg.defaultServername!=null)->(elem cfg.defaultServername servernames);
message = ''
TSM default server name
`programs.tsmClient.defaultServername="${cfg.defaultServername}"`
not found in server names in
`programs.tsmClient.servers`.
'';
}
] ++ (mapAttrsToList (name: serverCfg: {
assertion = all (key: null != match "[^[:space:]]+" key) (attrNames serverCfg);
message = ''
TSM servernames contain duplicate name
(note that case doesn't matter!)
TSM server setting names in
`programs.tsmClient.servers.${name}.*`
contain spaces, but that's not allowed.
'';
}) cfg.servers) ++ (mapAttrsToList (name: serverCfg: {
assertion = allUnique (map toLower (attrNames serverCfg));
message = ''
TSM server setting names in
`programs.tsmClient.servers.${name}.*`
contain duplicate names
(note that setting names are case insensitive).
'';
}) cfg.servers)
# XXX migration code for freeform settings, this can be removed in 2025:
++ (enrichMigrationInfos "assertions" (addText: { assertion, message }: { inherit assertion; message = addText message; }));
makeDsmSysLines = key: value:
# Turn a key-value pair from the server options attrset
# into zero (value==null), one (scalar value) or
# more (value is list) configuration stanza lines.
if isList value then map (makeDsmSysLines key) value else # recurse into list
if value == null then [ ] else # skip `null` value
[ (" ${key}${
if value == true then "" else # just output key if value is `true`
if isInt value then " ${builtins.toString value}" else
if path.check value then " \"${value}\"" else # enclose path in ".."
if singleLineStr.check value then " ${value}" else
throw "assertion failed: cannot convert type" # should never happen
}") ];
makeDsmSysStanza = {servername, ... }@serverCfg:
let
# drop special values that should not go into server config block
attrs = removeAttrs serverCfg [ "servername" "genPasswd"
# XXX migration code for freeform settings, these can be removed in 2025:
"assertions" "warnings"
"extraConfig" "text"
"name" "server" "port" "node" "passwdDir" "includeExclude"
];
in
''
servername ${servername}
${concatLines (concatLists (mapAttrsToList makeDsmSysLines attrs))}
'';
}
{
assertion = (cfg.defaultServername!=null)->(hasAttr cfg.defaultServername cfg.servers);
message = "TSM defaultServername not found in list of servers";
}
];
dsmSysText = ''
**** IBM Spectrum Protect (Tivoli Storage Manager)
**** IBM Storage Protect (Tivoli Storage Manager)
**** client system-options file "dsm.sys".
**** Do not edit!
**** This file is generated by NixOS configuration.
${optionalString (cfg.defaultServername!=null) "defaultserver ${cfg.defaultServername}"}
${concatLines (mapAttrsToList (k: v: v.stanza) cfg.servers)}
${concatLines (map makeDsmSysStanza (attrValues cfg.servers))}
'';
# XXX migration code for freeform settings, this can be removed in 2025:
enrichMigrationInfos = what: how: concatLists (
mapAttrsToList
(name: serverCfg: map (how (text: "In `programs.tsmClient.servers.${name}`: ${text}")) serverCfg."${what}")
cfg.servers
);
in
{
@ -275,6 +288,8 @@ in
dsmSysApi = dsmSysCli;
};
environment.systemPackages = [ cfg.wrappedPackage ];
# XXX migration code for freeform settings, this can be removed in 2025:
warnings = enrichMigrationInfos "warnings" (addText: addText);
};
meta.maintainers = [ lib.maintainers.yarny ];

View file

@ -3,6 +3,7 @@
let
inherit (lib.attrsets) hasAttr;
inherit (lib.meta) getExe';
inherit (lib.modules) mkDefault mkIf;
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) nonEmptyStr nullOr;
@ -10,7 +11,7 @@ let
options.services.tsmBackup = {
enable = mkEnableOption (lib.mdDoc ''
automatic backups with the
IBM Spectrum Protect (Tivoli Storage Manager, TSM) client.
IBM Storage Protect (Tivoli Storage Manager, TSM) client.
This also enables
{option}`programs.tsmClient.enable`
'');
@ -78,10 +79,10 @@ in
config = mkIf cfg.enable {
inherit assertions;
programs.tsmClient.enable = true;
programs.tsmClient.servers.${cfg.servername}.passwdDir =
programs.tsmClient.servers.${cfg.servername}.passworddir =
mkDefault "/var/lib/tsm-backup/password";
systemd.services.tsm-backup = {
description = "IBM Spectrum Protect (Tivoli Storage Manager) Backup";
description = "IBM Storage Protect (Tivoli Storage Manager) Backup";
# DSM_LOG needs a trailing slash to have it treated as a directory.
# `/var/log` would be littered with TSM log files otherwise.
environment.DSM_LOG = "/var/log/tsm-backup/";
@ -89,12 +90,12 @@ in
environment.HOME = "/var/lib/tsm-backup";
serviceConfig = {
# for exit status description see
# https://www.ibm.com/docs/en/spectrum-protect/8.1.13?topic=clients-client-return-codes
# https://www.ibm.com/docs/en/storage-protect/8.1.20?topic=clients-client-return-codes
SuccessExitStatus = "4 8";
# The `-se` option must come after the command.
# The `-optfile` option suppresses a `dsm.opt`-not-found warning.
ExecStart =
"${cfgPrg.wrappedPackage}/bin/dsmc ${cfg.command} -se='${cfg.servername}' -optfile=/dev/null";
"${getExe' cfgPrg.wrappedPackage "dsmc"} ${cfg.command} -se='${cfg.servername}' -optfile=/dev/null";
LogsDirectory = "tsm-backup";
StateDirectory = "tsm-backup";
StateDirectoryMode = "0750";

View file

@ -128,9 +128,7 @@ in {
'';
};
package = mkPackageOption pkgs "python3Packages.buildbot-worker" {
example = "python2Packages.buildbot-worker";
};
package = mkPackageOption pkgs "buildbot-worker" { };
packages = mkOption {
default = with pkgs; [ git ];

View file

@ -217,6 +217,8 @@ in {
systemd.services = {
thinkfan.environment.THINKFAN_ARGS = escapeShellArgs ([ "-c" configFile ] ++ cfg.extraArgs);
thinkfan.serviceConfig.Restart = "on-failure";
thinkfan.serviceConfig.RestartSec = "30s";
# must be added manually, see issue #81138
thinkfan.wantedBy = [ "multi-user.target" ];

View file

@ -46,6 +46,12 @@ in
};
config = mkIf cfg.enable {
warnings = [
''
`services.ankisyncd` has been replaced by `services.anki-sync-server` and will be removed after
24.05 because anki-sync-server(-rs and python) are not maintained.
''
];
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.port ];
systemd.services.ankisyncd = {

View file

@ -0,0 +1,394 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.guix;
package = cfg.package.override { inherit (cfg) stateDir storeDir; };
guixBuildUser = id: {
name = "guixbuilder${toString id}";
group = cfg.group;
extraGroups = [ cfg.group ];
createHome = false;
description = "Guix build user ${toString id}";
isSystemUser = true;
};
guixBuildUsers = numberOfUsers:
builtins.listToAttrs (map
(user: {
name = user.name;
value = user;
})
(builtins.genList guixBuildUser numberOfUsers));
# A set of Guix user profiles to be linked at activation.
guixUserProfiles = {
# The current Guix profile that is created through `guix pull`.
"current-guix" = "\${XDG_CONFIG_HOME}/guix/current";
# The default Guix profile similar to $HOME/.nix-profile from Nix.
"guix-profile" = "$HOME/.guix-profile";
};
# All of the Guix profiles to be used.
guixProfiles = lib.attrValues guixUserProfiles;
serviceEnv = {
GUIX_LOCPATH = "${cfg.stateDir}/guix/profiles/per-user/root/guix-profile/lib/locale";
LC_ALL = "C.UTF-8";
};
in
{
meta.maintainers = with lib.maintainers; [ foo-dogsquared ];
options.services.guix = with lib; {
enable = mkEnableOption "Guix build daemon service";
group = mkOption {
type = types.str;
default = "guixbuild";
example = "guixbuild";
description = ''
The group of the Guix build user pool.
'';
};
nrBuildUsers = mkOption {
type = types.ints.unsigned;
description = ''
Number of Guix build users to be used in the build pool.
'';
default = 10;
example = 20;
};
extraArgs = mkOption {
type = with types; listOf str;
default = [ ];
example = [ "--max-jobs=4" "--debug" ];
description = ''
Extra flags to pass to the Guix daemon service.
'';
};
package = mkPackageOption pkgs "guix" {
extraDescription = ''
It should contain {command}`guix-daemon` and {command}`guix`
executable.
'';
};
storeDir = mkOption {
type = types.path;
default = "/gnu/store";
description = ''
The store directory where the Guix service will serve to/from. Take
note Guix cannot take advantage of substitutes if you set it something
other than {file}`/gnu/store` since most of the cached builds are
assumed to be in there.
::: {.warning}
This will also recompile all packages because the normal cache no
longer applies.
:::
'';
};
stateDir = mkOption {
type = types.path;
default = "/var";
description = ''
The state directory where Guix service will store its data such as its
user-specific profiles, cache, and state files.
::: {.warning}
Changing it to something other than the default will rebuild the
package.
:::
'';
example = "/gnu/var";
};
publish = {
enable = mkEnableOption "substitute server for your Guix store directory";
generateKeyPair = mkOption {
type = types.bool;
description = ''
Whether to generate signing keys in {file}`/etc/guix` which are
required to initialize a substitute server. Otherwise,
`--public-key=$FILE` and `--private-key=$FILE` can be passed in
{option}`services.guix.publish.extraArgs`.
'';
default = true;
example = false;
};
port = mkOption {
type = types.port;
default = 8181;
example = 8200;
description = ''
Port of the substitute server to listen on.
'';
};
user = mkOption {
type = types.str;
default = "guix-publish";
description = ''
Name of the user to change once the server is up.
'';
};
extraArgs = mkOption {
type = with types; listOf str;
description = ''
Extra flags to pass to the substitute server.
'';
default = [];
example = [
"--compression=zstd:6"
"--discover=no"
];
};
};
gc = {
enable = mkEnableOption "automatic garbage collection service for Guix";
extraArgs = mkOption {
type = with types; listOf str;
default = [ ];
description = ''
List of arguments to be passed to {command}`guix gc`.
When given no option, it will try to collect all garbage which is
often inconvenient so it is recommended to set [some
options](https://guix.gnu.org/en/manual/en/html_node/Invoking-guix-gc.html).
'';
example = [
"--delete-generations=1m"
"--free-space=10G"
"--optimize"
];
};
dates = lib.mkOption {
type = types.str;
default = "03:15";
example = "weekly";
description = ''
How often the garbage collection occurs. This takes the time format
from {manpage}`systemd.time(7)`.
'';
};
};
};
config = lib.mkIf cfg.enable (lib.mkMerge [
{
environment.systemPackages = [ package ];
users.users = guixBuildUsers cfg.nrBuildUsers;
users.groups.${cfg.group} = { };
# Guix uses Avahi (through guile-avahi) both for the auto-discovering and
# advertising substitute servers in the local network.
services.avahi.enable = lib.mkDefault true;
services.avahi.publish.enable = lib.mkDefault true;
services.avahi.publish.userServices = lib.mkDefault true;
# It's similar to Nix daemon so there's no question whether or not this
# should be sandboxed.
systemd.services.guix-daemon = {
environment = serviceEnv;
script = ''
${lib.getExe' package "guix-daemon"} \
--build-users-group=${cfg.group} \
${lib.escapeShellArgs cfg.extraArgs}
'';
serviceConfig = {
OOMPolicy = "continue";
RemainAfterExit = "yes";
Restart = "always";
TasksMax = 8192;
};
unitConfig.RequiresMountsFor = [
cfg.storeDir
cfg.stateDir
];
wantedBy = [ "multi-user.target" ];
};
# This is based from Nix daemon socket unit from upstream Nix package.
# Guix build daemon has support for systemd-style socket activation.
systemd.sockets.guix-daemon = {
description = "Guix daemon socket";
before = [ "multi-user.target" ];
listenStreams = [ "${cfg.stateDir}/guix/daemon-socket/socket" ];
unitConfig = {
RequiresMountsFor = [
cfg.storeDir
cfg.stateDir
];
ConditionPathIsReadWrite = "${cfg.stateDir}/guix/daemon-socket";
};
wantedBy = [ "socket.target" ];
};
systemd.mounts = [{
description = "Guix read-only store directory";
before = [ "guix-daemon.service" ];
what = cfg.storeDir;
where = cfg.storeDir;
type = "none";
options = "bind,ro";
unitConfig.DefaultDependencies = false;
wantedBy = [ "guix-daemon.service" ];
}];
# Make transferring files from one store to another easier with the usual
# case being of most substitutes from the official Guix CI instance.
system.activationScripts.guix-authorize-keys = ''
for official_server_keys in ${package}/share/guix/*.pub; do
${lib.getExe' package "guix"} archive --authorize < $official_server_keys
done
'';
# Link the usual Guix profiles to the home directory. This is useful in
# ephemeral setups where only certain part of the filesystem is
# persistent (e.g., "Erase my darlings"-type of setup).
system.userActivationScripts.guix-activate-user-profiles.text = let
linkProfileToPath = acc: profile: location: let
guixProfile = "${cfg.stateDir}/guix/profiles/per-user/\${USER}/${profile}";
in acc + ''
[ -d "${guixProfile}" ] && ln -sf "${guixProfile}" "${location}"
'';
activationScript = lib.foldlAttrs linkProfileToPath "" guixUserProfiles;
in ''
# Don't export this please! It is only expected to be used for this
# activation script and nothing else.
XDG_CONFIG_HOME=''${XDG_CONFIG_HOME:-$HOME/.config}
# Linking the usual Guix profiles into the home directory.
${activationScript}
'';
# GUIX_LOCPATH is basically LOCPATH but for Guix libc which in turn used by
# virtually every Guix-built packages. This is so that Guix-installed
# applications wouldn't use incompatible locale data and not touch its host
# system.
environment.sessionVariables.GUIX_LOCPATH = lib.makeSearchPath "lib/locale" guixProfiles;
# What Guix profiles export is very similar to Nix profiles so it is
# acceptable to list it here. Also, it is more likely that the user would
# want to use packages explicitly installed from Guix so we're putting it
# first.
environment.profiles = lib.mkBefore guixProfiles;
}
(lib.mkIf cfg.publish.enable {
systemd.services.guix-publish = {
description = "Guix remote store";
environment = serviceEnv;
# Mounts will be required by the daemon service anyways so there's no
# need add RequiresMountsFor= or something similar.
requires = [ "guix-daemon.service" ];
after = [ "guix-daemon.service" ];
partOf = [ "guix-daemon.service" ];
preStart = lib.mkIf cfg.publish.generateKeyPair ''
# Generate the keypair if it's missing.
[ -f "/etc/guix/signing-key.sec" ] && [ -f "/etc/guix/signing-key.pub" ] || \
${lib.getExe' package "guix"} archive --generate-key || {
rm /etc/guix/signing-key.*;
${lib.getExe' package "guix"} archive --generate-key;
}
'';
script = ''
${lib.getExe' package "guix"} publish \
--user=${cfg.publish.user} --port=${builtins.toString cfg.publish.port} \
${lib.escapeShellArgs cfg.publish.extraArgs}
'';
serviceConfig = {
Restart = "always";
RestartSec = 10;
ProtectClock = true;
ProtectHostname = true;
ProtectKernelTunables = true;
ProtectKernelModules = true;
ProtectControlGroups = true;
SystemCallFilter = [
"@system-service"
"@debug"
"@setuid"
];
RestrictNamespaces = true;
RestrictAddressFamilies = [
"AF_UNIX"
"AF_INET"
"AF_INET6"
];
# While the permissions can be set, it is assumed to be taken by Guix
# daemon service which it has already done the setup.
ConfigurationDirectory = "guix";
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
CapabilityBoundingSet = [
"CAP_NET_BIND_SERVICE"
"CAP_SETUID"
"CAP_SETGID"
];
};
wantedBy = [ "multi-user.target" ];
};
users.users.guix-publish = lib.mkIf (cfg.publish.user == "guix-publish") {
description = "Guix publish user";
group = config.users.groups.guix-publish.name;
isSystemUser = true;
};
users.groups.guix-publish = {};
})
(lib.mkIf cfg.gc.enable {
# This service should be handled by root to collect all garbage by all
# users.
systemd.services.guix-gc = {
description = "Guix garbage collection";
startAt = cfg.gc.dates;
script = ''
${lib.getExe' package "guix"} gc ${lib.escapeShellArgs cfg.gc.extraArgs}
'';
serviceConfig = {
Type = "oneshot";
MemoryDenyWriteExecute = true;
PrivateDevices = true;
PrivateNetworks = true;
ProtectControlGroups = true;
ProtectHostname = true;
ProtectKernelTunables = true;
SystemCallFilter = [
"@default"
"@file-system"
"@basic-io"
"@system-service"
];
};
};
systemd.timers.guix-gc.timerConfig.Persistent = true;
})
]);
}

View file

@ -264,9 +264,12 @@ in
{ assertion = cfg.database.passwordFile != null || cfg.database.socket != null;
message = "one of services.redmine.database.socket or services.redmine.database.passwordFile must be set";
}
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user && cfg.database.user == cfg.database.name;
{ assertion = cfg.database.createLocally -> cfg.database.user == cfg.user;
message = "services.redmine.database.user must be set to ${cfg.user} if services.redmine.database.createLocally is set true";
}
{ assertion = pgsqlLocal -> cfg.database.user == cfg.database.name;
message = "services.redmine.database.user and services.redmine.database.name must be the same when using a local postgresql database";
}
{ assertion = cfg.database.createLocally -> cfg.database.socket != null;
message = "services.redmine.database.socket must be set if services.redmine.database.createLocally is set to true";
}

View file

@ -55,12 +55,12 @@ in
RuntimeDirectory = "prometheus-mongodb-exporter";
ExecStart = ''
${getExe pkgs.prometheus-mongodb-exporter} \
--mongodb.uri=${cfg.uri}
--mongodb.uri="${cfg.uri}" \
${if cfg.collectAll then "--collect-all" else concatMapStringsSep " " (x: "--collect.${x}") cfg.collector} \
--collector.collstats=${concatStringsSep "," cfg.collStats} \
--collector.indexstats=${concatStringsSep "," cfg.indexStats} \
--web.listen-address=${cfg.listenAddress}:${toString cfg.port} \
--web.telemetry-path=${cfg.telemetryPath} \
${optionalString (length cfg.collStats > 0) "--mongodb.collstats-colls=${concatStringsSep "," cfg.collStats}"} \
${optionalString (length cfg.indexStats > 0) "--mongodb.indexstats-colls=${concatStringsSep "," cfg.indexStats}"} \
--web.listen-address="${cfg.listenAddress}:${toString cfg.port}" \
--web.telemetry-path="${cfg.telemetryPath}" \
${escapeShellArgs cfg.extraFlags}
'';
};

View file

@ -150,6 +150,14 @@ in
'';
};
openFirewall = mkOption {
type = types.bool;
default = false;
description = lib.mdDoc ''
Whether to automatically allow VRRP and AH packets in the firewall.
'';
};
enableScriptSecurity = mkOption {
type = types.bool;
default = false;
@ -282,6 +290,19 @@ in
assertions = flatten (map vrrpInstanceAssertions vrrpInstances);
networking.firewall = lib.mkIf cfg.openFirewall {
extraCommands = ''
# Allow VRRP and AH packets
ip46tables -A nixos-fw -p vrrp -m comment --comment "services.keepalived.openFirewall" -j ACCEPT
ip46tables -A nixos-fw -p ah -m comment --comment "services.keepalived.openFirewall" -j ACCEPT
'';
extraStopCommands = ''
ip46tables -D nixos-fw -p vrrp -m comment --comment "services.keepalived.openFirewall" -j ACCEPT
ip46tables -D nixos-fw -p ah -m comment --comment "services.keepalived.openFirewall" -j ACCEPT
'';
};
systemd.timers.keepalived-boot-delay = {
description = "Keepalive Daemon delay to avoid instant transition to MASTER state";
after = [ "network.target" "network-online.target" "syslog.target" ];

View file

@ -229,7 +229,7 @@ in {
streamingProcesses = lib.mkOption {
description = lib.mdDoc ''
Number of processes used by the mastodon-streaming service.
Recommended is the amount of your CPU cores minus one.
Please define this explicitly, recommended is the amount of your CPU cores minus one.
'';
type = lib.types.ints.positive;
example = 3;

View file

@ -102,7 +102,7 @@ in
services.mattermost = {
enable = mkEnableOption (lib.mdDoc "Mattermost chat server");
package = mkPackageOption pkgs "mattermostl" { };
package = mkPackageOption pkgs "mattermost" { };
statePath = mkOption {
type = types.str;

View file

@ -19,7 +19,7 @@ in
options.services.node-red = {
enable = mkEnableOption (lib.mdDoc "the Node-RED service");
package = mkPackageOption pkgs "node-red" { };
package = mkPackageOption pkgs "nodePackages.node-red" { };
openFirewall = mkOption {
type = types.bool;

View file

@ -338,6 +338,7 @@ in
# Enable helpful DBus services.
services.accounts-daemon.enable = true;
programs.dconf.enable = true;
# when changing an account picture the accounts-daemon reads a temporary file containing the image which systemsettings5 may place under /tmp
systemd.services.accounts-daemon.serviceConfig.PrivateTmp = false;
services.power-profiles-daemon.enable = mkDefault true;

View file

@ -17,7 +17,7 @@ let
cfgZED = config.services.zfs.zed;
selectModulePackage = package: config.boot.kernelPackages.${package.kernelModuleAttribute};
clevisDatasets = map (e: e.device) (filter (e: (hasAttr e.device config.boot.initrd.clevis.devices) && e.fsType == "zfs" && (fsNeededForBoot e)) config.system.build.fileSystems);
clevisDatasets = map (e: e.device) (filter (e: e.device != null && (hasAttr e.device config.boot.initrd.clevis.devices) && e.fsType == "zfs" && (fsNeededForBoot e)) config.system.build.fileSystems);
inInitrd = any (fs: fs == "zfs") config.boot.initrd.supportedFilesystems;
@ -157,7 +157,7 @@ let
poolImported "${pool}" || poolImport "${pool}" # Try one last time, e.g. to import a degraded pool.
fi
if poolImported "${pool}"; then
${concatMapStringsSep "\n" (elem: "clevis decrypt < /etc/clevis/${elem}.jwe | zfs load-key ${elem} || true ") (filter (p: (elemAt (splitString "/" p) 0) == pool) clevisDatasets)}
${optionalString config.boot.initrd.clevis.enable (concatMapStringsSep "\n" (elem: "clevis decrypt < /etc/clevis/${elem}.jwe | zfs load-key ${elem} || true ") (filter (p: (elemAt (splitString "/" p) 0) == pool) clevisDatasets))}
${optionalString keyLocations.hasKeys ''
@ -630,7 +630,7 @@ in
poolImported "${pool}" || poolImport "${pool}" # Try one last time, e.g. to import a degraded pool.
fi
${concatMapStringsSep "\n" (elem: "clevis decrypt < /etc/clevis/${elem}.jwe | zfs load-key ${elem}") (filter (p: (elemAt (splitString "/" p) 0) == pool) clevisDatasets)}
${optionalString config.boot.initrd.clevis.enable (concatMapStringsSep "\n" (elem: "clevis decrypt < /etc/clevis/${elem}.jwe | zfs load-key ${elem}") (filter (p: (elemAt (splitString "/" p) 0) == pool) clevisDatasets))}
${if isBool cfgZfs.requestEncryptionCredentials
then optionalString cfgZfs.requestEncryptionCredentials ''

View file

@ -359,6 +359,7 @@ in {
grow-partition = runTest ./grow-partition.nix;
grub = handleTest ./grub.nix {};
guacamole-server = handleTest ./guacamole-server.nix {};
guix = handleTest ./guix {};
gvisor = handleTest ./gvisor.nix {};
hadoop = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop; };
hadoop_3_2 = import ./hadoop { inherit handleTestOn; package=pkgs.hadoop_3_2; };

View file

@ -0,0 +1,38 @@
# Take note the Guix store directory is empty. Also, we're trying to prevent
# Guix from trying to downloading substitutes because of the restricted
# access (assuming it's in a sandboxed environment).
#
# So this test is what it is: a basic test while trying to use Guix as much as
# we possibly can (including the API) without triggering its download alarm.
import ../make-test-python.nix ({ lib, pkgs, ... }: {
name = "guix-basic";
meta.maintainers = with lib.maintainers; [ foo-dogsquared ];
nodes.machine = { config, ... }: {
environment.etc."guix/scripts".source = ./scripts;
services.guix.enable = true;
};
testScript = ''
import pathlib
machine.wait_for_unit("multi-user.target")
machine.wait_for_unit("guix-daemon.service")
# Can't do much here since the environment has restricted network access.
with subtest("Guix basic package management"):
machine.succeed("guix build --dry-run --verbosity=0 hello")
machine.succeed("guix show hello")
# This is to see if the Guix API is usable and mostly working.
with subtest("Guix API scripting"):
scripts_dir = pathlib.Path("/etc/guix/scripts")
text_msg = "Hello there, NixOS!"
text_store_file = machine.succeed(f"guix repl -- {scripts_dir}/create-file-to-store.scm '{text_msg}'")
assert machine.succeed(f"cat {text_store_file}") == text_msg
machine.succeed(f"guix repl -- {scripts_dir}/add-existing-files-to-store.scm {scripts_dir}")
'';
})

View file

@ -0,0 +1,8 @@
{ system ? builtins.currentSystem
, pkgs ? import ../../.. { inherit system; }
}:
{
basic = import ./basic.nix { inherit system pkgs; };
publish = import ./publish.nix { inherit system pkgs; };
}

View file

@ -0,0 +1,95 @@
# Testing out the substitute server with two machines in a local network. As a
# bonus, we'll also test a feature of the substitute server being able to
# advertise its service to the local network with Avahi.
import ../make-test-python.nix ({ pkgs, lib, ... }: let
publishPort = 8181;
inherit (builtins) toString;
in {
name = "guix-publish";
meta.maintainers = with lib.maintainers; [ foo-dogsquared ];
nodes = let
commonConfig = { config, ... }: {
# We'll be using '--advertise' flag with the
# substitute server which requires Avahi.
services.avahi = {
enable = true;
nssmdns = true;
publish = {
enable = true;
userServices = true;
};
};
};
in {
server = { config, lib, pkgs, ... }: {
imports = [ commonConfig ];
services.guix = {
enable = true;
publish = {
enable = true;
port = publishPort;
generateKeyPair = true;
extraArgs = [ "--advertise" ];
};
};
networking.firewall.allowedTCPPorts = [ publishPort ];
};
client = { config, lib, pkgs, ... }: {
imports = [ commonConfig ];
services.guix = {
enable = true;
extraArgs = [
# Force to only get all substitutes from the local server. We don't
# have anything in the Guix store directory and we cannot get
# anything from the official substitute servers anyways.
"--substitute-urls='http://server.local:${toString publishPort}'"
# Enable autodiscovery of the substitute servers in the local
# network. This machine shouldn't need to import the signing key from
# the substitute server since it is automatically done anyways.
"--discover=yes"
];
};
};
};
testScript = ''
import pathlib
start_all()
scripts_dir = pathlib.Path("/etc/guix/scripts")
for machine in machines:
machine.wait_for_unit("multi-user.target")
machine.wait_for_unit("guix-daemon.service")
machine.wait_for_unit("avahi-daemon.service")
server.wait_for_unit("guix-publish.service")
server.wait_for_open_port(${toString publishPort})
server.succeed("curl http://localhost:${toString publishPort}/")
# Now it's the client turn to make use of it.
substitute_server = "http://server.local:${toString publishPort}"
client.wait_for_unit("network-online.target")
response = client.succeed(f"curl {substitute_server}")
assert "Guix Substitute Server" in response
# Authorizing the server to be used as a substitute server.
client.succeed(f"curl -O {substitute_server}/signing-key.pub")
client.succeed("guix archive --authorize < ./signing-key.pub")
# Since we're using the substitute server with the `--advertise` flag, we
# might as well check it.
client.succeed("avahi-browse --resolve --terminate _guix_publish._tcp | grep '_guix_publish._tcp'")
'';
})

View file

@ -0,0 +1,52 @@
;; A simple script that adds each file given from the command-line into the
;; store and checks them if it's the same.
(use-modules (guix)
(srfi srfi-1)
(ice-9 ftw)
(rnrs io ports))
;; This is based from tests/derivations.scm from Guix source code.
(define* (directory-contents dir #:optional (slurp get-bytevector-all))
"Return an alist representing the contents of DIR"
(define prefix-len (string-length dir))
(sort (file-system-fold (const #t)
(lambda (path stat result)
(alist-cons (string-drop path prefix-len)
(call-with-input-file path slurp)
result))
(lambda (path stat result) result)
(lambda (path stat result) result)
(lambda (path stat result) result)
(lambda (path stat errno result) result)
'()
dir)
(lambda (e1 e2)
(string<? (car e1) (car e2)))))
(define* (check-if-same store drv path)
"Check if the given path and its store item are the same"
(let* ((filetype (stat:type (stat drv))))
(case filetype
((regular)
(and (valid-path? store drv)
(equal? (call-with-input-file path get-bytevector-all)
(call-with-input-file drv get-bytevector-all))))
((directory)
(and (valid-path? store drv)
(equal? (directory-contents path)
(directory-contents drv))))
(else #f))))
(define* (add-and-check-item-to-store store path)
"Add PATH to STORE and check if the contents are the same"
(let* ((store-item (add-to-store store
(basename path)
#t "sha256" path))
(is-same (check-if-same store store-item path)))
(if (not is-same)
(exit 1))))
(with-store store
(map (lambda (path)
(add-and-check-item-to-store store (readlink* path)))
(cdr (command-line))))

View file

@ -0,0 +1,8 @@
;; A script that creates a store item with the given text and prints the
;; resulting store item path.
(use-modules (guix))
(with-store store
(display (add-text-to-store store "guix-basic-test-text"
(string-join
(cdr (command-line))))))

View file

@ -46,7 +46,8 @@ import ./make-test-python.nix ({ pkgs, ... }:
machine.execute("su - sybil -c input-remapper-gtk >&2 &")
machine.wait_for_text("Input Remapper")
machine.wait_for_text("Preset")
machine.wait_for_text("Change Key")
machine.wait_for_text("Device")
machine.wait_for_text("Presets")
machine.wait_for_text("Editor")
'';
})

View file

@ -23,9 +23,8 @@ with pkgs.lib;
let tests = {
alacritty.pkg = p: p.alacritty;
# times out after spending many hours
#contour.pkg = p: p.contour;
#contour.cmd = "contour $command";
contour.pkg = p: p.contour;
contour.cmd = "contour early-exit-threshold 0 execute $command";
cool-retro-term.pkg = p: p.cool-retro-term;
cool-retro-term.colourTest = false; # broken by gloss effect

View file

@ -18,9 +18,9 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
defaultServername = "testserver";
servers.testserver = {
# 192.0.0.8 is a "dummy address" according to RFC 7600
server = "192.0.0.8";
node = "SOME-NODE";
passwdDir = "/tmp";
tcpserveraddress = "192.0.0.8";
nodename = "SOME-NODE";
passworddir = "/tmp";
};
};
};

View file

@ -1,18 +1,53 @@
{ alsa-lib, at-spi2-core, cmake, curl, dbus, libepoxy, fetchFromGitHub, freeglut
, freetype, gcc-unwrapped, gtk3, lib, libGL, libXcursor, libXdmcp, libXext
, libXinerama, libXrandr, libXtst, libdatrie, libjack2, libpsl, libselinux
, libsepol, libsysprof-capture, libthai, libxkbcommon, lv2, pcre, pkg-config
, python3, sqlite, stdenv }:
{ alsa-lib
, at-spi2-core
, cmake
, curl
, dbus
, libepoxy
, fetchFromGitHub
, freeglut
, freetype
, gtk3
, lib
, libGL
, libXcursor
, libXdmcp
, libXext
, libXinerama
, libXrandr
, libXtst
, libdatrie
, libjack2
, libpsl
, libselinux
, libsepol
, libsysprof-capture
, libthai
, libuuid
, libxkbcommon
, lv2
, pcre
, pcre2
, pkg-config
, python3
, sqlite
, gcc11Stdenv
, webkitgtk
}:
let
# JUCE version in submodules is incompatible with GCC12
# See here: https://forum.juce.com/t/build-fails-on-fedora-wrong-c-version/50902/2
stdenv = gcc11Stdenv;
in
stdenv.mkDerivation rec {
pname = "CHOWTapeModel";
version = "2.10.0";
version = "2.11.4";
src = fetchFromGitHub {
owner = "jatinchowdhury18";
repo = "AnalogTapeModel";
rev = "v${version}";
sha256 = "sha256-iuT7OBRBtMkjcTHayCcne1mNqkcxzKnEYl62n65V7Z4=";
sha256 = "sha256-WriHi68Y6hAsrwE+74JtVlAKUR9lfTczj6UK9h2FOGM=";
fetchSubmodules = true;
};
@ -41,36 +76,51 @@ stdenv.mkDerivation rec {
libsepol
libsysprof-capture
libthai
libuuid
libxkbcommon
lv2
pcre
pcre2
python3
sqlite
gcc-unwrapped
webkitgtk
];
# Link-time-optimization fails without these
cmakeFlags = [
"-DCMAKE_AR=${gcc-unwrapped}/bin/gcc-ar"
"-DCMAKE_RANLIB=${gcc-unwrapped}/bin/gcc-ranlib"
"-DCMAKE_NM=${gcc-unwrapped}/bin/gcc-nm"
"-DCMAKE_AR=${stdenv.cc.cc}/bin/gcc-ar"
"-DCMAKE_RANLIB=${stdenv.cc.cc}/bin/gcc-ranlib"
"-DCMAKE_NM=${stdenv.cc.cc}/bin/gcc-nm"
];
cmakeBuildType = "Release";
postPatch = "cd Plugin";
installPhase = ''
mkdir -p $out/lib/lv2 $out/lib/vst3 $out/bin $out/share/doc/CHOWTapeModel/
cd CHOWTapeModel_artefacts/Release
cp libCHOWTapeModel_SharedCode.a $out/lib
mkdir -p $out/lib/lv2 $out/lib/vst3 $out/lib/clap $out/bin $out/share/doc/CHOWTapeModel/
cd CHOWTapeModel_artefacts/${cmakeBuildType}
cp -r LV2/CHOWTapeModel.lv2 $out/lib/lv2
cp -r VST3/CHOWTapeModel.vst3 $out/lib/vst3
cp -r CLAP/CHOWTapeModel.clap $out/lib/clap
cp Standalone/CHOWTapeModel $out/bin
cp ../../../../Manual/ChowTapeManual.pdf $out/share/doc/CHOWTapeModel/
'';
# JUCE dlopens these, make sure they are in rpath
# Otherwise, segfault will happen
NIX_LDFLAGS = (toString [
"-lX11"
"-lXext"
"-lXcursor"
"-lXinerama"
"-lXrandr"
]);
meta = with lib; {
homepage = "https://github.com/jatinchowdhury18/AnalogTapeModel";
description =
"Physical modelling signal processing for analog tape recording. LV2, VST3 and standalone";
"Physical modelling signal processing for analog tape recording. LV2, VST3, CLAP, and standalone";
license = with licenses; [ gpl3Only ];
maintainers = with maintainers; [ magnetophon ];
platforms = platforms.linux;

View file

@ -11,13 +11,13 @@
stdenv.mkDerivation rec {
pname = "alsa-scarlett-gui";
version = "0.3.2";
version = "0.3.3";
src = fetchFromGitHub {
owner = "geoffreybennett";
repo = pname;
rev = version;
sha256 = "sha256-wzBOPTs8PTHzu5RpKwKhx552E7QnDx2Zn4OFaes8Q2I=";
sha256 = "sha256-lIwDNyzuvolDhTVCslCtUfbsC/TxKtxQF97h0zYxp9k=";
};
NIX_CFLAGS_COMPILE = [ "-Wno-error=deprecated-declarations" ];

View file

@ -41,7 +41,7 @@ assert gtk2Support || gtk3Support;
let
inherit (lib) optionals;
version = "1.9.5";
version = "1.9.6";
in clangStdenv.mkDerivation {
pname = "deadbeef";
inherit version;
@ -51,7 +51,7 @@ in clangStdenv.mkDerivation {
repo = "deadbeef";
fetchSubmodules = true;
rev = version;
hash = "sha256-dSSIaJxHYUVOmuJN2t5UZSC3ZP5732/qVXSZAuWYr0Q=";
hash = "sha256-Q6hL4fOFPHn26ZqvrebgTMTgQZrhbXCEhM4ZFzNeyJE=";
};
buildInputs = [

View file

@ -10,6 +10,7 @@
, glib
, gobject-introspection
, desktop-file-utils
, appstream
, appstream-glib
, gtk4
, librsvg
@ -18,7 +19,7 @@
python3Packages.buildPythonApplication rec {
pname = "eartag";
version = "0.4.3";
version = "0.5.1";
format = "other";
src = fetchFromGitLab {
@ -26,7 +27,7 @@ python3Packages.buildPythonApplication rec {
owner = "World";
repo = pname;
rev = version;
hash = "sha256-0nkaKLkUnJiNTs7/qe+c4Lkst/ItHD1RKAERCo2O2ms=";
hash = "sha256-tHBEz4sZsWOxDkdUd/3zMta8vOhuzv4G01dtjKBX/D0=";
};
postPatch = ''
@ -41,6 +42,7 @@ python3Packages.buildPythonApplication rec {
ninja
glib
desktop-file-utils
appstream
appstream-glib
pkg-config
gettext

File diff suppressed because it is too large Load diff

View file

@ -22,21 +22,18 @@
stdenv.mkDerivation rec {
pname = "gnome-podcasts";
version = "0.6.0";
version = "0.6.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "podcasts";
rev = version;
hash = "sha256-jnuy2UUPklfOYObSJPSqNhqqrfUP7N80pPmnw0rlB9A=";
hash = "sha256-LPwCYgAFgUMFQZ0i4ldiuGYGMMWcMqYct3/o7eTIhmU=";
};
cargoDeps = rustPlatform.importCargoLock {
lockFile = ./Cargo.lock;
outputHashes = {
"gettext-rs-0.4.2" = "sha256-wyZ1bf0oFcQo8gEi2GEalRUoKMoJYHysu79qcfjd4Ng=";
};
};
nativeBuildInputs = [

View file

@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
version = "3.9.4";
src = fetchurl {
url = "https://download.kde.org/stable/kid3/${finalAttrs.version}/kid3-${finalAttrs.version}.tar.xz";
url = "mirror://kde/stable/kid3/${finalAttrs.version}/kid3-${finalAttrs.version}.tar.xz";
hash = "sha256-xBCWDpYiXeChxIiMPqHG3CyiRau2kUdDJtzcPtvWpSA=";
};

View file

@ -14,14 +14,14 @@ let
# If an update breaks things, one of those might have valuable info:
# https://aur.archlinux.org/packages/spotify/
# https://community.spotify.com/t5/Desktop-Linux
version = "1.2.22.982.g794acc0a";
version = "1.2.25.1011.g0348b2ea";
# To get the latest stable revision:
# curl -H 'X-Ubuntu-Series: 16' 'https://api.snapcraft.io/api/v1/snaps/details/spotify?channel=stable' | jq '.download_url,.version,.last_updated'
# To get general information:
# curl -H 'Snap-Device-Series: 16' 'https://api.snapcraft.io/v2/snaps/info/spotify' | jq '.'
# More examples of api usage:
# https://github.com/canonical-websites/snapcraft.io/blob/master/webapp/publisher/snaps/views.py
rev = "70";
rev = "73";
deps = [
alsa-lib
@ -86,7 +86,7 @@ stdenv.mkDerivation {
# https://community.spotify.com/t5/Desktop-Linux/Redistribute-Spotify-on-Linux-Distributions/td-p/1695334
src = fetchurl {
url = "https://api.snapcraft.io/api/v1/snaps/download/pOBIoZ2LrCB3rDohMxoYGnbN14EHOgD7_${rev}.snap";
hash = "sha512-oxDUZqyMLxCbUBb1A+BBznByQ1rZAJcEIkaSUQ93/k1DX3rTaBHzEXmBtJhmN6L8L3fw1pa9GvE7eDaD8+jeGg==";
hash = "sha512-93A+0YfP2/HnQOhSMw3UZ374bpS5ccQqb7a+e4RPSKvyT54wcI6hpmRn8CVo02oLo0yI2hho3Bu3ggsJLVgzbw==";
};
nativeBuildInputs = [ wrapGAppsHook makeShellWrapper squashfsTools ];

View file

@ -22,14 +22,14 @@
stdenv.mkDerivation rec {
pname = "deja-dup";
version = "44.2";
version = "45.1";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "deja-dup";
rev = version;
hash = "sha256-TnyH2tIvzG1B2hbDPyFyaTArfuMJaP6GKw6yahwsQ1Q=";
hash = "sha256-2vNAppy8fYYcxH3ci4B6bUIl2sO5NC6yA13y9iU4V/A=";
};
patches = [

File diff suppressed because it is too large Load diff

View file

@ -1,37 +1,39 @@
{ lib,
fetchgit,
rustPlatform,
pkg-config,
openssl,
fuse3,
libuuid,
acl,
libxcrypt,
git,
installShellFiles,
sphinx,
stdenv,
fetchpatch,
testers,
proxmox-backup-client,
{ lib
, fetchgit
, rustPlatform
, pkg-config
, openssl
, fuse3
, libuuid
, acl
, libxcrypt
, git
, installShellFiles
, sphinx
, stdenv
, fetchpatch
, testers
, proxmox-backup-client
}:
let
pname = "proxmox-backup-client";
version = "3.0.1";
version = "3.1.2";
proxmox-backup_src = fetchgit {
url = "git://git.proxmox.com/git/proxmox-backup.git";
rev = "v${version}";
name = "proxmox-backup";
hash = "sha256-a6dPBZBBh//iANXoPmOdgxYO0qNszOYI3QtrjQr4Cxc=";
hash = "sha256-G4wadZelQHlveVhuOpu0FjLvfegoimoxlw3Fe8DhsQA=";
};
# Same revision as used in
# https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=proxmox-backup-client
proxmox_src = fetchgit {
url = "git://git.proxmox.com/git/proxmox.git";
rev = "2a070da0651677411a245f1714895235b1caf584";
rev = "50b79198f83659e77b810fe0eedaa79b140744db";
name = "proxmox";
hash = "sha256-WH6oW2MB2yN1Y2zqOuXewI9jHqev/xLcJtb7D1J4aUE=";
hash = "sha256-ffkOXGqe0xjvvhouzemcQ8qNdmJx70x10ny2uhYAYaI=";
};
proxmox-fuse_src = fetchgit {
@ -43,16 +45,30 @@ let
proxmox-pxar_src = fetchgit {
url = "git://git.proxmox.com/git/pxar.git";
rev = "6ad046f9f92b40413f59cc5f4c23d2bafdf141f2";
rev = "fab647085426dc39c25c137575a3b8fc575c4b78";
name = "pxar";
hash = "sha256-I9kk27oN9BDQpnLDWltjZMrh2yJitCpcD/XAhkmtJUg=";
hash = "sha256-tedQDQUFSGUZCChGcRRJsh7lIozfispLCLeX1OuUc4k=";
};
proxmox-pathpatterns_src = fetchgit {
url = "git://git.proxmox.com/git/pathpatterns.git";
rev = "5f625aacbd6f81d97a1c6f5476fb38769d069f26"; # 0.3.0
name = "pathpatterns";
hash = "sha256-717XSlvQdvP0Q516fEx04rsrLCk3QI8frTD5NMmkSr4=";
};
in
rustPlatform.buildRustPackage {
inherit pname version;
srcs = [ proxmox-backup_src proxmox_src proxmox-fuse_src proxmox-pxar_src ];
srcs = [
proxmox-backup_src
proxmox_src
proxmox-fuse_src
proxmox-pxar_src
proxmox-pathpatterns_src
];
sourceRoot = proxmox-backup_src.name;
@ -64,15 +80,15 @@ rustPlatform.buildRustPackage {
# works in combination with the other three repos being checked out.
(fetchpatch {
name = "0001-re-route-dependencies-not-available-on-crates.io-to-.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-re-route-dependencies-not-available-on-crates.io-to-.patch?h=proxmox-backup-client&id=83a1f4dfcb04bd181b11954b1d9f5ddfcb72b3d0";
hash = "sha256-2YZtjbpYSbRk6rmpjKJeIO+V0YN5PrKsISONXMj4RG0=";
url = "https://aur.archlinux.org/cgit/aur.git/plain/0001-re-route-dependencies-not-available-on-crates.io-to-.patch?h=proxmox-backup-client&id=33ef762d3b3a8a0300117efada8d957f6d0cfa07";
hash = "sha256-hBct1NVFum7WG0sgdE7DdvjfnC6KPlLG9r4syxgYKWA=";
})
# This patch prevents the generation of the man-pages for other components inside the repo,
# which would require them too be built too. Thus avoid wasting resources and just skip them.
(fetchpatch {
name = "0002-docs-drop-all-but-client-man-pages.patch";
url = "https://aur.archlinux.org/cgit/aur.git/plain/0002-docs-drop-all-but-client-man-pages.patch?h=proxmox-backup-client&id=83a1f4dfcb04bd181b11954b1d9f5ddfcb72b3d0";
hash = "sha256-oJKQs4SwJvX5Zd0/l/vVr66aPO7Y4AC8byJHg9t1IhY=";
url = "https://aur.archlinux.org/cgit/aur.git/plain/0002-docs-drop-all-but-client-man-pages.patch?h=proxmox-backup-client&id=33ef762d3b3a8a0300117efada8d957f6d0cfa07";
hash = "sha256-DvWm18udvOpcma0V3JY06Lhn+h0BDPhNqrNOyrgpvWk=";
})
# `make docs` assumes that the binaries are located under `target/{debug,release}`, but due
# to how `buildRustPackage` works, they get put under `target/$RUSTC_TARGET/{debug,release}`.

View file

@ -15,13 +15,13 @@
stdenv.mkDerivation rec {
pname = "gtkgreet";
version = "0.7";
version = "0.8";
src = fetchFromSourcehut {
owner = "~kennylevinsen";
repo = pname;
rev = version;
sha256 = "ms+2FdtzzNlmlzNxFhu4cpX5H+5H+9ZOtZ0p8uVA3lo=";
sha256 = "sha256-GKBYql0hzqB6uY87SsAqHwf3qLAr7xznMnAjRtP4HS8=";
};
nativeBuildInputs = [

View file

@ -329,15 +329,16 @@ mkDerivation (finalAttrs: {
"--with-xml2=yes"
]
++ (lib.optional stdenv.isDarwin (lib.withFeature withNS "ns"))
++ lib.optional (!withToolkitScrollBars) "--without-toolkit-scroll-bars"
++ lib.optional withNativeCompilation "--with-native-compilation"
++ lib.optional withImageMagick "--with-imagemagick"
++ lib.optional withTreeSitter "--with-tree-sitter"
++ lib.optional withXinput2 "--with-xinput2"
++ lib.optional withXwidgets "--with-xwidgets"
++ lib.optional withSmallJaDic "--with-small-ja-dic"
++ lib.optional (!withCompressInstall) "--without-compress-install"
;
++ [
(lib.withFeature withCompressInstall "compress-install")
(lib.withFeature withToolkitScrollBars "toolkit-scroll-bars")
(lib.withFeature withNativeCompilation "native-compilation")
(lib.withFeature withImageMagick "imagemagick")
(lib.withFeature withSmallJaDic "small-ja-dic")
(lib.withFeature withTreeSitter "tree-sitter")
(lib.withFeature withXinput2 "xinput2")
(lib.withFeature withXwidgets "xwidgets")
];
env = lib.optionalAttrs withNativeCompilation {
NATIVE_FULL_AOT = "1";

View file

@ -2,14 +2,14 @@
stdenv.mkDerivation rec {
pname = "greenfoot";
version = "3.8.1";
version = "3.8.2";
src = fetchurl {
# We use the deb here. First instinct might be to go for the "generic" JAR
# download, but that is actually a graphical installer that is much harder
# to unpack than the deb.
url = "https://www.greenfoot.org/download/files/Greenfoot-linux-${builtins.replaceStrings ["."] [""] version}.deb";
sha256 = "sha256-utGSAbP74O1t1iEoN0CwiZVc8HxdCxhozPPMwQCtkEE=";
hash = "sha256-wpmgWtx2jTDjt+7p6HcjU/uy1PRmnAHpJ1rOYb+hV+U=";
};
nativeBuildInputs = [ dpkg wrapGAppsHook ];

View file

@ -3,7 +3,7 @@
}:
let
version = "19";
version = "20";
desktopItem = makeDesktopItem {
name = "netbeans";
exec = "netbeans";
@ -19,7 +19,7 @@ stdenv.mkDerivation {
inherit version;
src = fetchurl {
url = "mirror://apache/netbeans/netbeans/${version}/netbeans-${version}-bin.zip";
hash = "sha256-jfcO3WMH0Ir1+VfpZhaRcykTIoTmxA5DK8ZO8orP1Jg=";
hash = "sha256-hseSusJiUqdnhIyOBtELProeMjrGdKa22h0VkbML80E=";
};
buildCommand = ''

View file

@ -185,12 +185,12 @@ final: prev:
LeaderF = buildVimPlugin {
pname = "LeaderF";
version = "2023-11-30";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "Yggdroot";
repo = "LeaderF";
rev = "001b12c022babbe433bc53f8ecdac1c202c57977";
sha256 = "0m722w9vzmxxn1km3czpj5n80cwdhviw0l7zjawgwa8ip8bd63kr";
rev = "ee827173e5a3977ef764302083a4df07b4568cf3";
sha256 = "1w7m48h27h5dk5swy8ibynl74f11xrv704cyafgdbg9a3w5qv15l";
};
meta.homepage = "https://github.com/Yggdroot/LeaderF/";
};
@ -305,12 +305,12 @@ final: prev:
SchemaStore-nvim = buildVimPlugin {
pname = "SchemaStore.nvim";
version = "2023-11-30";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "b0o";
repo = "SchemaStore.nvim";
rev = "5bfeb36550018438c2c7ef58f91174f79d99a28a";
sha256 = "192rq8dzfckyz9vpvf489zbqxmd33r8mw6frdrm8fa9xq1q1i0ab";
rev = "c4f2d408542f07592a34c3a68171d36c612741b9";
sha256 = "0j1qng5sp5h9b478ajjx9fcx88k8sfj26s19lxi76g7a00yzm0b6";
};
meta.homepage = "https://github.com/b0o/SchemaStore.nvim/";
};
@ -691,12 +691,12 @@ final: prev:
asyncomplete-buffer-vim = buildVimPlugin {
pname = "asyncomplete-buffer.vim";
version = "2020-06-26";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "prabirshrestha";
repo = "asyncomplete-buffer.vim";
rev = "018bcf0f712ce0fde3f1f2eaabd7004fccb2d34a";
sha256 = "0ixc37gzgsf93sl52fa3ywz6bw7cn1406fgimmy5rz0d62b0y8yi";
rev = "a7afcf4f1f0ee8beaec4b3a20d814160ab097d8d";
sha256 = "0x9rr9v2b6zc2ch1v11vmqd65iyq33vi28f4s3xg1q7y5358ksd1";
};
meta.homepage = "https://github.com/prabirshrestha/asyncomplete-buffer.vim/";
};
@ -739,12 +739,12 @@ final: prev:
asyncomplete-tags-vim = buildVimPlugin {
pname = "asyncomplete-tags.vim";
version = "2021-04-29";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "prabirshrestha";
repo = "asyncomplete-tags.vim";
rev = "041af0565f2c16634277cd29d2429c573af1dac4";
sha256 = "0i1ahg96j1ixyps0lfzl7w7skd64y6br1zn3bms447341zw4lc0k";
rev = "e458dc448b40d69eb1d4722fa30ce848521bd3d0";
sha256 = "1n74m1s0npnih1mdpxw1c0x7jhqkzrkncjb0zpa7r1ibl1ij0gwj";
};
meta.homepage = "https://github.com/prabirshrestha/asyncomplete-tags.vim/";
};
@ -2998,12 +2998,12 @@ final: prev:
direnv-vim = buildVimPlugin {
pname = "direnv.vim";
version = "2023-06-26";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "direnv";
repo = "direnv.vim";
rev = "165031fa2c8dbb1e78dfd7054fe064ea926384cb";
sha256 = "0g8k839x7588azm29iacvvqlgvznfziw8gwcdc251q9ra3z59ynh";
rev = "ab2a7e08dd630060cd81d7946739ac7442a4f269";
sha256 = "1hhwfnaj9ibz17ggxvhzrkinghfy51fqfa0bs482z484jpvjc31g";
};
meta.homepage = "https://github.com/direnv/direnv.vim/";
};
@ -3058,12 +3058,12 @@ final: prev:
dropbar-nvim = buildVimPlugin {
pname = "dropbar.nvim";
version = "2023-11-25";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "Bekaboo";
repo = "dropbar.nvim";
rev = "3b7978b382ef09ca84b4248f1033df4f346889f4";
sha256 = "1yf4jihacmblw8vynspv68d3iyb8ydp57qza6mff5x4xxcpbkfsr";
rev = "2b7c2d53363cb3d93376904dac3ea6d52dd900c5";
sha256 = "0kwsdil034a1cqy0ccyhy7hpzn4pnxcb0b4g0p3y09wk935mwdrk";
};
meta.homepage = "https://github.com/Bekaboo/dropbar.nvim/";
};
@ -3118,12 +3118,12 @@ final: prev:
editorconfig-vim = buildVimPlugin {
pname = "editorconfig-vim";
version = "2023-11-26";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "editorconfig";
repo = "editorconfig-vim";
rev = "7eec46701ec7a954a6cb0b0e348ad7c13a893425";
sha256 = "17jfdlik09nqma3kb12kx0y0svjndcc6ay4589k83zm2cy4wd0h9";
rev = "95cb75e21d11206dad4bd3895c99459bdaa13dd1";
sha256 = "19nqk6hw0w29a14dwykqpcfahcjnkyjafha01fa82i967hrg3dj6";
fetchSubmodules = true;
};
meta.homepage = "https://github.com/editorconfig/editorconfig-vim/";
@ -4084,20 +4084,20 @@ final: prev:
src = fetchFromGitHub {
owner = "ThePrimeagen";
repo = "harpoon";
rev = "c5f2d71c32a4aa2569bef1066e668947b78f9682";
sha256 = "1jn3sj3r1mczg5wyh7qcs51mab8sz02sgff5d2p3qhz0gjvyq22m";
rev = "581da797f9d66485f841525af596255270c2bcf5";
sha256 = "1fnxjwsrsm0qdf9a20nfxy58dy1dv8l70w4ipqn4lh0hd36ziacr";
};
meta.homepage = "https://github.com/ThePrimeagen/harpoon/";
};
haskell-tools-nvim = buildNeovimPlugin {
pname = "haskell-tools.nvim";
version = "2023-12-02";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "MrcJkb";
repo = "haskell-tools.nvim";
rev = "fdb248c2cc724b151b0886044b5fd8b88968d0d1";
sha256 = "0wj9aqihym10bmdybdmvlf8nlaghhfxl5z7gaamzbzlwhwlx71zy";
rev = "b345179204a3c4fd38b8d7699989d51d7d6febfe";
sha256 = "1yzcap9drf9nl2ygmwl8b8napfx8fkx4wmrrhazb1p25921srs0m";
};
meta.homepage = "https://github.com/MrcJkb/haskell-tools.nvim/";
};
@ -4391,12 +4391,12 @@ final: prev:
inc-rename-nvim = buildVimPlugin {
pname = "inc-rename.nvim";
version = "2023-11-26";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "smjonas";
repo = "inc-rename.nvim";
rev = "14922a84777702244a499b43134b9d04e640cbcd";
sha256 = "161gh780mxm8vfvdbfxbbvww36byx4zxhw0simvx2cqfxfik3gi0";
rev = "a48c7cec5c4f00d7438dce5fadb55f4d715ef9f2";
sha256 = "08qwjv7dwgs03dvv7dxgm4hqrcsvvbn1r3f4xkj1g3ppr9pzqhva";
};
meta.homepage = "https://github.com/smjonas/inc-rename.nvim/";
};
@ -5327,12 +5327,12 @@ final: prev:
luasnip = buildNeovimPlugin {
pname = "luasnip";
version = "2023-12-01";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "l3mon4d3";
repo = "luasnip";
rev = "118263867197a111717b5f13d954cd1ab8124387";
sha256 = "05gf35zb1m4baz3xiw8qh647l2w89861jljrhbbjnhnn48vfqgzw";
rev = "f03089854a8e15594a01562fa7192d0009a6fbe7";
sha256 = "1ghr6h14004gydf5gjxny4szb0v9brydv1j8rd3x1z87m0jp7hk6";
fetchSubmodules = true;
};
meta.homepage = "https://github.com/l3mon4d3/luasnip/";
@ -6253,12 +6253,12 @@ final: prev:
neotest-haskell = buildVimPlugin {
pname = "neotest-haskell";
version = "2023-11-26";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "MrcJkb";
repo = "neotest-haskell";
rev = "c028b2c02d3ee749d8b485162ed2318cc241185f";
sha256 = "0w9xci72fdyya9lpsr159p4zyknscsxfjys5dr06s44ncj5mv12g";
rev = "51729f549b048890bb9d76b502c63a0a2ba29556";
sha256 = "0myx63bpb23wai2fc8zcjx9dsq8l1jysgp1al2wxgqmn8k3b26vl";
};
meta.homepage = "https://github.com/MrcJkb/neotest-haskell/";
};
@ -6337,12 +6337,12 @@ final: prev:
neotest-rust = buildVimPlugin {
pname = "neotest-rust";
version = "2023-11-21";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "rouge8";
repo = "neotest-rust";
rev = "46428d9013023f516a61274a78b0cee87fb7e8bc";
sha256 = "0k6fqifyxa0m01jrxv9yxv6rzval36j1dps2awbccna0mxjjgjhp";
rev = "48c1e146ed0eb775fef6aca75903baf3cedadc01";
sha256 = "1dsxhs05qcrq8kwz9y34a3vx5mvpd2j4k40qj9lcnfz0y2171h2z";
};
meta.homepage = "https://github.com/rouge8/neotest-rust/";
};
@ -6373,12 +6373,12 @@ final: prev:
neotest-vitest = buildVimPlugin {
pname = "neotest-vitest";
version = "2023-06-23";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "marilari88";
repo = "neotest-vitest";
rev = "41bf2f6b743f2ac5c5e9bd0949cee77ca7f2372c";
sha256 = "0bz6h0mh8cyjf2xdnykyiijwmw9vgwvlb9nfzzjvxba8nqzgb4rq";
rev = "15972c4791b3d47df82311047835803a072c1da6";
sha256 = "0l6x6b2flzr4591002srin58bls26gk58p3rqr8mjcjrm3znbsya";
};
meta.homepage = "https://github.com/marilari88/neotest-vitest/";
};
@ -6445,12 +6445,12 @@ final: prev:
nerdtree = buildVimPlugin {
pname = "nerdtree";
version = "2023-12-01";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "preservim";
repo = "nerdtree";
rev = "50a394b2bfa93674381cb913d6330e5075b5c787";
sha256 = "1p8qmnbi3l4y743db35sig5nxgqj83s20yyqhld9b5v0yr27rhbl";
rev = "9ec27d45a863aeb82fea56cebcb8a75a4e369fc9";
sha256 = "17j2q0vdplxz4qjkx140mgxjcj1dghzkz1ijb3vc3i2hl5qfmba1";
};
meta.homepage = "https://github.com/preservim/nerdtree/";
};
@ -6673,12 +6673,12 @@ final: prev:
nui-nvim = buildNeovimPlugin {
pname = "nui.nvim";
version = "2023-11-26";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "MunifTanjim";
repo = "nui.nvim";
rev = "257dccc43b4badc735978f0791d216f7d665b75a";
sha256 = "144qi4wvbcycnypyvyc2kk9fadr1bsv7j3zx5h3s0sffy8x4lz0m";
rev = "1d044afde83e73c56de8e176615a4a6e7c8cf0e3";
sha256 = "08s5anr34vkc8zcac3v7f6rgyankcr0k34y8hkrmc554ak4f1cqq";
};
meta.homepage = "https://github.com/MunifTanjim/nui.nvim/";
};
@ -6925,12 +6925,12 @@ final: prev:
nvim-coverage = buildVimPlugin {
pname = "nvim-coverage";
version = "2023-10-25";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "andythigpen";
repo = "nvim-coverage";
rev = "13e357d4a2a230070c64ede61252225f0b7d3b5e";
sha256 = "11pw7izbb9yim3vcijxljhp3l7z39ycscjgqrl5wxaj4j2jvaldw";
rev = "cf4b5c61dfac977026a51a2bcad9173c272986ce";
sha256 = "08lnmizw9jsncmqs1fl1ilmlh3gq0v0bdal1v30i7qhfigr5wsgc";
};
meta.homepage = "https://github.com/andythigpen/nvim-coverage/";
};
@ -6949,12 +6949,12 @@ final: prev:
nvim-dap = buildVimPlugin {
pname = "nvim-dap";
version = "2023-11-29";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "mfussenegger";
repo = "nvim-dap";
rev = "13ce59d4852be2bb3cd4967947985cb0ceaff460";
sha256 = "0xk8cqb4i5bq4bw5l3idgci8i5r5is4i7451rbxpnzxnb1xj0agf";
rev = "d7749eb3d9933a75d2244820308ce442f646c7ae";
sha256 = "0plpvvzbhvs9yhjb7413zcypzdmr9437vkn3mybnd93k8rfwsly9";
};
meta.homepage = "https://github.com/mfussenegger/nvim-dap/";
};
@ -7200,12 +7200,12 @@ final: prev:
nvim-lint = buildVimPlugin {
pname = "nvim-lint";
version = "2023-11-29";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "mfussenegger";
repo = "nvim-lint";
rev = "6f589cb93560581dc2a3b9693658afe865e5649e";
sha256 = "0zrqdcz604azwm7342vvqbdxvpqd40rr50qcfj1lfrlxxj46qgb1";
rev = "f20f35756e74b91c0b4340d01fee22422bdffefa";
sha256 = "1whq19qifw8w6bkm8sl80h0krjyrpsd9zyyq0skfl3bbsn31vlsv";
};
meta.homepage = "https://github.com/mfussenegger/nvim-lint/";
};
@ -7596,12 +7596,12 @@ final: prev:
nvim-treesitter = buildVimPlugin {
pname = "nvim-treesitter";
version = "2023-12-01";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "nvim-treesitter";
repo = "nvim-treesitter";
rev = "80a16deb5146a3eb4648effccda1ab9f45e43e76";
sha256 = "0mgm5b80flk5171b3b2gsy2pjdimc0xbjbsdg4qf9hgzjyxf9jmi";
rev = "0791b5ebb590a2d44e20640c52679df1fc42e8ab";
sha256 = "1a6sy62hwb1kclm6czbi1m9vv2xcp7pswgsafrxff96ahkqnbrrm";
};
meta.homepage = "https://github.com/nvim-treesitter/nvim-treesitter/";
};
@ -7727,12 +7727,12 @@ final: prev:
nvim-ufo = buildVimPlugin {
pname = "nvim-ufo";
version = "2023-12-01";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "kevinhwang91";
repo = "nvim-ufo";
rev = "47a2f8d4da670db6e01a7373cdf97249e332d6d4";
sha256 = "0k2l5ls9fhc53a7fvyz8p75n0b3spy7s3j4z9l3ilzvhd6m7al6d";
rev = "9fa77fb7e4365a053a5303b773aaf5eaf806d1f4";
sha256 = "07idni9j2yzv5wxc1amg8w3sbrmn07kqsdm4wza5pz6j444fjksm";
};
meta.homepage = "https://github.com/kevinhwang91/nvim-ufo/";
};
@ -8040,12 +8040,12 @@ final: prev:
otter-nvim = buildVimPlugin {
pname = "otter.nvim";
version = "2023-10-25";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "jmbuhr";
repo = "otter.nvim";
rev = "b25537cc5c836f1a485176757da954b775a5b914";
sha256 = "0vccwqhhsr4qqwf9jkv0pv1s06qf3mxsgzn67lkwimjsg58ksz9p";
rev = "9a3db06bf3abadafb93279648317984ca789b888";
sha256 = "16pgvzb2xyak2zxmi0r65w979jzim4m595ag0lcsgr4wvm0vz8j2";
};
meta.homepage = "https://github.com/jmbuhr/otter.nvim/";
};
@ -8666,12 +8666,12 @@ final: prev:
rest-nvim = buildNeovimPlugin {
pname = "rest.nvim";
version = "2023-11-30";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "rest-nvim";
repo = "rest.nvim";
rev = "45b52200b4a7712a68579d9d13945427e2764725";
sha256 = "0xn6yw5yiwj4fmq1yw0cc30g5qcn6sw3v7wps41h1dbrgickj9ld";
rev = "84e81a19ab24ccf05c9233d34d4dfce61c233abe";
sha256 = "1z6wkszd84xnqfhb1s59rggcipl9dmyxw21yrksg1q7hhcgq1abb";
};
meta.homepage = "https://github.com/rest-nvim/rest.nvim/";
};
@ -8774,12 +8774,12 @@ final: prev:
rustaceanvim = buildNeovimPlugin {
pname = "rustaceanvim";
version = "2023-12-01";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "mrcjkb";
repo = "rustaceanvim";
rev = "3cad6912b16d5e0a5375d465ca28fda4c6ea4ee9";
sha256 = "12lzw6jh7z5bvd7ss9xils11paiv3b9by31nlxfarnpcvqf0m9l4";
rev = "7c1089ad1e35198911992c09cfd24dc15a225985";
sha256 = "1lillfkjq0jhq7d5w12brj4x8l88vj168ypihjigngm4gabwrr8f";
};
meta.homepage = "https://github.com/mrcjkb/rustaceanvim/";
};
@ -8875,7 +8875,7 @@ final: prev:
owner = "VonHeikemen";
repo = "searchbox.nvim";
rev = "110949af8963185b4e732b45ae57beb731bfcede";
sha256 = "sha256-Bx4Msp96hlcYVDvDC3gBv78zmde0T5XacxgiZt+LULU=";
sha256 = "1dahiggnc8hqfgd9akxlsyck7gxz05w0phrvahc5g1kskyr0q7h7";
};
meta.homepage = "https://github.com/VonHeikemen/searchbox.nvim/";
};
@ -9015,12 +9015,12 @@ final: prev:
smart-splits-nvim = buildVimPlugin {
pname = "smart-splits.nvim";
version = "2023-10-17";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "mrjones2014";
repo = "smart-splits.nvim";
rev = "c8a9173d70cbbd1f6e4a414e49e31df2b32a1362";
sha256 = "0hxy3fv6qp7shwh9wgf20q5i8ba2pzng2dd1dvw27aabibk43ba3";
rev = "c970c7a3cc7ba635fd73d43c81b40f04c00f5058";
sha256 = "0ri4b6q4qqy1cwyhknysnldbrg2yx4cfi2ddgvnn6snq8jhkmjbw";
};
meta.homepage = "https://github.com/mrjones2014/smart-splits.nvim/";
};
@ -9727,24 +9727,24 @@ final: prev:
telescope-file-browser-nvim = buildVimPlugin {
pname = "telescope-file-browser.nvim";
version = "2023-11-25";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "nvim-telescope";
repo = "telescope-file-browser.nvim";
rev = "d7c453396a043c265bef1227920628e7b811ff30";
sha256 = "1sws2d7gh37ra86nk1pn2j0sgqc7nlaiaqg0z34vxv1qrc1wc33q";
rev = "98101b22402cd6d1c7e9a7e0c4718bfc98cb1625";
sha256 = "13bnzdsmahk8phcxzm8d343mzmbxahrr34fkn8ylxy1shxbw6mw6";
};
meta.homepage = "https://github.com/nvim-telescope/telescope-file-browser.nvim/";
};
telescope-frecency-nvim = buildVimPlugin {
pname = "telescope-frecency.nvim";
version = "2023-11-24";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "nvim-telescope";
repo = "telescope-frecency.nvim";
rev = "ca5fa5326fc2b2ebd3269176594c4341ad720ac5";
sha256 = "16pqbn4i23j3ynzii5cszfqwrbz54cd8d99hqkqamvsm36q9m5b7";
rev = "de410701811f4142315ce89183256a969a08ff9d";
sha256 = "1wcbkqlwy6k8jsz0sqk0mqhlm6d0j8l3rdxw8vlwby00fbscs0is";
};
meta.homepage = "https://github.com/nvim-telescope/telescope-frecency.nvim/";
};
@ -9969,12 +9969,12 @@ final: prev:
telescope-nvim = buildNeovimPlugin {
pname = "telescope.nvim";
version = "2023-11-27";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "nvim-telescope";
repo = "telescope.nvim";
rev = "84c5a71d825b6687a55aed6f41e98b92fd8e5454";
sha256 = "0a0kj9ixsqny8jxfialq4wxxg7rgl97cgp1cgv5n0lnyw3xkbgbi";
rev = "3f5f165447d797576206e3b9bd555ea8db85b6f2";
sha256 = "0y9b69cah627dd3298gyizim8qfgq3wp9ajlz1pah0m43xcylkfm";
};
meta.homepage = "https://github.com/nvim-telescope/telescope.nvim/";
};
@ -10017,12 +10017,12 @@ final: prev:
term-edit-nvim = buildVimPlugin {
pname = "term-edit.nvim";
version = "2023-11-12";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "chomosuke";
repo = "term-edit.nvim";
rev = "aa3369a562b816ff0cec4fa6eddc9c32ac472710";
sha256 = "07fd9xqg2ykqnsqb9w6jqypzzl8klih5d67gi42jdawj3n4ijvcs";
rev = "e04f69d5828c6e6a4d81c34f75f18762fad50372";
sha256 = "1kh70ivd6p9f3xsf09iwyy94gvkzprv08ln52sh44n90s1yr4ql4";
};
meta.homepage = "https://github.com/chomosuke/term-edit.nvim/";
};
@ -10077,12 +10077,12 @@ final: prev:
text-case-nvim = buildVimPlugin {
pname = "text-case.nvim";
version = "2023-12-01";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "johmsalas";
repo = "text-case.nvim";
rev = "8f22e5fcbb8d591e04fa3e9780e2e16809278f9f";
sha256 = "0gpmfvj26kcm8ii9fhjgpwh5c571hy7xb253qq1vaak9cxa9m9yh";
rev = "ebe3650101a3505044559f71ec4ea4c789292164";
sha256 = "01lqj5x0976lpik80i7riy5r8q498ki1nkkmc716xgnbl7021b0g";
};
meta.homepage = "https://github.com/johmsalas/text-case.nvim/";
};
@ -12888,12 +12888,12 @@ final: prev:
vim-just = buildVimPlugin {
pname = "vim-just";
version = "2023-12-01";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "NoahTheDuke";
repo = "vim-just";
rev = "90e299ec91fa8ff88f73150f824f77f86b0f867e";
sha256 = "03kk30lskwhq5d1jmyhfws74l0iayrvsk7v0ki93k099k1fv5n7m";
rev = "4e3c322be764cde80eab73c8e03c7ac410eb0e19";
sha256 = "0ypbbk72h5l9j89i2hsjkcr95is1jd9gsnhchqw6zy8ip7qqa6sb";
};
meta.homepage = "https://github.com/NoahTheDuke/vim-just/";
};
@ -12924,12 +12924,12 @@ final: prev:
vim-lastplace = buildVimPlugin {
pname = "vim-lastplace";
version = "2023-08-24";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "farmergreg";
repo = "vim-lastplace";
rev = "bb3191b134ade9d1f01014e17c3df91e8911dd5c";
sha256 = "0sv05v6q1lkc4xklqly0hf2p4w4schan3gvcf1s6493697hvcc4h";
rev = "aaaf3dc8bbe496c3242a4b4635154ccc9414d357";
sha256 = "0wz59f6hmkdnv8hfgws20z0qrlpvfkxmdx4943fm1i3hmcdhyi1g";
};
meta.homepage = "https://github.com/farmergreg/vim-lastplace/";
};
@ -14461,12 +14461,12 @@ final: prev:
vim-slime = buildVimPlugin {
pname = "vim-slime";
version = "2023-11-04";
version = "2023-12-02";
src = fetchFromGitHub {
owner = "jpalardy";
repo = "vim-slime";
rev = "ce6ffa7d5f3d5faf739c07c0409b5e2035c279cc";
sha256 = "04w9ybcfc4cyb5ipp8ccpr35r4ja45xasgn149bkqxv747j9hvhp";
rev = "a532203bcd7af7f5e571c07b60bba7287076dc19";
sha256 = "0jfzah18mzh0iszi6k86k4y571j6jjhg3cyy9ivxcybacppaf2id";
};
meta.homepage = "https://github.com/jpalardy/vim-slime/";
};
@ -15591,12 +15591,12 @@ final: prev:
vimtex = buildVimPlugin {
pname = "vimtex";
version = "2023-11-30";
version = "2023-12-03";
src = fetchFromGitHub {
owner = "lervag";
repo = "vimtex";
rev = "941485f8b046ac00763dad2546f0701e85e5e02c";
sha256 = "0yxr0k9nflczrgdk1k9dybic4v1yg6pxrnnyg2nnwy14n54z7f2x";
rev = "911987d8d65ade51311d512ac98cf39f89a309ea";
sha256 = "025qbjs685s0yf9vddwyxz0vc2h1j33mj5s7w2xm8f10a8j5skfz";
};
meta.homepage = "https://github.com/lervag/vimtex/";
};
@ -15877,6 +15877,18 @@ final: prev:
meta.homepage = "https://github.com/tweekmonster/wstrip.vim/";
};
wtf-nvim = buildVimPlugin {
pname = "wtf.nvim";
version = "2023-11-11";
src = fetchFromGitHub {
owner = "piersolenski";
repo = "wtf.nvim";
rev = "03775272c9ba88cbaae1d1802078a3f751969350";
sha256 = "04xknhrmjvywdxfmng35i8cibxkcdjmz4wz1nmsr3gc09rddfrr3";
};
meta.homepage = "https://github.com/piersolenski/wtf.nvim/";
};
xptemplate = buildVimPlugin {
pname = "xptemplate";
version = "2022-09-08";

View file

@ -506,12 +506,12 @@
};
elm = buildGrammar {
language = "elm";
version = "0.0.0+rev=debe14f";
version = "0.0.0+rev=0ae8d47";
src = fetchFromGitHub {
owner = "elm-tooling";
repo = "tree-sitter-elm";
rev = "debe14fad40a8100c679d95c66f599b48111742c";
hash = "sha256-tB03/AqoYIMyWFGv3nKlGY/EjNV1/IQyXQsC+0M51V8=";
rev = "0ae8d475281a25e9d7ab1068a952ff9a1615c0df";
hash = "sha256-MCvzk5sJiA/JgQqI6fyVnjy5mA7bwmZvzWwdKS0PDQc=";
};
meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm";
};

View file

@ -1637,6 +1637,10 @@ self: super: {
dependencies = with self; [ vimwiki fzf-vim ];
};
wtf-nvim = super.wtf-nvim.overrideAttrs {
dependencies = with self; [ nui-nvim ];
};
YankRing-vim = super.YankRing-vim.overrideAttrs {
sourceRoot = ".";
};

View file

@ -1336,6 +1336,7 @@ https://github.com/vim-scripts/wombat256.vim/,,
https://github.com/lukaszkorecki/workflowish/,,
https://github.com/andrewferrier/wrapping.nvim/,HEAD,
https://github.com/tweekmonster/wstrip.vim/,,
https://github.com/piersolenski/wtf.nvim/,HEAD,
https://github.com/drmingdrmer/xptemplate/,,
https://github.com/guns/xterm-color-table.vim/,,
https://github.com/HerringtonDarkholme/yats.vim/,,

View file

@ -906,8 +906,8 @@ let
mktplcRef = {
name = "vscode-markdownlint";
publisher = "DavidAnson";
version = "0.52.0";
sha256 = "sha256-Y8qkcNEvJ/yzT8PDeErRzKGxYBNKKfbNNsJVaFDeIV4=";
version = "0.53.0";
sha256 = "sha256-ApCX636M51zN9obFqrUHmaJB3YoFmJPQfjKEWf9bosk=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DavidAnson.vscode-markdownlint/changelog";
@ -1234,8 +1234,8 @@ let
mktplcRef = {
name = "elixir-ls";
publisher = "JakeBecker";
version = "0.17.5";
sha256 = "sha256-2iOyLNLMQ6Snm0gvv7Yl6von/A9UTfLYrH5l1PoJwUc=";
version = "0.17.10";
sha256 = "sha256-4/B70DyNlImz60PSTSL5CKihlOJen/tR1/dXGc3s1ZY=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/JakeBecker.elixir-ls/changelog";

View file

@ -5,7 +5,7 @@ assert lib.versionAtLeast python3.version "3.5";
let
publisher = "vadimcn";
pname = "vscode-lldb";
version = "1.9.2";
version = "1.10.0";
vscodeExtUniqueId = "${publisher}.${pname}";
vscodeExtPublisher = publisher;
@ -15,7 +15,7 @@ let
owner = "vadimcn";
repo = "vscode-lldb";
rev = "v${version}";
hash = "sha256-6QmYRlSv8jY3OE3RcYuZt+c3z6GhFc8ESETVfCfF5RI=";
hash = "sha256-ExSS5HxDmJJtYypRYJNz7nY0D50gjoDBc4CnJMfgVw8=";
};
# need to build a custom version of lldb and llvm for enhanced rust support
@ -25,7 +25,7 @@ let
pname = "${pname}-adapter";
inherit version src;
cargoHash = "sha256-Qq2igtH1XIB+NAEES6hdNZcMbEmaFN69qIJ+gTYupvQ=";
cargoHash = "sha256-e/Jki/4pCs0qzaBVR4iiUhdBFmWlTZYREQkuFSoWYFo=";
nativeBuildInputs = [ makeWrapper ];
@ -84,6 +84,12 @@ in stdenv.mkDerivation {
patches = [ ./cmake-build-extension-only.patch ];
postPatch = ''
# temporary patch for forgotten version updates
substituteInPlace CMakeLists.txt \
--replace "1.9.2" ${version}
'';
postConfigure = ''
cp -r ${nodeDeps}/lib/node_modules .
'';

View file

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchFromGitHub
, fetchpatch
, alsa-lib
, AudioUnit
, autoreconfHook
@ -36,6 +37,21 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-YNYtYqcpTOx4xS/LXI53h3S+na8JVpn4w8Dhf4fWNBQ=";
};
patches = [
# 2 patches which fix stack smashing when launching Windows 3.0
# Remove when version > 2023.10.06
(fetchpatch {
name = "0001-dosbox-x-Attempt-to-fix-graphical-palette-issues-added-by-TTF-fix.patch";
url = "https://github.com/joncampbell123/dosbox-x/commit/40bf135f70376b5c3944fe2e972bdb7143439bcc.patch";
hash = "sha256-9whtqBkivYVYaPObyTODtwcfjaoK+rLqhCNZ7zVoiGI=";
})
(fetchpatch {
name = "0002-dosbox-x-Fix-Sid-Meiers-Civ-crash.patch";
url = "https://github.com/joncampbell123/dosbox-x/compare/cdcfb554999572e758b81edf85a007d398626b78..ac91760d9353c301e1da382f93e596238cf6d336.patch";
hash = "sha256-G7HbUhYEi6JJklN1z3JiOTnWLuWb27bMDyB/iGwywuY=";
})
];
strictDeps = true;
nativeBuildInputs = [
@ -66,6 +82,9 @@ stdenv.mkDerivation (finalAttrs: {
Cocoa
];
# Tests for SDL_net.h for modem & IPX support, not automatically picked up due to being in SDL2 subdirectory
env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL2_net}/include/SDL2";
configureFlags = [ "--enable-sdl2" ];
enableParallelBuilding = true;

View file

@ -50,6 +50,9 @@ stdenv.mkDerivation rec {
libGLU
]);
# Tests for SDL_net.h for modem & IPX support, not automatically picked up due to being in SDL subdirectory
env.NIX_CFLAGS_COMPILE = "-I${lib.getDev SDL_net}/include/SDL";
hardeningDisable = [ "format" ];
configureFlags = lib.optional stdenv.isDarwin "--disable-sdltest";

View file

@ -1,19 +1,19 @@
# Generated by ./update.sh - do not update manually!
# Last updated: 2023-11-05
# Last updated: 2023-12-02
{
compatList = {
rev = "e9c4e5da6e5e88e889c87582dfd826d204ca8782";
rev = "3447075b5b565adcef1de0b47dd32c33f3c52e75";
hash = "sha256:1hdsza3wf9a0yvj6h55gsl7xqvhafvbz1i8paz9kg7l49b0gnlh1";
};
mainline = {
version = "1611";
hash = "sha256:18rrw63j2zjwakbn99wbzprb1rpmlznl6gb09ay9sq8brxy7zjsv";
version = "1639";
hash = "sha256:10wj8yrk4q3sq0fqj6qqd45sjsv0ch3ldbxayirzv002lqb62jcy";
};
ea = {
version = "3966";
distHash = "sha256:1p60455s0h3dwigxm2lxdfgxgv4l2ibwybisja1khcy4i8lgss03";
fullHash = "sha256:1jq2bfbv9a6i3dlqsdgmi87rccvks45iyybxwf8p6rxdjqh4bvl2";
version = "4003";
distHash = "sha256:1sr79h3v2nlkr114d14bry5bkgniw1kqq2bxjlzr5x9hlvavz710";
fullHash = "sha256:0kx8f8h6l86prxm0v3fxmff43d6swmcrvzy5vg54b55zvqm1byr1";
};
}

View file

@ -1,7 +1,7 @@
{ callPackage, ... } @ args:
{ callPackage, ... }:
callPackage ./generic.nix (args // {
callPackage ./generic.nix {
version = "5.2.0";
kde-channel = "stable";
hash = "sha256-02oZc4pZw2dQucx1IuPJslWQGjOqwGmgeDgnUIqKkpc=";
})
}

View file

@ -10,7 +10,6 @@
, version
, kde-channel
, hash
, callPackage
}:
mkDerivation rec {
@ -18,7 +17,7 @@ mkDerivation rec {
inherit version;
src = fetchurl {
url = "https://download.kde.org/${kde-channel}/${pname}/${version}/${pname}-${version}.tar.gz";
url = "mirror://kde/${kde-channel}/krita/${version}/krita-${version}.tar.gz";
inherit hash;
};

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, cmake, fftw
{ stdenv, lib, fetchFromGitHub, fftw
, qtbase, qmake, wrapQtAppsHook }:
stdenv.mkDerivation rec {

View file

@ -8,16 +8,16 @@
rustPlatform.buildRustPackage rec {
pname = "clipcat";
version = "0.9.0";
version = "0.11.0";
src = fetchFromGitHub {
owner = "xrelkd";
repo = pname;
rev = "v${version}";
hash = "sha256-P/8C+Gfmcuy7DGbH8+y6ZYlRrmV5t9U/uiykZ4bERSU=";
hash = "sha256-6L6u8inHkiEz7lp3T0a237z3JQwGDWKXtTBVNIKct64=";
};
cargoHash = "sha256-r2J5ysvLl7hKXfW+BIF15vBygUkuwNj222P1AckUu0E=";
cargoHash = "sha256-uzIqIGjCZEmChM3uVAnAp7eTIznTLXW/4t+NVoryjtk=";
nativeBuildInputs = [
protobuf

View file

@ -13,16 +13,16 @@
}:
crystal.buildCrystalPackage rec {
pname = "Collision";
version = "3.5.0";
version = "3.6.0";
src = fetchFromGitHub {
owner = "GeopJr";
repo = "Collision";
rev = "v${version}";
hash = "sha256-YNMtiMSzDqBlJJTUntRtL6oXg+IuyAobQ4FYcwOdOas=";
hash = "sha256-Qxe4ILDdfYfxu95EvKRTvkAOgDIZDiLymBlZouBWn0M=";
};
patches = [ ./make.patch ];
shardsFile = ./collision-shards.nix;
shardsFile = ./shards.nix;
# Crystal compiler has a strange issue with OpenSSL. The project will not compile due to
# main_module:(.text+0x6f0): undefined reference to `SSL_library_init'

View file

@ -4,16 +4,6 @@
rev = "v1.0.0";
sha256 = "1y27m4170rr4532j56grzhwbz8hj6z7j3zfkd0jnfwnsxclks1kc";
};
non-blocking-spawn = {
url = "https://github.com/geopjr/non-blocking-spawn.git";
rev = "v1.0.5";
sha256 = "139gr87zlw0k9kf6pf9k2d88aa9x3kcnfg34qpbqrwsrck7708za";
};
version_from_shard = {
url = "https://github.com/hugopl/version_from_shard.git";
rev = "v1.2.5";
sha256 = "0xizj0q4rd541rwjbx04cjifc2gfx4l5v6q2y7gmd0ndjmkgb8ik";
};
gio = {
url = "https://github.com/hugopl/gio.cr.git";
rev = "v0.1.0";
@ -21,22 +11,27 @@
};
gtk4 = {
url = "https://github.com/hugopl/gtk4.cr.git";
rev = "v0.13.0";
sha256 = "0xsrcsh5qvwm9l7cywxpw49rfv94mkkqcliws4zkhxgr9isnirbm";
rev = "v0.15.0";
sha256 = "100j5k4sfc2dpj3nplzjcaxw1bwy3hsy5cw93asg00kda9h8dbb1";
};
harfbuzz = {
url = "https://github.com/hugopl/harfbuzz.cr.git";
rev = "v0.1.0";
sha256 = "1lcb778b4k34sqxg979fpl425bbzf2gikjf2m5aj6x1fzxn46jg0";
rev = "v0.2.0";
sha256 = "06wgqxwyib5416yp53j2iwcbr3bl4jjxb1flm7z103l365par694";
};
libadwaita = {
url = "https://github.com/geopjr/libadwaita.cr.git";
rev = "cffabb56e911d2a90c53c2fd14d6bd08bf5ac446";
sha256 = "0gcq04vgxg0vff9fcalgzq9phq0y76diihkzhlfn91bdxwkx7rl3";
};
non-blocking-spawn = {
url = "https://github.com/geopjr/non-blocking-spawn.git";
rev = "v1.0.5";
sha256 = "139gr87zlw0k9kf6pf9k2d88aa9x3kcnfg34qpbqrwsrck7708za";
};
pango = {
url = "https://github.com/hugopl/pango.cr.git";
rev = "v0.2.0";
sha256 = "0dl3qrhi2ybylmvzx1x5gsznp2pcdkc50waxrljxwnf5avn8ixsf";
};
libadwaita = {
url = "https://github.com/geopjr/libadwaita.cr.git";
rev = "203737fc96bb48e1a710cb68e896d2c5b9c1a6e5";
sha256 = "11c2knxncjnwg4cgppfllxwgli1hf6sjyyx4ii8rgmnbird6xcmh";
};
}

View file

@ -2,12 +2,12 @@
stdenvNoCC.mkDerivation rec {
pname = "fluidd";
version = "1.26.0";
version = "1.26.3";
src = fetchurl {
name = "fluidd-v${version}.zip";
url = "https://github.com/cadriel/fluidd/releases/download/v${version}/fluidd.zip";
sha256 = "sha256-Y0d3TgSLrxA2kPWlHrNC8GlEcD7s4VZR2YZlderZ3gI=";
sha256 = "sha256-42Whp2U6gq8vOjmQnU4Yy8EBsQ21av7wIQhMVFmiFfU=";
};
nativeBuildInputs = [ unzip ];

View file

@ -20,14 +20,14 @@
stdenv.mkDerivation rec {
pname = "gnome-firmware";
version = "43.2";
version = "45.0";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "gnome-firmware";
rev = version;
sha256 = "oplypNSj028cVBn+eJxNm5pJltp7Cw5Oto/L39pI0vA=";
sha256 = "sha256-KVyxOl7RdL80ZiEyiT+XGa/6Ss2g+5y+LIrR9TSRE+I=";
};
nativeBuildInputs = [

View file

@ -1,12 +1,12 @@
{ lib, python3, fetchPypi, khard, testers }:
python3.pkgs.buildPythonApplication rec {
version = "0.19.0";
version = "0.19.1";
pname = "khard";
src = fetchPypi {
inherit pname version;
sha256 = "sha256-5ki+adfz7m0+FbxC9+IXHLn8oeLKLkASuU15lyDATKQ=";
sha256 = "sha256-WfMKDaPD2j6wT02+GO5HY5E7aF2Z7IQY/VdKiMSRxJA=";
};
SETUPTOOLS_SCM_PRETEND_VERSION = version;

View file

@ -4,15 +4,12 @@
knotifyconfig, kidletime, kwindowsystem, ktextwidgets, kcrash
}:
let
mkDerivation rec {
pname = "rsibreak";
version = "0.12";
revision = ".13";
in mkDerivation rec {
name = "rsibreak-${version}${revision}";
version = "0.12.13";
src = fetchurl {
url = "https://download.kde.org/stable/${pname}/${version}/${name}.tar.xz";
url = "mirror://kde/stable/rsibreak/${version}/rsibreak-${version}.tar.xz";
sha256 = "N0C+f788fq5yotSC54H2K4WDc6PnGi8Nh/vXL4v0fxo=";
};

View file

@ -3,7 +3,6 @@
, fetchFromGitHub
, cmake
, pkg-config
, qmake
, qtbase
, qtscript
, qtsvg

View file

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "driftctl";
version = "0.39.0";
version = "0.40.0";
src = fetchFromGitHub {
owner = "snyk";
repo = "driftctl";
rev = "v${version}";
sha256 = "sha256-1i5x05q0Mo3E3ExM9qONRtQCH3nO7pXyNqOaAtz7qYE=";
sha256 = "sha256-IDKfW0NCEsgKXpHA7SwkHjMeoGAIYITlDVR/vI/b9hk=";
};
vendorHash = "sha256-H/+LORl7Bjy1NshjtWDzj13YCrlQQgtBr4+Rz/rxQkY=";
vendorHash = "sha256-JFvC9PReziktHSXbltGkGHjVR8hTM1hPJ0OqrZQXRQM=";
nativeBuildInputs = [ installShellFiles ];

View file

@ -2,25 +2,25 @@
buildGoModule rec {
pname = "istioctl";
version = "1.18.2";
version = "1.20.0";
src = fetchFromGitHub {
owner = "istio";
repo = "istio";
rev = version;
sha256 = "sha256-eSftWXwV8W/mpxZNvUUDS27z3vU36vJj/z0/Wo5qEts=";
hash = "sha256-V07e0IbHlQLSVxzWClHX8PrwKY4DaMZmwy3IwGTD7jI=";
};
vendorHash = "sha256-tuiQ11pcfoTOu+OVey+YmU4tTOj5C7p5bKP2ylEkUug=";
vendorHash = "sha256-PQYlqi4KDietVV2J5KiaoFqHg12l0bomj57lsTYkSPo=";
nativeBuildInputs = [ installShellFiles ];
# Bundle release metadata
ldflags = let
attrs = [
"istio.io/pkg/version.buildVersion=${version}"
"istio.io/pkg/version.buildStatus=Nix"
"istio.io/pkg/version.buildTag=${version}"
"istio.io/pkg/version.buildHub=docker.io/istio"
"istio.io/istio/pkg/version.buildVersion=${version}"
"istio.io/istio/pkg/version.buildStatus=Nix"
"istio.io/istio/pkg/version.buildTag=${version}"
"istio.io/istio/pkg/version.buildHub=docker.io/istio"
];
in ["-s" "-w" "${lib.concatMapStringsSep " " (attr: "-X ${attr}") attrs}"];

View file

@ -12,9 +12,9 @@
buildGoModule rec {
pname = "minikube";
version = "1.31.2";
version = "1.32.0";
vendorHash = "sha256-5ChPdSIRI+Q3OLW+joukMpIFbUjU4TKpXT4wAARVVP8=";
vendorHash = "sha256-MzB+my1NwvZx9qfojuOlTHmuY6CyLFlrgr4UEuC5FBk=";
doCheck = false;
@ -22,7 +22,7 @@ buildGoModule rec {
owner = "kubernetes";
repo = "minikube";
rev = "v${version}";
sha256 = "sha256-Ha0liXc2oXJ3dLty1veN5xN5BUKIiNXe8NTGqWDbTD0=";
sha256 = "sha256-2EWaMpcr4F1wRzIP1rPg1a/Sjd1x+oo2ee90k4Ie8cU=";
};
nativeBuildInputs = [ installShellFiles pkg-config which makeWrapper ];

View file

@ -10,16 +10,16 @@
buildGoModule rec {
pname = "nerdctl";
version = "1.7.0";
version = "1.7.1";
src = fetchFromGitHub {
owner = "containerd";
repo = pname;
rev = "v${version}";
hash = "sha256-PR3vhNfY84vKQaAMKmPPmY7kK3BRxELAC34NfMYXQPk=";
hash = "sha256-jjYSvY7NT9G/tcsM+9qHnsL81QKItyVMZZWuD2mpln0=";
};
vendorHash = "sha256-qLxUAICm/SGy2iHAbg+12xmId+P335dFyjltYlB45iw=";
vendorHash = "sha256-O48QzyQLkt7T9j+CKQG8TcHlmtS+ykoMoCamsEswPjk=";
nativeBuildInputs = [ makeWrapper installShellFiles ];

View file

@ -6,20 +6,21 @@
, openssl
, CoreServices
, Security
, SystemConfiguration
}:
rustPlatform.buildRustPackage rec {
pname = "twitch-tui";
version = "2.5.1";
version = "2.6.0";
src = fetchFromGitHub {
owner = "Xithrius";
repo = pname;
rev = "refs/tags/v${version}";
hash = "sha256-oqsLqmyLrvb8u9cj68OemUfunbP98/BZjmoGl1Mctrk=";
hash = "sha256-UPcJHuqDnyg2U3aNtd44dqt2iC2iLkR4wzsOjAByISw=";
};
cargoHash = "sha256-DEHMF6sTH3BF8lqOV5G4F3+Tsafrhzr0YLqSgV3gq9I=";
cargoHash = "sha256-HFBCLYjrDAPU2EZ1NQ+A0mAFo5jvj79Ghge6+D1PBAg=";
nativeBuildInputs = [
pkg-config
@ -30,6 +31,7 @@ rustPlatform.buildRustPackage rec {
] ++ lib.optionals stdenv.isDarwin [
CoreServices
Security
SystemConfiguration
];
meta = with lib; {

View file

@ -36,14 +36,14 @@ let
in
assert lib.all (p: p.enabled -> ! (builtins.elem null p.buildInputs)) plugins;
stdenv.mkDerivation rec {
version = "4.1.1";
version = "4.1.2";
pname = "weechat";
hardeningEnable = [ "pie" ];
src = fetchurl {
url = "https://weechat.org/files/src/weechat-${version}.tar.xz";
hash = "sha256-d0I4YU2OY+TT1ac6bLZA7Hb+BsyYK4eoySNlFXkndnU=";
hash = "sha256-mpuRD752i7nefHrJRPXbjyM4M/NFsuUF4W7G7zXv+7U=";
};
# Why is this needed? https://github.com/weechat/weechat/issues/2031

View file

@ -2,16 +2,16 @@
buildGoModule rec {
pname = "juju";
version = "3.2.3";
version = "3.3.0";
src = fetchFromGitHub {
owner = "juju";
repo = "juju";
rev = "juju-${version}";
sha256 = "sha256-sUlM4bLy/kluZmGOzMACz92GG46XYKicNPP5k2FPSGA=";
sha256 = "sha256-8VSSTeN4a1zvMi4L4dR3q+kWKgYq8Jg1jDvFjEBD7jI=";
};
vendorHash = "sha256-mPEixXVuxAqgkBoNqIYnZaFJynHJsnmamaHqyh/svwQ=";
vendorHash = "sha256-3hZywUpJe6g8IujbK0hcp12S6OKswLj/YYJGuPG06Es=";
# Disable tests because it attempts to use a mongodb instance
doCheck = false;

View file

@ -44,11 +44,11 @@
stdenv.mkDerivation rec {
pname = "evolution";
version = "3.50.1";
version = "3.50.2";
src = fetchurl {
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
sha256 = "5CA240m4Mrkbprxg+Zxkte0AjrDrM7wipU8p9I7r1Zg=";
sha256 = "D4M1214mmFRHi01tlHLu2s0Kiev3+0+DdWJDMMqqcSA=";
};
nativeBuildInputs = [

View file

@ -15,13 +15,13 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "pjsip";
version = "2.13.1";
version = "2.14";
src = fetchFromGitHub {
owner = finalAttrs.pname;
repo = "pjproject";
rev = "refs/tags/${finalAttrs.version}";
hash = "sha256-R1iKIkWyNCRV2PjQgTqKmJYUgHAZrREanD60Jz6MY1Y=";
hash = "sha256-PWCeIvnBAOqbcNYPhIY7hykdvLzoD9lssSViCCPNT68=";
};
patches = [
@ -35,12 +35,19 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional stdenv.isLinux alsa-lib
++ lib.optionals stdenv.isDarwin [ AppKit CoreFoundation Security ];
env = lib.optionalAttrs (stdenv.cc.libcxx != null) {
# work around https://github.com/NixOS/nixpkgs/issues/166205
NIX_LDFLAGS = "-l${stdenv.cc.libcxx.cxxabi.libName}";
} // lib.optionalAttrs stdenv.cc.isClang {
CXXFLAGS = "-std=c++11";
} // lib.optionalAttrs stdenv.isDarwin {
NIX_CFLAGS_LINK = "-headerpad_max_install_names";
};
preConfigure = ''
export LD=$CC
'';
NIX_CFLAGS_LINK = lib.optionalString stdenv.isDarwin "-headerpad_max_install_names";
postBuild = lib.optionalString pythonSupport ''
make -C pjsip-apps/src/swig/python
'';

View file

@ -0,0 +1,25 @@
From 29b58e29c813d9bf0b31139a19b556614c28638e Mon Sep 17 00:00:00 2001
From: Flakebi <flakebi@t-online.de>
Date: Sat, 2 Dec 2023 16:26:22 +0100
Subject: [PATCH 1/6] Fix flask 2.3 issue
'Blueprint' object has no attribute 'before_app_first_request'
---
powerdnsadmin/routes/index.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/powerdnsadmin/routes/index.py b/powerdnsadmin/routes/index.py
index d56ce61..2176bd6 100644
--- a/powerdnsadmin/routes/index.py
+++ b/powerdnsadmin/routes/index.py
@@ -46,7 +46,6 @@ index_bp = Blueprint('index',
url_prefix='/')
-@index_bp.before_app_first_request
def register_modules():
global google
global github
--
2.42.0

View file

@ -0,0 +1,34 @@
From c60a9658fe2ca429327680fbffb86f609d98c52c Mon Sep 17 00:00:00 2001
From: Flakebi <flakebi@t-online.de>
Date: Sat, 2 Dec 2023 16:27:49 +0100
Subject: [PATCH 2/6] Remove cssrewrite filter
---
powerdnsadmin/assets.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/powerdnsadmin/assets.py b/powerdnsadmin/assets.py
index d46d431..3c582be 100644
--- a/powerdnsadmin/assets.py
+++ b/powerdnsadmin/assets.py
@@ -13,7 +13,7 @@ css_login = Bundle(
'node_modules/@fortawesome/fontawesome-free/css/all.css',
'node_modules/icheck/skins/square/blue.css',
'node_modules/admin-lte/dist/css/adminlte.css',
- filters=('rcssmin', 'cssrewrite'),
+ filters=('rcssmin'),
output='generated/login.css')
js_login = Bundle(
@@ -37,7 +37,7 @@ css_main = Bundle(
'node_modules/admin-lte/dist/css/adminlte.css',
'custom/css/custom.css',
'node_modules/bootstrap-datepicker/dist/css/bootstrap-datepicker.css',
- filters=('rcssmin', 'cssrewrite'),
+ filters=('rcssmin'),
output='generated/main.css')
js_main = Bundle(
--
2.42.0

View file

@ -0,0 +1,25 @@
From 8c320a34bcca6dc2c1b423a1445235bf178b653e Mon Sep 17 00:00:00 2001
From: Flakebi <flakebi@t-online.de>
Date: Sat, 2 Dec 2023 16:31:02 +0100
Subject: [PATCH 3/6] Fix flask-migrate 4.0 compatibility
See https://github.com/PowerDNS-Admin/PowerDNS-Admin/issues/1376
---
migrations/env.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/migrations/env.py b/migrations/env.py
index 4742e14..739d753 100755
--- a/migrations/env.py
+++ b/migrations/env.py
@@ -73,7 +73,6 @@ def run_migrations_online():
context.configure(connection=connection,
target_metadata=target_metadata,
process_revision_directives=process_revision_directives,
- render_as_batch=config.get_main_option('sqlalchemy.url').startswith('sqlite:'),
**current_app.extensions['migrate'].configure_args)
try:
--
2.42.0

View file

@ -0,0 +1,26 @@
From 4b4ac26ef1cbb0b5b2354c251b216498325d0411 Mon Sep 17 00:00:00 2001
From: Flakebi <flakebi@t-online.de>
Date: Sat, 2 Dec 2023 16:31:50 +0100
Subject: [PATCH 4/6] Fix flask-session and powerdns-admin compatibility
flask-session and powerdns-admin both try to add sqlalchemy to flask.
Reuse the database for flask-session.
---
powerdnsadmin/__init__.py | 1 +
1 file changed, 1 insertion(+)
diff --git a/powerdnsadmin/__init__.py b/powerdnsadmin/__init__.py
index d447a00..653af33 100755
--- a/powerdnsadmin/__init__.py
+++ b/powerdnsadmin/__init__.py
@@ -60,6 +60,7 @@ def create_app(config=None):
if 'SESSION_TYPE' in os.environ:
app.config['SESSION_TYPE'] = os.environ.get('SESSION_TYPE')
+ app.config['SESSION_SQLALCHEMY'] = models.base.db
sess = Session(app)
# create sessions table if using sqlalchemy backend
--
2.42.0

View file

@ -0,0 +1,27 @@
From 3eb1a408758b68543c73d5214b467c2905fbea2a Mon Sep 17 00:00:00 2001
From: Flakebi <flakebi@t-online.de>
Date: Sat, 2 Dec 2023 16:32:36 +0100
Subject: [PATCH 5/6] Use app context to create routes
Routes creates session database tables, so it needs a context.
---
powerdnsadmin/__init__.py | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/powerdnsadmin/__init__.py b/powerdnsadmin/__init__.py
index 653af33..bc6f7df 100755
--- a/powerdnsadmin/__init__.py
+++ b/powerdnsadmin/__init__.py
@@ -73,7 +73,8 @@ def create_app(config=None):
# Load app's components
assets.init_app(app)
models.init_app(app)
- routes.init_app(app)
+ with app.app_context():
+ routes.init_app(app)
services.init_app(app)
# Register filters
--
2.42.0

View file

@ -0,0 +1,27 @@
From 86dcc9f308d2ca65704953f1ff9fe043d743e536 Mon Sep 17 00:00:00 2001
From: Flakebi <flakebi@t-online.de>
Date: Sat, 2 Dec 2023 16:33:45 +0100
Subject: [PATCH 6/6] Register modules before starting
Fixes flask 2.3: 'Blueprint' object has no attribute 'before_app_first_request'
---
run.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/run.py b/run.py
index 5ffcde3..52e719d 100755
--- a/run.py
+++ b/run.py
@@ -1,6 +1,9 @@
#!/usr/bin/env python3
from powerdnsadmin import create_app
+from .powerdnsadmin.routes.index import register_modules
if __name__ == '__main__':
app = create_app()
+ with app.app_context():
+ register_modules()
app.run(debug=True, host=app.config.get('BIND_ADDRESS', '127.0.0.1'), port=app.config.get('PORT', '9191'))
--
2.42.0

View file

@ -19,6 +19,10 @@ let
lima lxml passlib pyasn1 pytimeparse pyyaml jinja2 itsdangerous webcolors werkzeug zipp zxcvbn
];
all_patches = [
./0001-Fix-flask-2.3-issue.patch
];
assets = mkYarnPackage {
inherit src version;
packageJSON = ./package.json;
@ -35,9 +39,9 @@ let
};
nativeBuildInputs = pythonDeps;
patchPhase = ''
sed -i -r -e "s|'rcssmin',\s?'cssrewrite'|'rcssmin'|g" powerdnsadmin/assets.py
'';
patches = all_patches ++ [
./0002-Remove-cssrewrite-filter.patch
];
buildPhase = ''
# The build process expects the directory to be writable
# with node_modules at a specific path
@ -86,15 +90,15 @@ in stdenv.mkDerivation {
exec python -m gunicorn.app.wsgiapp "powerdnsadmin:create_app()" "$@"
'';
patches = all_patches ++ [
./0003-Fix-flask-migrate-4.0-compatibility.patch
./0004-Fix-flask-session-and-powerdns-admin-compatibility.patch
./0005-Use-app-context-to-create-routes.patch
./0006-Register-modules-before-starting.patch
];
postPatch = ''
rm -r powerdnsadmin/static powerdnsadmin/assets.py
# flask-migrate 4.0 compatibility: https://github.com/PowerDNS-Admin/PowerDNS-Admin/issues/1376
substituteInPlace migrations/env.py --replace "render_as_batch=config.get_main_option('sqlalchemy.url').startswith('sqlite:')," ""
# flask-session and powerdns-admin both try to add sqlalchemy to flask.
# Reuse the database for flask-session
substituteInPlace powerdnsadmin/__init__.py --replace "sess = Session(app)" "app.config['SESSION_SQLALCHEMY'] = models.base.db; sess = Session(app)"
# Routes creates session database tables, so it needs a context
substituteInPlace powerdnsadmin/__init__.py --replace "routes.init_app(app)" "with app.app_context(): routes.init_app(app)"
'';
installPhase = ''

View file

@ -1,6 +1,6 @@
{ stdenv, lib
, makeWrapper, dpkg, fetchurl, autoPatchelfHook
, curl, libkrb5, lttng-ust, libpulseaudio, gtk3, openssl_1_1, icu70, webkitgtk, librsvg, gdk-pixbuf, libsoup, glib-networking, graphicsmagick_q16, libva, libusb1, hiredis
, curl, libkrb5, lttng-ust, libpulseaudio, gtk3, openssl_1_1, icu70, webkitgtk, librsvg, gdk-pixbuf, libsoup, glib-networking, graphicsmagick_q16, libva, libusb1, hiredis, xcbutil
}:
stdenv.mkDerivation rec {
@ -43,6 +43,7 @@ stdenv.mkDerivation rec {
hiredis
libusb1
libva
xcbutil
];
unpackPhase = ''

View file

@ -10,7 +10,7 @@ mkDerivation rec {
version = "2.28.0";
src = fetchurl {
url = "https://download.kde.org/stable/skrooge/${pname}-${version}.tar.xz";
url = "mirror://kde/stable/skrooge/skrooge-${version}.tar.xz";
sha256 = "sha256-s2SkGMBx7HVpr1NBUJpqji3PTPnw4RqnkakdQVC5ric=";
};

View file

@ -12,13 +12,13 @@
stdenv.mkDerivation rec {
pname = "treesheets";
version = "unstable-2023-09-15";
version = "unstable-2023-11-13";
src = fetchFromGitHub {
owner = "aardappel";
repo = "treesheets";
rev = "8e1ebe5a55f6a725ba6fe342b4b7604438d9d406";
sha256 = "zz2erN/ap6vT56khqbpANu1eV/C9eQ6SBWEV4GNbmEY=";
rev = "cbc18fe9910c6f10a9f2c2b8838ed047e00a5415";
sha256 = "uzb6gboWEu5GL92OFvcdeoaXYTU7jhzCmpI8LwhNVk0=";
};
nativeBuildInputs = [

View file

@ -7,13 +7,13 @@
let
pname = "trilium-desktop";
version = "0.62.2";
version = "0.62.3";
linuxSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-${version}.tar.xz";
linuxSource.sha256 = "17vg22kzg6346c8fb2kzm5zdspb9p24isd2irxhw7gh2z6vnwh1d";
linuxSource.sha256 = "1fw6mbcnqrgk627npsxp7xbyab7108msihlkf5i998rji8vaz64m";
darwinSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-mac-x64-${version}.zip";
darwinSource.sha256 = "03y5wkpdf4hc7724sjipgahlp6nh72z0wgm0qsqji5x5sxpambb8";
darwinSource.sha256 = "0wp58qjs5a91g80h115xnkkrih741bs3vjdr6wilwcp1blbgnxjj";
meta = metaCommon // {
mainProgram = "trilium";

View file

@ -3,8 +3,8 @@
let
serverSource.url = "https://github.com/zadam/trilium/releases/download/v${version}/trilium-linux-x64-server-${version}.tar.xz";
serverSource.sha256 = "0vip61c24n9d6bnpcgg9dwxc604xigmi1ayvm1mmlgah1fk56swg";
version = "0.62.2";
serverSource.sha256 = "00vb36a6kxdmn8m0nmzpdi2h7qmg63xrwwbq4hvjp2njjf32wki1";
version = "0.62.3";
in stdenv.mkDerivation {
pname = "trilium-server";
inherit version;

View file

@ -10,12 +10,12 @@
stdenv.mkDerivation (finalAttrs: {
pname = "flamp";
version = "2.2.09";
version = "2.2.10";
src = fetchgit {
url = "https://git.code.sf.net/p/fldigi/flamp";
rev = "v${finalAttrs.version}";
hash = "sha256-ev+Ik/e1zQGTH4FeiCDPHbrcXlctencEo4R0+M2Kg+g=";
hash = "sha256-c0Q9QD3O8eQxRqaBhr79iuNVtWGC8kl+YWYS4xMgDN4=";
};
nativeBuildInputs = [

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "gridtracker";
version = "1.23.1112";
version = "1.23.1202";
src = fetchFromGitLab {
owner = "gridtracker.org";
repo = "gridtracker";
rev = "v${version}";
sha256 = "sha256-0A1/P57RtUExxflr2XayHPEyr28B6UDYY7pVCAJpWX0=";
sha256 = "sha256-XrHA+h6qAYyZjp/C7+oS3eAvX0ptD+T4UKFzM2ROBCw=";
};
nativeBuildInputs = [ wrapGAppsHook ];

View file

@ -11,13 +11,13 @@
gnuradio3_8Minimal.pkgs.mkDerivation rec {
pname = "inspectrum";
version = "0.2.3";
version = "0.3.1";
src = fetchFromGitHub {
owner = "miek";
repo = "inspectrum";
rev = "v${version}";
sha256 = "1x6nyn429pk0f7lqzskrgsbq09mq5787xd4piic95add6n1cc355";
sha256 = "sha256-yY2W2hQpj8TIxiQBSbQHq0J16n74OfIwMDxFt3mLZYc=";
};
nativeBuildInputs = [

View file

@ -52,13 +52,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "sdrangel";
version = "7.17.0";
version = "7.17.1";
src = fetchFromGitHub {
owner = "f4exb";
repo = "sdrangel";
rev = "v${finalAttrs.version}";
hash = "sha256-v2ESMFAbsYbZVVIHlGCU01QPDorUZyLiUEhexr6zF5o=";
hash = "sha256-TMYFKt4nkNKZdlxszbVM55RMidBBD2HTaYc1OqW9/ck=";
};
nativeBuildInputs = [

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "kallisto";
version = "0.50.0";
version = "0.50.1";
src = fetchFromGitHub {
repo = "kallisto";
owner = "pachterlab";
rev = "v${version}";
sha256 = "sha256-GJ8xMbHrnTzvPoMSczpugbIjh79cT3ngX3tLtwzlfEQ=";
sha256 = "sha256-JJZJOl4u6FzngrrMuC2AfD5ry2LBOT8tdz2piH+9LFE=";
};
nativeBuildInputs = [ autoconf cmake ];

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