Merge remote-tracking branch 'origin/master' into staging-next
Fixed conflict in pkgs/applications/graphics/krita/ krita: 5.1.5 -> 5.2.07a40fdc288
, and treewide: use kde mirror everywhere, don't use pname in download urlsaa15f5066d
This commit is contained in:
commit
5b8deaceca
413 changed files with 9421 additions and 4081 deletions
3
.github/CODEOWNERS
vendored
3
.github/CODEOWNERS
vendored
|
@ -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
|
||||
|
|
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
2
.github/ISSUE_TEMPLATE/bug_report.md
vendored
|
@ -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].
|
||||
|
||||
|
|
2
.github/ISSUE_TEMPLATE/build_failure.md
vendored
2
.github/ISSUE_TEMPLATE/build_failure.md
vendored
|
@ -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].
|
||||
|
||||
|
|
|
@ -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].
|
||||
|
||||
|
|
|
@ -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].
|
||||
|
||||
|
|
2
.github/ISSUE_TEMPLATE/packaging_request.md
vendored
2
.github/ISSUE_TEMPLATE/packaging_request.md
vendored
|
@ -18,7 +18,7 @@ assignees: ''
|
|||
* license: mit, bsd, gpl2+ , ...
|
||||
* platforms: unix, linux, darwin, ...
|
||||
|
||||
**Priorities**
|
||||
---
|
||||
|
||||
Add a :+1: [reaction] to [issues you find important].
|
||||
|
||||
|
|
|
@ -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].
|
||||
|
||||
|
|
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
2
.github/PULL_REQUEST_TEMPLATE.md
vendored
|
@ -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].
|
||||
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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." <>
|
||||
|
|
|
@ -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
|
||||
|
|
|
|
@ -317,6 +317,7 @@ with lib.maintainers; {
|
|||
das-g
|
||||
imincik
|
||||
nh2
|
||||
nialov
|
||||
sikmir
|
||||
willcohen
|
||||
];
|
||||
|
|
|
@ -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
|
||||
```
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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 = {
|
||||
|
|
394
nixos/modules/services/misc/guix/default.nix
Normal file
394
nixos/modules/services/misc/guix/default.nix
Normal 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;
|
||||
})
|
||||
]);
|
||||
}
|
|
@ -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";
|
||||
}
|
||||
|
|
|
@ -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}
|
||||
'';
|
||||
};
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 ''
|
||||
|
|
|
@ -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; };
|
||||
|
|
38
nixos/tests/guix/basic.nix
Normal file
38
nixos/tests/guix/basic.nix
Normal 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}")
|
||||
'';
|
||||
})
|
8
nixos/tests/guix/default.nix
Normal file
8
nixos/tests/guix/default.nix
Normal 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; };
|
||||
}
|
95
nixos/tests/guix/publish.nix
Normal file
95
nixos/tests/guix/publish.nix
Normal 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'")
|
||||
'';
|
||||
})
|
52
nixos/tests/guix/scripts/add-existing-files-to-store.scm
Normal file
52
nixos/tests/guix/scripts/add-existing-files-to-store.scm
Normal 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))))
|
8
nixos/tests/guix/scripts/create-file-to-store.scm
Normal file
8
nixos/tests/guix/scripts/create-file-to-store.scm
Normal 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))))))
|
|
@ -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")
|
||||
'';
|
||||
})
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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" ];
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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
|
||||
|
|
1055
pkgs/applications/audio/gnome-podcasts/Cargo.lock
generated
1055
pkgs/applications/audio/gnome-podcasts/Cargo.lock
generated
File diff suppressed because it is too large
Load diff
|
@ -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 = [
|
||||
|
|
|
@ -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=";
|
||||
};
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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
|
@ -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}`.
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
|
|
|
@ -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 = ".";
|
||||
};
|
||||
|
|
|
@ -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/,,
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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 .
|
||||
'';
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{ callPackage, ... } @ args:
|
||||
{ callPackage, ... }:
|
||||
|
||||
callPackage ./generic.nix (args // {
|
||||
callPackage ./generic.nix {
|
||||
version = "5.2.0";
|
||||
kde-channel = "stable";
|
||||
hash = "sha256-02oZc4pZw2dQucx1IuPJslWQGjOqwGmgeDgnUIqKkpc=";
|
||||
})
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ stdenv, lib, fetchFromGitHub, cmake, fftw
|
||||
{ stdenv, lib, fetchFromGitHub, fftw
|
||||
, qtbase, qmake, wrapQtAppsHook }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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'
|
||||
|
|
|
@ -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";
|
||||
};
|
||||
}
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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=";
|
||||
};
|
||||
|
||||
|
|
|
@ -3,7 +3,6 @@
|
|||
, fetchFromGitHub
|
||||
, cmake
|
||||
, pkg-config
|
||||
, qmake
|
||||
, qtbase
|
||||
, qtscript
|
||||
, qtsvg
|
||||
|
|
|
@ -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 ];
|
||||
|
||||
|
|
|
@ -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}"];
|
||||
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 ];
|
||||
|
||||
|
|
|
@ -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; {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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
|
||||
'';
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 = ''
|
||||
|
|
|
@ -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 = ''
|
||||
|
|
|
@ -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=";
|
||||
};
|
||||
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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";
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 ];
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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 = [
|
||||
|
|
|
@ -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
Loading…
Reference in a new issue