Project import generated by Copybara.

GitOrigin-RevId: d3f7e969b9860fb80750147aeb56dab1c730e756
This commit is contained in:
Default email 2021-03-23 19:22:30 +00:00
parent 8b173ec8a3
commit d0d8e8fc71
607 changed files with 16011 additions and 13627 deletions

View file

@ -79,11 +79,11 @@
/pkgs/development/tools/poetry2nix @adisbladis /pkgs/development/tools/poetry2nix @adisbladis
# Haskell # Haskell
/pkgs/development/compilers/ghc @cdepillabout /pkgs/development/compilers/ghc @cdepillabout @sternenseemann
/pkgs/development/haskell-modules @cdepillabout /pkgs/development/haskell-modules @cdepillabout @sternenseemann
/pkgs/development/haskell-modules/default.nix @cdepillabout /pkgs/development/haskell-modules/default.nix @cdepillabout @sternenseemann
/pkgs/development/haskell-modules/generic-builder.nix @cdepillabout /pkgs/development/haskell-modules/generic-builder.nix @cdepillabout @sternenseemann
/pkgs/development/haskell-modules/hoogle.nix @cdepillabout /pkgs/development/haskell-modules/hoogle.nix @cdepillabout @sternenseemann
# Perl # Perl
/pkgs/development/interpreters/perl @volth @stigtsp /pkgs/development/interpreters/perl @volth @stigtsp

146
third_party/nixpkgs/.github/labeler.yml vendored Normal file
View file

@ -0,0 +1,146 @@
"6.topic: agda":
- doc/languages-frameworks/agda.section.md
- nixos/tests/agda.nix
- pkgs/build-support/agda/**/*
- pkgs/development/libraries/agda/**/*
- pkgs/top-level/agda-packages.nix
"6.topic: cinnamon":
- pkgs/desktops/cinnamon/**/*
"6.topic: emacs":
- nixos/modules/services/editors/emacs.nix
- nixos/modules/services/editors/emacs.xml
- nixos/tests/emacs-daemon.nix
- pkgs/applications/editors/emacs-modes/**/*
- pkgs/applications/editors/emacs/**/*
- pkgs/build-support/emacs/**/*
- pkgs/top-level/emacs-packages.nix
"6.topic: erlang":
- doc/languages-frameworks/beam.section.md
- pkgs/development/beam-modules/**/*
- pkgs/development/interpreters/elixir/**/*
- pkgs/development/interpreters/erlang/**/*
- pkgs/development/tools/build-managers/rebar/**/*
- pkgs/development/tools/build-managers/rebar3/**/*
- pkgs/development/tools/erlang/**/*
- pkgs/top-level/beam-packages.nix
"6.topic: fetch":
- pkgs/build-support/fetch*/**/*
"6.topic: GNOME":
- doc/languages-frameworks/gnome.section.md
- nixos/modules/services/desktops/gnome3/**/*
- nixos/modules/services/x11/desktop-managers/gnome3.nix
- nixos/tests/gnome3-xorg.nix
- nixos/tests/gnome3.nix
- pkgs/desktops/gnome-3/**/*
"6.topic: golang":
- doc/languages-frameworks/go.section.md
- pkgs/development/compilers/go/**/*
- pkgs/development/go-modules/**/*
- pkgs/development/go-packages/**/*
"6.topic: haskell":
- doc/languages-frameworks/haskell.section.md
- pkgs/development/compilers/ghc/**/*
- pkgs/development/haskell-modules/**/*
- pkgs/development/tools/haskell/**/*
- pkgs/top-level/haskell-packages.nix
"6.topic: kernel":
- pkgs/build-support/kernel/**/*
"6.topic: lua":
- pkgs/development/interpreters/lua-5/**/*
- pkgs/development/interpreters/luajit/**/*
- pkgs/development/lua-modules/**/*
- pkgs/top-level/lua-packages.nix
"6.topic: nixos":
- nixos/**/*
"6.topic: ocaml":
- doc/languages-frameworks/ocaml.section.md
- pkgs/development/compilers/ocaml/**/*
- pkgs/development/compilers/reason/**/*
- pkgs/development/ocaml-modules/**/*
- pkgs/development/tools/ocaml/**/*
- pkgs/top-level/ocaml-packages.nix
"6.topic: pantheon":
- nixos/modules/services/desktops/pantheon/**/*
- nixos/modules/services/x11/desktop-managers/pantheon.nix
- nixos/modules/services/x11/display-managers/lightdm-greeters/pantheon.nix
- nixos/tests/pantheon.nix
- pkgs/desktops/pantheon/**/*
"6.topic: policy discussion":
- .github/**/*
"6.topic: printing":
- nixos/modules/services/printing/cupsd.nix
- pkgs/misc/cups/**/*
"6.topic: python":
- doc/languages-frameworks/python.section.md
- pkgs/development/interpreters/python/**/*
- pkgs/development/python-modules/**/*
- pkgs/top-level/python-packages.nix
"6.topic: qt/kde":
- doc/languages-frameworks/qt.section.md
- nixos/modules/services/x11/desktop-managers/plasma5.nix
- nixos/tests/plasma5.nix
- pkgs/applications/kde/**/*
- pkgs/desktops/plasma-5/**/*
- pkgs/development/libraries/kde-frameworks/**/*
- pkgs/development/libraries/qt-5/**/*
"6.topic: ruby":
- doc/languages-frameworks/ruby.section.md
- pkgs/development/interpreters/ruby/**/*
- pkgs/development/ruby-modules/**/*
"6.topic: rust":
- doc/languages-frameworks/rust.section.md
- pkgs/build-support/rust/**/*
- pkgs/development/compilers/rust/**/*
"6.topic: stdenv":
- pkgs/stdenv/**/*
"6.topic: steam":
- pkgs/games/steam/**/*
"6.topic: systemd":
- pkgs/os-specific/linux/systemd/**/*
- nixos/modules/system/boot/systemd*/**/*
"6.topic: TeX":
- doc/languages-frameworks/texlive.section.md
- pkgs/tools/typesetting/tex/**/*
"6.topic: vim":
- doc/languages-frameworks/vim.section.md
- pkgs/applications/editors/vim/**/*
- pkgs/misc/vim-plugins/**/*
"6.topic: xfce":
- nixos/doc/manual/configuration/xfce.xml
- nixos/modules/services/x11/desktop-managers/xfce.nix
- nixos/tests/xfce.nix
- pkgs/desktops/xfce/**/*
"8.has: changelog":
- nixos/doc/manual/release-notes/**/*
"8.has: documentation":
- doc/**/*
- nixos/doc/**/*
"8.has: module (update)":
- nixos/modules/**/*

View file

@ -0,0 +1,14 @@
name: "Label PR"
on:
pull_request_target:
jobs:
labels:
runs-on: ubuntu-latest
if: github.repository_owner == 'NixOS'
steps:
- uses: actions/labeler@v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
sync-labels: true

View file

@ -0,0 +1,38 @@
# ibus-engines.typing-booster {#sec-ibus-typing-booster}
This package is an ibus-based completion method to speed up typing.
## Activating the engine {#sec-ibus-typing-booster-activate}
IBus needs to be configured accordingly to activate `typing-booster`. The configuration depends on the desktop manager in use. For detailed instructions, please refer to the [upstream docs](https://mike-fabian.github.io/ibus-typing-booster/documentation.html).
On NixOS you need to explicitly enable `ibus` with given engines before customizing your desktop to use `typing-booster`. This can be achieved using the `ibus` module:
```nix
{ pkgs, ... }: {
i18n.inputMethod = {
enabled = "ibus";
ibus.engines = with pkgs.ibus-engines; [ typing-booster ];
};
}
```
## Using custom hunspell dictionaries {#sec-ibus-typing-booster-customize-hunspell}
The IBus engine is based on `hunspell` to support completion in many languages. By default the dictionaries `de-de`, `en-us`, `fr-moderne` `es-es`, `it-it`, `sv-se` and `sv-fi` are in use. To add another dictionary, the package can be overridden like this:
```nix
ibus-engines.typing-booster.override { langs = [ "de-at" "en-gb" ]; }
```
_Note: each language passed to `langs` must be an attribute name in `pkgs.hunspellDicts`._
## Built-in emoji picker {#sec-ibus-typing-booster-emoji-picker}
The `ibus-engines.typing-booster` package contains a program named `emoji-picker`. To display all emojis correctly, a special font such as `noto-fonts-emoji` is needed:
On NixOS it can be installed using the following expression:
```nix
{ pkgs, ... }: { fonts.fonts = with pkgs; [ noto-fonts-emoji ]; }
```

View file

@ -1,57 +0,0 @@
<section xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xml:id="sec-ibus-typing-booster">
<title>ibus-engines.typing-booster</title>
<para>
This package is an ibus-based completion method to speed up typing.
</para>
<section xml:id="sec-ibus-typing-booster-activate">
<title>Activating the engine</title>
<para>
IBus needs to be configured accordingly to activate <literal>typing-booster</literal>. The configuration depends on the desktop manager in use. For detailed instructions, please refer to the <link xlink:href="https://mike-fabian.github.io/ibus-typing-booster/documentation.html">upstream docs</link>.
</para>
<para>
On NixOS you need to explicitly enable <literal>ibus</literal> with given engines before customizing your desktop to use <literal>typing-booster</literal>. This can be achieved using the <literal>ibus</literal> module:
<programlisting>{ pkgs, ... }: {
i18n.inputMethod = {
enabled = "ibus";
ibus.engines = with pkgs.ibus-engines; [ typing-booster ];
};
}</programlisting>
</para>
</section>
<section xml:id="sec-ibus-typing-booster-customize-hunspell">
<title>Using custom hunspell dictionaries</title>
<para>
The IBus engine is based on <literal>hunspell</literal> to support completion in many languages. By default the dictionaries <literal>de-de</literal>, <literal>en-us</literal>, <literal>fr-moderne</literal> <literal>es-es</literal>, <literal>it-it</literal>, <literal>sv-se</literal> and <literal>sv-fi</literal> are in use. To add another dictionary, the package can be overridden like this:
<programlisting>ibus-engines.typing-booster.override {
langs = [ "de-at" "en-gb" ];
}</programlisting>
</para>
<para>
<emphasis>Note: each language passed to <literal>langs</literal> must be an attribute name in <literal>pkgs.hunspellDicts</literal>.</emphasis>
</para>
</section>
<section xml:id="sec-ibus-typing-booster-emoji-picker">
<title>Built-in emoji picker</title>
<para>
The <literal>ibus-engines.typing-booster</literal> package contains a program named <literal>emoji-picker</literal>. To display all emojis correctly, a special font such as <literal>noto-fonts-emoji</literal> is needed:
</para>
<para>
On NixOS it can be installed using the following expression:
<programlisting>{ pkgs, ... }: {
fonts.fonts = with pkgs; [ noto-fonts-emoji ];
}</programlisting>
</para>
</section>
</section>

View file

@ -12,7 +12,7 @@
<xi:include href="emacs.section.xml" /> <xi:include href="emacs.section.xml" />
<xi:include href="firefox.section.xml" /> <xi:include href="firefox.section.xml" />
<xi:include href="fish.section.xml" /> <xi:include href="fish.section.xml" />
<xi:include href="ibus.xml" /> <xi:include href="ibus.section.xml" />
<xi:include href="kakoune.section.xml" /> <xi:include href="kakoune.section.xml" />
<xi:include href="linux.section.xml" /> <xi:include href="linux.section.xml" />
<xi:include href="locales.section.xml" /> <xi:include href="locales.section.xml" />

View file

@ -303,14 +303,12 @@ rec {
preferBuiltin = true; preferBuiltin = true;
target = "zImage"; target = "zImage";
extraConfig = '' extraConfig = ''
# Serial port for Raspberry Pi 3. Upstream forgot to add it to the ARMv7 defconfig. # Serial port for Raspberry Pi 3. Wasn't included in ARMv7 defconfig
# until 4.17.
SERIAL_8250_BCM2835AUX y SERIAL_8250_BCM2835AUX y
SERIAL_8250_EXTENDED y SERIAL_8250_EXTENDED y
SERIAL_8250_SHARE_IRQ y SERIAL_8250_SHARE_IRQ y
# Fix broken sunxi-sid nvmem driver.
TI_CPTS y
# Hangs ODROID-XU4 # Hangs ODROID-XU4
ARM_BIG_LITTLE_CPUIDLE n ARM_BIG_LITTLE_CPUIDLE n

View file

@ -746,6 +746,12 @@
githubId = 1296771; githubId = 1296771;
name = "Anders Riutta"; name = "Anders Riutta";
}; };
armijnhemel = {
email = "armijn@tjaldur.nl";
github = "armijnhemel";
githubId = 10587952;
name = "Armijn Hemel";
};
arnarg = { arnarg = {
email = "arnarg@fastmail.com"; email = "arnarg@fastmail.com";
github = "arnarg"; github = "arnarg";
@ -3193,6 +3199,12 @@
githubId = 19961516; githubId = 19961516;
name = "Felix Weilbach"; name = "Felix Weilbach";
}; };
fliegendewurst = {
email = "arne.keller@posteo.de";
github = "FliegendeWurst";
githubId = 12560461;
name = "Arne Keller";
};
flokli = { flokli = {
email = "flokli@flokli.de"; email = "flokli@flokli.de";
github = "flokli"; github = "flokli";
@ -4009,6 +4021,12 @@
githubId = 61913481; githubId = 61913481;
name = "Mat Marini"; name = "Mat Marini";
}; };
illustris = {
email = "me@illustris.tech";
github = "illustris";
githubId = 3948275;
name = "Harikrishnan R";
};
ilya-fedin = { ilya-fedin = {
email = "fedin-ilja2010@ya.ru"; email = "fedin-ilja2010@ya.ru";
github = "ilya-fedin"; github = "ilya-fedin";
@ -6325,6 +6343,12 @@
githubId = 1776903; githubId = 1776903;
name = "Andrew Abbott"; name = "Andrew Abbott";
}; };
mitchmindtree = {
email = "mail@mitchellnordine.com";
github = "mitchmindtree";
githubId = 4587373;
name = "Mitchell Nordine";
};
mjanczyk = { mjanczyk = {
email = "m@dragonvr.pl"; email = "m@dragonvr.pl";
github = "mjanczyk"; github = "mjanczyk";
@ -6779,6 +6803,12 @@
githubId = 1488603; githubId = 1488603;
name = "François Espinet"; name = "François Espinet";
}; };
neverbehave = {
email = "i@never.pet";
github = "NeverBehave";
githubId = 17120571;
name = "Xinhao Luo";
};
nikitavoloboev = { nikitavoloboev = {
email = "nikita.voloboev@gmail.com"; email = "nikita.voloboev@gmail.com";
github = "nikitavoloboev"; github = "nikitavoloboev";
@ -9803,6 +9833,16 @@
githubId = 16151097; githubId = 16151097;
name = "Valentin Gehrke"; name = "Valentin Gehrke";
}; };
tuxinaut = {
email = "trash4you@tuxinaut.de";
github = "tuxinaut";
githubId = 722482;
name = "Denny Schäfer";
keys = [{
longkeyid = "rsa4096/0xB057455D1E567270";
fingerprint = "C752 0E49 4D92 1740 D263 C467 B057 455D 1E56 7270";
}];
};
tv = { tv = {
email = "tv@krebsco.de"; email = "tv@krebsco.de";
github = "4z3"; github = "4z3";
@ -10198,6 +10238,12 @@
email = "kirill.wedens@gmail.com"; email = "kirill.wedens@gmail.com";
name = "wedens"; name = "wedens";
}; };
weihua = {
email = "luwh364@gmail.com";
github = "weihua-lu";
githubId = 9002575;
name = "Weihua Lu";
};
wheelsandmetal = { wheelsandmetal = {
email = "jakob@schmutz.co.uk"; email = "jakob@schmutz.co.uk";
github = "wheelsandmetal"; github = "wheelsandmetal";

View file

@ -82,6 +82,7 @@ with lib.maintainers; {
jtojnar jtojnar
worldofpeace worldofpeace
dasj19 dasj19
maxeaubrey
]; ];
scope = "Maintain GNOME desktop environment and platform."; scope = "Maintain GNOME desktop environment and platform.";
}; };
@ -96,6 +97,18 @@ with lib.maintainers; {
scope = "Maintain Jitsi."; scope = "Maintain Jitsi.";
}; };
kodi = {
members = [
aanderse
cpages
edwtjo
minijackson
peterhoeg
sephalon
];
scope = "Maintain Kodi and related packages.";
};
matrix = { matrix = {
members = [ members = [
ma27 ma27

View file

@ -26,7 +26,11 @@ Enter passphrase for /dev/disk/by-uuid/3f6b0024-3a44-4fde-a43a-767b872abe5d: ***
<prompt># </prompt>mkfs.ext4 /dev/mapper/<replaceable>crypted</replaceable> <prompt># </prompt>mkfs.ext4 /dev/mapper/<replaceable>crypted</replaceable>
</screen> </screen>
To ensure that this file system is automatically mounted at boot time as The LUKS volume should be automatically picked up by
<command>nixos-generate-config</command>, but you might want to verify that your
<filename>hardware-configuration.nix</filename> looks correct.
To manually ensure that the system is automatically mounted at boot time as
<filename>/</filename>, add the following to <filename>/</filename>, add the following to
<filename>configuration.nix</filename>: <filename>configuration.nix</filename>:
<programlisting> <programlisting>

View file

@ -682,6 +682,7 @@
./services/networking/i2p.nix ./services/networking/i2p.nix
./services/networking/icecream/scheduler.nix ./services/networking/icecream/scheduler.nix
./services/networking/icecream/daemon.nix ./services/networking/icecream/daemon.nix
./services/networking/inspircd.nix
./services/networking/iodine.nix ./services/networking/iodine.nix
./services/networking/iperf3.nix ./services/networking/iperf3.nix
./services/networking/ircd-hybrid/default.nix ./services/networking/ircd-hybrid/default.nix

View file

@ -235,7 +235,7 @@ let
# https://github.com/NixOS/nixpkgs/pull/81371#issuecomment-605526099 # https://github.com/NixOS/nixpkgs/pull/81371#issuecomment-605526099
wantedBy = optionals (!config.boot.isContainer) [ "multi-user.target" ]; wantedBy = optionals (!config.boot.isContainer) [ "multi-user.target" ];
path = with pkgs; [ lego coreutils diffutils ]; path = with pkgs; [ lego coreutils diffutils openssl ];
serviceConfig = commonServiceConfig // { serviceConfig = commonServiceConfig // {
Group = data.group; Group = data.group;
@ -274,6 +274,34 @@ let
script = '' script = ''
set -euxo pipefail set -euxo pipefail
# This reimplements the expiration date check, but without querying
# the acme server first. By doing this offline, we avoid errors
# when the network or DNS are unavailable, which can happen during
# nixos-rebuild switch.
is_expiration_skippable() {
pem=$1
# This function relies on set -e to exit early if any of the
# conditions or programs fail.
[[ -e $pem ]]
expiration_line="$(
set -euxo pipefail
openssl x509 -noout -enddate <$pem \
| grep notAfter \
| sed -e 's/^notAfter=//'
)"
[[ -n "$expiration_line" ]]
expiration_date="$(date -d "$expiration_line" +%s)"
now="$(date +%s)"
expiration_s=$[expiration_date - now]
expiration_days=$[expiration_s / (3600 * 24)] # rounds down
[[ $expiration_days -gt ${toString cfg.validMinDays} ]]
}
${optionalString (data.webroot != null) '' ${optionalString (data.webroot != null) ''
# Ensure the webroot exists # Ensure the webroot exists
mkdir -p '${data.webroot}/.well-known/acme-challenge' mkdir -p '${data.webroot}/.well-known/acme-challenge'
@ -288,8 +316,14 @@ let
# When domains are updated, there's no need to do a full # When domains are updated, there's no need to do a full
# Lego run, but it's likely renew won't work if days is too low. # Lego run, but it's likely renew won't work if days is too low.
if [ -e certificates/domainhash.txt ] && cmp -s domainhash.txt certificates/domainhash.txt; then if [ -e certificates/domainhash.txt ] && cmp -s domainhash.txt certificates/domainhash.txt; then
lego ${renewOpts} --days ${toString cfg.validMinDays} if is_expiration_skippable out/full.pem; then
echo 1>&2 "nixos-acme: skipping renewal because expiration isn't within the coming ${toString cfg.validMinDays} days"
else
echo 1>&2 "nixos-acme: renewing now, because certificate expires within the configured ${toString cfg.validMinDays} days"
lego ${renewOpts} --days ${toString cfg.validMinDays}
fi
else else
echo 1>&2 "certificate domain(s) have changed; will renew now"
# Any number > 90 works, but this one is over 9000 ;-) # Any number > 90 works, but this one is over 9000 ;-)
lego ${renewOpts} --days 9001 lego ${renewOpts} --days 9001
fi fi

View file

@ -93,10 +93,12 @@ in
}; };
paths = mkOption { paths = mkOption {
type = types.listOf types.str; type = types.nullOr (types.listOf types.str);
default = []; default = null;
description = '' description = ''
Which paths to backup. Which paths to backup. If null or an empty array, no
backup command will be run. This can be used to create a
prune-only job.
''; '';
example = [ example = [
"/var/lib/postgresql" "/var/lib/postgresql"
@ -217,7 +219,7 @@ in
resticCmd = "${pkgs.restic}/bin/restic${extraOptions}"; resticCmd = "${pkgs.restic}/bin/restic${extraOptions}";
filesFromTmpFile = "/run/restic-backups-${name}/includes"; filesFromTmpFile = "/run/restic-backups-${name}/includes";
backupPaths = if (backup.dynamicFilesFrom == null) backupPaths = if (backup.dynamicFilesFrom == null)
then concatStringsSep " " backup.paths then if (backup.paths != null) then concatStringsSep " " backup.paths else ""
else "--files-from ${filesFromTmpFile}"; else "--files-from ${filesFromTmpFile}";
pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [ pruneCmd = optionals (builtins.length backup.pruneOpts > 0) [
( resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts) ) ( resticCmd + " forget --prune " + (concatStringsSep " " backup.pruneOpts) )
@ -243,7 +245,8 @@ in
restartIfChanged = false; restartIfChanged = false;
serviceConfig = { serviceConfig = {
Type = "oneshot"; Type = "oneshot";
ExecStart = [ "${resticCmd} backup --cache-dir=%C/restic-backups-${name} ${concatStringsSep " " backup.extraBackupArgs} ${backupPaths}" ] ++ pruneCmd; ExecStart = (optionals (backupPaths != "") [ "${resticCmd} backup --cache-dir=%C/restic-backups-${name} ${concatStringsSep " " backup.extraBackupArgs} ${backupPaths}" ])
++ pruneCmd;
User = backup.user; User = backup.user;
RuntimeDirectory = "restic-backups-${name}"; RuntimeDirectory = "restic-backups-${name}";
CacheDirectory = "restic-backups-${name}"; CacheDirectory = "restic-backups-${name}";

View file

@ -0,0 +1,6 @@
# Updating
1. Update the version & hash in pkgs/development/libraries/pipewire/default.nix
2. run `nix build -f /path/to/nixpkgs/checkout pipewire pipewire.mediaSession`
3. copy all JSON files from result/etc/pipewire and result-mediaSession/etc/pipewire/media-session.d to this directory
4. add new files to the module config and passthru tests

View file

@ -6,21 +6,34 @@
"audio.convert.*": "audioconvert/libspa-audioconvert", "audio.convert.*": "audioconvert/libspa-audioconvert",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-client-device": null, },
"libpipewire-module-adapter": null, {
"libpipewire-module-metadata": null, "name": "libpipewire-module-client-node"
"libpipewire-module-session-manager": null },
}, {
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-session-manager"
}
],
"filter.properties": {}, "filter.properties": {},
"stream.properties": {} "stream.properties": {}
} }

View file

@ -6,14 +6,26 @@
"audio.convert.*": "audioconvert/libspa-audioconvert", "audio.convert.*": "audioconvert/libspa-audioconvert",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-client-device": null, },
"libpipewire-module-adapter": null, {
"libpipewire-module-metadata": null, "name": "libpipewire-module-client-node"
"libpipewire-module-session-manager": null },
}, {
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-session-manager"
}
],
"filter.properties": {}, "filter.properties": {},
"stream.properties": {} "stream.properties": {}
} }

View file

@ -5,17 +5,24 @@
"context.spa-libs": { "context.spa-libs": {
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-metadata": null },
}, {
"name": "libpipewire-module-client-node"
},
{
"name": "libpipewire-module-metadata"
}
],
"jack.properties": {} "jack.properties": {}
} }

View file

@ -6,21 +6,34 @@
"api.v4l2.*": "v4l2/libspa-v4l2", "api.v4l2.*": "v4l2/libspa-v4l2",
"api.libcamera.*": "libcamera/libspa-libcamera" "api.libcamera.*": "libcamera/libspa-libcamera"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-client-device": null, },
"libpipewire-module-adapter": null, {
"libpipewire-module-metadata": null, "name": "libpipewire-module-client-node"
"libpipewire-module-session-manager": null },
}, {
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-session-manager"
}
],
"session.modules": { "session.modules": {
"default": [ "default": [
"flatpak", "flatpak",

View file

@ -9,21 +9,12 @@ let
&& pkgs.stdenv.isx86_64 && pkgs.stdenv.isx86_64
&& pkgs.pkgsi686Linux.pipewire != null; && pkgs.pkgsi686Linux.pipewire != null;
prioritizeNativeProtocol = {
"context.modules" = {
"libpipewire-module-protocol-native" = {
_priority = -100;
_content = null;
};
};
};
# Use upstream config files passed through spa-json-dump as the base # Use upstream config files passed through spa-json-dump as the base
# Patched here as necessary for them to work with this module # Patched here as necessary for them to work with this module
defaults = { defaults = {
alsa-monitor = (builtins.fromJSON (builtins.readFile ./alsa-monitor.conf.json)); alsa-monitor = (builtins.fromJSON (builtins.readFile ./alsa-monitor.conf.json));
bluez-monitor = (builtins.fromJSON (builtins.readFile ./bluez-monitor.conf.json)); bluez-monitor = (builtins.fromJSON (builtins.readFile ./bluez-monitor.conf.json));
media-session = recursiveUpdate (builtins.fromJSON (builtins.readFile ./media-session.conf.json)) prioritizeNativeProtocol; media-session = (builtins.fromJSON (builtins.readFile ./media-session.conf.json));
v4l2-monitor = (builtins.fromJSON (builtins.readFile ./v4l2-monitor.conf.json)); v4l2-monitor = (builtins.fromJSON (builtins.readFile ./v4l2-monitor.conf.json));
}; };
# Helpers for generating the pipewire JSON config file # Helpers for generating the pipewire JSON config file

View file

@ -4,25 +4,35 @@
"audio.convert.*": "audioconvert/libspa-audioconvert", "audio.convert.*": "audioconvert/libspa-audioconvert",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-client-node": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-adapter": null, },
"libpipewire-module-metadata": null, {
"libpipewire-module-protocol-pulse": { "name": "libpipewire-module-client-node"
},
{
"name": "libpipewire-module-adapter"
},
{
"name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-protocol-pulse",
"args": { "args": {
"server.address": [ "server.address": [
"unix:native" "unix:native"
] ]
} }
} }
}, ],
"stream.properties": {} "stream.properties": {}
} }

View file

@ -14,42 +14,66 @@
"api.jack.*": "jack/libspa-jack", "api.jack.*": "jack/libspa-jack",
"support.*": "support/libspa-support" "support.*": "support/libspa-support"
}, },
"context.modules": { "context.modules": [
"libpipewire-module-rtkit": { {
"name": "libpipewire-module-rtkit",
"args": {}, "args": {},
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-protocol-native": null, {
"libpipewire-module-profiler": null, "name": "libpipewire-module-protocol-native"
"libpipewire-module-metadata": null, },
"libpipewire-module-spa-device-factory": null, {
"libpipewire-module-spa-node-factory": null, "name": "libpipewire-module-profiler"
"libpipewire-module-client-node": null, },
"libpipewire-module-client-device": null, {
"libpipewire-module-portal": { "name": "libpipewire-module-metadata"
},
{
"name": "libpipewire-module-spa-device-factory"
},
{
"name": "libpipewire-module-spa-node-factory"
},
{
"name": "libpipewire-module-client-node"
},
{
"name": "libpipewire-module-client-device"
},
{
"name": "libpipewire-module-portal",
"flags": [ "flags": [
"ifexists", "ifexists",
"nofail" "nofail"
] ]
}, },
"libpipewire-module-access": { {
"name": "libpipewire-module-access",
"args": {} "args": {}
}, },
"libpipewire-module-adapter": null, {
"libpipewire-module-link-factory": null, "name": "libpipewire-module-adapter"
"libpipewire-module-session-manager": null },
}, {
"context.objects": { "name": "libpipewire-module-link-factory"
"spa-node-factory": { },
{
"name": "libpipewire-module-session-manager"
}
],
"context.objects": [
{
"factory": "spa-node-factory",
"args": { "args": {
"factory.name": "support.node.driver", "factory.name": "support.node.driver",
"node.name": "Dummy-Driver", "node.name": "Dummy-Driver",
"priority.driver": 8000 "priority.driver": 8000
} }
} }
}, ],
"context.exec": {} "context.exec": []
} }

View file

@ -18,45 +18,15 @@ let
ln -s "${cfg.package.jack}/lib" "$out/lib/pipewire" ln -s "${cfg.package.jack}/lib" "$out/lib/pipewire"
''; '';
prioritizeNativeProtocol = {
"context.modules" = {
# Most other modules depend on this, so put it first
"libpipewire-module-protocol-native" = {
_priority = -100;
_content = null;
};
};
};
fixDaemonModulePriorities = {
"context.modules" = {
# Most other modules depend on thism so put it first
"libpipewire-module-protocol-native" = {
_priority = -100;
_content = null;
};
# Needs to be before libpipewire-module-access
"libpipewire-module-portal" = {
_priority = -50;
_content = {
flags = [
"ifexists"
"nofail"
];
};
};
};
};
# Use upstream config files passed through spa-json-dump as the base # Use upstream config files passed through spa-json-dump as the base
# Patched here as necessary for them to work with this module # Patched here as necessary for them to work with this module
defaults = { defaults = {
client = recursiveUpdate (builtins.fromJSON (builtins.readFile ./client.conf.json)) prioritizeNativeProtocol; client = builtins.fromJSON (builtins.readFile ./client.conf.json);
client-rt = recursiveUpdate (builtins.fromJSON (builtins.readFile ./client-rt.conf.json)) prioritizeNativeProtocol; client-rt = builtins.fromJSON (builtins.readFile ./client-rt.conf.json);
jack = recursiveUpdate (builtins.fromJSON (builtins.readFile ./jack.conf.json)) prioritizeNativeProtocol; jack = builtins.fromJSON (builtins.readFile ./jack.conf.json);
# Remove session manager invocation from the upstream generated file, it points to the wrong path # Remove session manager invocation from the upstream generated file, it points to the wrong path
pipewire = recursiveUpdate (builtins.fromJSON (builtins.readFile ./pipewire.conf.json)) fixDaemonModulePriorities; pipewire = builtins.fromJSON (builtins.readFile ./pipewire.conf.json);
pipewire-pulse = recursiveUpdate (builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json)) prioritizeNativeProtocol; pipewire-pulse = builtins.fromJSON (builtins.readFile ./pipewire-pulse.conf.json);
}; };
# Helpers for generating the pipewire JSON config file # Helpers for generating the pipewire JSON config file

View file

@ -4,9 +4,7 @@ with lib;
let let
pkg = if config.hardware.sane.snapshot pkg = pkgs.sane-backends;
then pkgs.sane-backends-git
else pkgs.sane-backends;
sanedConf = pkgs.writeTextFile { sanedConf = pkgs.writeTextFile {
name = "saned.conf"; name = "saned.conf";

View file

@ -196,6 +196,7 @@ let
domain: "${cfg.smtp.domain}", domain: "${cfg.smtp.domain}",
${optionalString (cfg.smtp.authentication != null) "authentication: :${cfg.smtp.authentication},"} ${optionalString (cfg.smtp.authentication != null) "authentication: :${cfg.smtp.authentication},"}
enable_starttls_auto: ${boolToString cfg.smtp.enableStartTLSAuto}, enable_starttls_auto: ${boolToString cfg.smtp.enableStartTLSAuto},
tls: ${boolToString cfg.smtp.tls},
ca_file: "/etc/ssl/certs/ca-certificates.crt", ca_file: "/etc/ssl/certs/ca-certificates.crt",
openssl_verify_mode: '${cfg.smtp.opensslVerifyMode}' openssl_verify_mode: '${cfg.smtp.opensslVerifyMode}'
} }
@ -463,6 +464,12 @@ in {
description = "Whether to try to use StartTLS."; description = "Whether to try to use StartTLS.";
}; };
tls = mkOption {
type = types.bool;
default = false;
description = "Whether to use TLS wrapper-mode.";
};
opensslVerifyMode = mkOption { opensslVerifyMode = mkOption {
type = types.str; type = types.str;
default = "peer"; default = "peer";

View file

@ -0,0 +1,62 @@
{ config, lib, pkgs, ... }:
let
cfg = config.services.inspircd;
configFile = pkgs.writeText "inspircd.conf" cfg.config;
in {
meta = {
maintainers = [ lib.maintainers.sternenseemann ];
};
options = {
services.inspircd = {
enable = lib.mkEnableOption "InspIRCd";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.inspircd;
defaultText = lib.literalExample "pkgs.inspircd";
example = lib.literalExample "pkgs.inspircdMinimal";
description = ''
The InspIRCd package to use. This is mainly useful
to specify an overridden version of the
<literal>pkgs.inspircd</literal> dervivation, for
example if you want to use a more minimal InspIRCd
distribution with less modules enabled or with
modules enabled which can't be distributed in binary
form due to licensing issues.
'';
};
config = lib.mkOption {
type = lib.types.lines;
description = ''
Verbatim <literal>inspircd.conf</literal> file.
For a list of options, consult the
<link xlink:href="https://docs.inspircd.org/3/configuration/">InspIRCd documentation</link>, the
<link xlink:href="https://docs.inspircd.org/3/modules/">Module documentation</link>
and the example configuration files distributed
with <literal>pkgs.inspircd.doc</literal>
'';
};
};
};
config = lib.mkIf cfg.enable {
systemd.services.inspircd = {
description = "InspIRCd - the stable, high-performance and modular Internet Relay Chat Daemon";
wantedBy = [ "multi-user.target" ];
requires = [ "network.target" ];
serviceConfig = {
Type = "simple";
ExecStart = ''
${lib.getBin cfg.package}/bin/inspircd start --config ${configFile} --nofork --nopid
'';
DynamicUser = true;
};
};
};
}

View file

@ -133,8 +133,10 @@ in
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
preStart = '' preStart = ''
install -m 700 -o '${cfg.user}' -g '${cfg.group}' ${cfg.certFile} ${cfg.dataDir}/cert.pem ${optionalString (cfg.insecure != true) ''
install -m 700 -o '${cfg.user}' -g '${cfg.group}' ${cfg.keyFile} ${cfg.dataDir}/key.pem install -m 700 -o '${cfg.user}' -g '${cfg.group}' ${cfg.certFile} ${cfg.dataDir}/cert.pem
install -m 700 -o '${cfg.user}' -g '${cfg.group}' ${cfg.keyFile} ${cfg.dataDir}/key.pem
''}
''; '';
serviceConfig = mkMerge [ serviceConfig = mkMerge [

View file

@ -15,12 +15,15 @@ import re
import datetime import datetime
import glob import glob
import os.path import os.path
from typing import Tuple, List, Optional
def copy_if_not_exists(source, dest):
def copy_if_not_exists(source: str, dest: str) -> None:
if not os.path.exists(dest): if not os.path.exists(dest):
shutil.copyfile(source, dest) shutil.copyfile(source, dest)
def system_dir(profile, generation):
def system_dir(profile: Optional[str], generation: int) -> str:
if profile: if profile:
return "/nix/var/nix/profiles/system-profiles/%s-%d-link" % (profile, generation) return "/nix/var/nix/profiles/system-profiles/%s-%d-link" % (profile, generation)
else: else:
@ -42,7 +45,8 @@ MEMTEST_BOOT_ENTRY = """title MemTest86
efi /efi/memtest86/BOOTX64.efi efi /efi/memtest86/BOOTX64.efi
""" """
def write_loader_conf(profile, generation):
def write_loader_conf(profile: Optional[str], generation: int) -> None:
with open("@efiSysMountPoint@/loader/loader.conf.tmp", 'w') as f: with open("@efiSysMountPoint@/loader/loader.conf.tmp", 'w') as f:
if "@timeout@" != "": if "@timeout@" != "":
f.write("timeout @timeout@\n") f.write("timeout @timeout@\n")
@ -55,10 +59,12 @@ def write_loader_conf(profile, generation):
f.write("console-mode @consoleMode@\n"); f.write("console-mode @consoleMode@\n");
os.rename("@efiSysMountPoint@/loader/loader.conf.tmp", "@efiSysMountPoint@/loader/loader.conf") os.rename("@efiSysMountPoint@/loader/loader.conf.tmp", "@efiSysMountPoint@/loader/loader.conf")
def profile_path(profile, generation, name):
def profile_path(profile: Optional[str], generation: int, name: str) -> str:
return os.readlink("%s/%s" % (system_dir(profile, generation), name)) return os.readlink("%s/%s" % (system_dir(profile, generation), name))
def copy_from_profile(profile, generation, name, dry_run=False):
def copy_from_profile(profile: Optional[str], generation: int, name: str, dry_run: bool = False) -> str:
store_file_path = profile_path(profile, generation, name) store_file_path = profile_path(profile, generation, name)
suffix = os.path.basename(store_file_path) suffix = os.path.basename(store_file_path)
store_dir = os.path.basename(os.path.dirname(store_file_path)) store_dir = os.path.basename(os.path.dirname(store_file_path))
@ -67,7 +73,8 @@ def copy_from_profile(profile, generation, name, dry_run=False):
copy_if_not_exists(store_file_path, "@efiSysMountPoint@%s" % (efi_file_path)) copy_if_not_exists(store_file_path, "@efiSysMountPoint@%s" % (efi_file_path))
return efi_file_path return efi_file_path
def describe_generation(generation_dir):
def describe_generation(generation_dir: str) -> str:
try: try:
with open("%s/nixos-version" % generation_dir) as f: with open("%s/nixos-version" % generation_dir) as f:
nixos_version = f.read() nixos_version = f.read()
@ -87,7 +94,8 @@ def describe_generation(generation_dir):
return description return description
def write_entry(profile, generation, machine_id):
def write_entry(profile: Optional[str], generation: int, machine_id: str) -> None:
kernel = copy_from_profile(profile, generation, "kernel") kernel = copy_from_profile(profile, generation, "kernel")
initrd = copy_from_profile(profile, generation, "initrd") initrd = copy_from_profile(profile, generation, "initrd")
try: try:
@ -116,14 +124,16 @@ def write_entry(profile, generation, machine_id):
f.write("machine-id %s\n" % machine_id) f.write("machine-id %s\n" % machine_id)
os.rename(tmp_path, entry_file) os.rename(tmp_path, entry_file)
def mkdir_p(path):
def mkdir_p(path: str) -> None:
try: try:
os.makedirs(path) os.makedirs(path)
except OSError as e: except OSError as e:
if e.errno != errno.EEXIST or not os.path.isdir(path): if e.errno != errno.EEXIST or not os.path.isdir(path):
raise raise
def get_generations(profile=None):
def get_generations(profile: Optional[str] = None) -> List[Tuple[Optional[str], int]]:
gen_list = subprocess.check_output([ gen_list = subprocess.check_output([
"@nix@/bin/nix-env", "@nix@/bin/nix-env",
"--list-generations", "--list-generations",
@ -137,7 +147,8 @@ def get_generations(profile=None):
configurationLimit = @configurationLimit@ configurationLimit = @configurationLimit@
return [ (profile, int(line.split()[0])) for line in gen_lines ][-configurationLimit:] return [ (profile, int(line.split()[0])) for line in gen_lines ][-configurationLimit:]
def remove_old_entries(gens):
def remove_old_entries(gens: List[Tuple[Optional[str], int]]) -> None:
rex_profile = re.compile("^@efiSysMountPoint@/loader/entries/nixos-(.*)-generation-.*\.conf$") rex_profile = re.compile("^@efiSysMountPoint@/loader/entries/nixos-(.*)-generation-.*\.conf$")
rex_generation = re.compile("^@efiSysMountPoint@/loader/entries/nixos.*-generation-(.*)\.conf$") rex_generation = re.compile("^@efiSysMountPoint@/loader/entries/nixos.*-generation-(.*)\.conf$")
known_paths = [] known_paths = []
@ -150,8 +161,8 @@ def remove_old_entries(gens):
prof = rex_profile.sub(r"\1", path) prof = rex_profile.sub(r"\1", path)
else: else:
prof = "system" prof = "system"
gen = int(rex_generation.sub(r"\1", path)) gen_number = int(rex_generation.sub(r"\1", path))
if not (prof, gen) in gens: if not (prof, gen_number) in gens:
os.unlink(path) os.unlink(path)
except ValueError: except ValueError:
pass pass
@ -159,7 +170,8 @@ def remove_old_entries(gens):
if not path in known_paths and not os.path.isdir(path): if not path in known_paths and not os.path.isdir(path):
os.unlink(path) os.unlink(path)
def get_profiles():
def get_profiles() -> List[str]:
if os.path.isdir("/nix/var/nix/profiles/system-profiles/"): if os.path.isdir("/nix/var/nix/profiles/system-profiles/"):
return [x return [x
for x in os.listdir("/nix/var/nix/profiles/system-profiles/") for x in os.listdir("/nix/var/nix/profiles/system-profiles/")
@ -167,7 +179,8 @@ def get_profiles():
else: else:
return [] return []
def main():
def main() -> None:
parser = argparse.ArgumentParser(description='Update NixOS-related systemd-boot files') parser = argparse.ArgumentParser(description='Update NixOS-related systemd-boot files')
parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help='The default NixOS config to boot') parser.add_argument('default_config', metavar='DEFAULT-CONFIG', help='The default NixOS config to boot')
args = parser.parse_args() args = parser.parse_args()
@ -182,7 +195,9 @@ def main():
# be there on newly installed systems, so let's generate one so that # be there on newly installed systems, so let's generate one so that
# bootctl can find it and we can also pass it to write_entry() later. # bootctl can find it and we can also pass it to write_entry() later.
cmd = ["@systemd@/bin/systemd-machine-id-setup", "--print"] cmd = ["@systemd@/bin/systemd-machine-id-setup", "--print"]
machine_id = subprocess.check_output(cmd).rstrip() machine_id = subprocess.run(
cmd, text=True, check=True, stdout=subprocess.PIPE
).stdout.rstrip()
if os.getenv("NIXOS_INSTALL_GRUB") == "1": if os.getenv("NIXOS_INSTALL_GRUB") == "1":
warnings.warn("NIXOS_INSTALL_GRUB env var deprecated, use NIXOS_INSTALL_BOOTLOADER", DeprecationWarning) warnings.warn("NIXOS_INSTALL_GRUB env var deprecated, use NIXOS_INSTALL_BOOTLOADER", DeprecationWarning)
@ -213,7 +228,6 @@ def main():
print("updating systemd-boot from %s to %s" % (sdboot_version, systemd_version)) print("updating systemd-boot from %s to %s" % (sdboot_version, systemd_version))
subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "update"]) subprocess.check_call(["@systemd@/bin/bootctl", "--path=@efiSysMountPoint@", "update"])
mkdir_p("@efiSysMountPoint@/efi/nixos") mkdir_p("@efiSysMountPoint@/efi/nixos")
mkdir_p("@efiSysMountPoint@/loader/entries") mkdir_p("@efiSysMountPoint@/loader/entries")
@ -252,5 +266,6 @@ def main():
if rc != 0: if rc != 0:
print("could not sync @efiSysMountPoint@: {}".format(os.strerror(rc)), file=sys.stderr) print("could not sync @efiSysMountPoint@: {}".format(os.strerror(rc)), file=sys.stderr)
if __name__ == '__main__': if __name__ == '__main__':
main() main()

View file

@ -7,7 +7,7 @@ let
efi = config.boot.loader.efi; efi = config.boot.loader.efi;
gummibootBuilder = pkgs.substituteAll { systemdBootBuilder = pkgs.substituteAll {
src = ./systemd-boot-builder.py; src = ./systemd-boot-builder.py;
isExecutable = true; isExecutable = true;
@ -30,6 +30,17 @@ let
memtest86 = if cfg.memtest86.enable then pkgs.memtest86-efi else ""; memtest86 = if cfg.memtest86.enable then pkgs.memtest86-efi else "";
}; };
checkedSystemdBootBuilder = pkgs.runCommand "systemd-boot" {
nativeBuildInputs = [ pkgs.mypy ];
} ''
install -m755 ${systemdBootBuilder} $out
mypy \
--no-implicit-optional \
--disallow-untyped-calls \
--disallow-untyped-defs \
$out
'';
in { in {
imports = imports =
@ -131,7 +142,7 @@ in {
boot.loader.supportsInitrdSecrets = true; boot.loader.supportsInitrdSecrets = true;
system = { system = {
build.installBootLoader = gummibootBuilder; build.installBootLoader = checkedSystemdBootBuilder;
boot.loader.id = "systemd-boot"; boot.loader.id = "systemd-boot";

View file

@ -167,6 +167,7 @@ exec {logOutFd}>&- {logErrFd}>&-
# Start systemd. # Start systemd.
echo "starting systemd..." echo "starting systemd..."
PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \ PATH=/run/current-system/systemd/lib/systemd:@fsPackagesPath@ \
LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive \ LOCALE_ARCHIVE=/run/current-system/sw/lib/locale/locale-archive @systemdUnitPathEnvVar@ \
exec @systemdExecutable@ exec @systemdExecutable@

View file

@ -10,7 +10,7 @@ let
src = ./stage-2-init.sh; src = ./stage-2-init.sh;
shellDebug = "${pkgs.bashInteractive}/bin/bash"; shellDebug = "${pkgs.bashInteractive}/bin/bash";
shell = "${pkgs.bash}/bin/bash"; shell = "${pkgs.bash}/bin/bash";
inherit (config.boot) systemdExecutable; inherit (config.boot) systemdExecutable extraSystemdUnitPaths;
isExecutable = true; isExecutable = true;
inherit (config.nix) readOnlyStore; inherit (config.nix) readOnlyStore;
inherit useHostResolvConf; inherit useHostResolvConf;
@ -20,6 +20,10 @@ let
pkgs.util-linux pkgs.util-linux
] ++ lib.optional useHostResolvConf pkgs.openresolv); ] ++ lib.optional useHostResolvConf pkgs.openresolv);
fsPackagesPath = lib.makeBinPath config.system.fsPackages; fsPackagesPath = lib.makeBinPath config.system.fsPackages;
systemdUnitPathEnvVar = lib.optionalString (config.boot.extraSystemdUnitPaths != [])
("SYSTEMD_UNIT_PATH="
+ builtins.concatStringsSep ":" config.boot.extraSystemdUnitPaths
+ ":"); # If SYSTEMD_UNIT_PATH ends with an empty component (":"), the usual unit load path will be appended to the contents of the variable
postBootCommands = pkgs.writeText "local-cmds" postBootCommands = pkgs.writeText "local-cmds"
'' ''
${config.boot.postBootCommands} ${config.boot.postBootCommands}
@ -82,6 +86,15 @@ in
PATH. PATH.
''; '';
}; };
extraSystemdUnitPaths = mkOption {
default = [];
type = types.listOf types.str;
description = ''
Additional paths that get appended to the SYSTEMD_UNIT_PATH environment variable
that can contain mutable unit files.
'';
};
}; };
}; };

View file

@ -175,8 +175,10 @@ let
"timers.target.wants" "timers.target.wants"
]; ];
upstreamUserUnits = upstreamUserUnits = [
[ "basic.target" "app.slice"
"background.slice"
"basic.target"
"bluetooth.target" "bluetooth.target"
"default.target" "default.target"
"exit.target" "exit.target"
@ -184,6 +186,7 @@ let
"graphical-session.target" "graphical-session.target"
"paths.target" "paths.target"
"printer.target" "printer.target"
"session.slice"
"shutdown.target" "shutdown.target"
"smartcard.target" "smartcard.target"
"sockets.target" "sockets.target"
@ -193,6 +196,7 @@ let
"systemd-tmpfiles-clean.timer" "systemd-tmpfiles-clean.timer"
"systemd-tmpfiles-setup.service" "systemd-tmpfiles-setup.service"
"timers.target" "timers.target"
"xdg-desktop-autostart.target"
]; ];
makeJobScript = name: text: makeJobScript = name: text:

View file

@ -118,8 +118,9 @@ in
[network] [network]
cni_plugin_dirs = ["${pkgs.cni-plugins}/bin/"] cni_plugin_dirs = ["${pkgs.cni-plugins}/bin/"]
${lib.optionalString (cfg.ociSeccompBpfHook.enable == true) ''
[engine] [engine]
init_path = "${pkgs.catatonit}/bin/catatonit"
${lib.optionalString (cfg.ociSeccompBpfHook.enable) ''
hooks_dir = [ hooks_dir = [
"${config.boot.kernelPackages.oci-seccomp-bpf-hook}", "${config.boot.kernelPackages.oci-seccomp-bpf-hook}",
] ]

View file

@ -176,6 +176,7 @@ in
initrd-network-ssh = handleTest ./initrd-network-ssh {}; initrd-network-ssh = handleTest ./initrd-network-ssh {};
initrdNetwork = handleTest ./initrd-network.nix {}; initrdNetwork = handleTest ./initrd-network.nix {};
initrd-secrets = handleTest ./initrd-secrets.nix {}; initrd-secrets = handleTest ./initrd-secrets.nix {};
inspircd = handleTest ./inspircd.nix {};
installer = handleTest ./installer.nix {}; installer = handleTest ./installer.nix {};
iodine = handleTest ./iodine.nix {}; iodine = handleTest ./iodine.nix {};
ipfs = handleTest ./ipfs.nix {}; ipfs = handleTest ./ipfs.nix {};
@ -393,6 +394,7 @@ in
systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {}; systemd-networkd-vrf = handleTest ./systemd-networkd-vrf.nix {};
systemd-nspawn = handleTest ./systemd-nspawn.nix {}; systemd-nspawn = handleTest ./systemd-nspawn.nix {};
systemd-timesyncd = handleTest ./systemd-timesyncd.nix {}; systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
systemd-unit-path = handleTest ./systemd-unit-path.nix {};
taskserver = handleTest ./taskserver.nix {}; taskserver = handleTest ./taskserver.nix {};
telegraf = handleTest ./telegraf.nix {}; telegraf = handleTest ./telegraf.nix {};
tiddlywiki = handleTest ./tiddlywiki.nix {}; tiddlywiki = handleTest ./tiddlywiki.nix {};

View file

@ -0,0 +1,93 @@
let
clients = [
"ircclient1"
"ircclient2"
];
server = "inspircd";
ircPort = 6667;
channel = "nixos-cat";
iiDir = "/tmp/irc";
in
import ./make-test-python.nix ({ pkgs, lib, ... }: {
name = "inspircd";
nodes = {
"${server}" = {
networking.firewall.allowedTCPPorts = [ ircPort ];
services.inspircd = {
enable = true;
package = pkgs.inspircdMinimal;
config = ''
<bind address="" port="${toString ircPort}" type="clients">
<connect name="main" allow="*" pingfreq="15">
'';
};
};
} // lib.listToAttrs (builtins.map (client: lib.nameValuePair client {
imports = [
./common/user-account.nix
];
systemd.services.ii = {
requires = [ "network.target" ];
wantedBy = [ "default.target" ];
serviceConfig = {
Type = "simple";
ExecPreStartPre = "mkdir -p ${iiDir}";
ExecStart = ''
${lib.getBin pkgs.ii}/bin/ii -n ${client} -s ${server} -i ${iiDir}
'';
User = "alice";
};
};
}) clients);
testScript =
let
msg = client: "Hello, my name is ${client}";
clientScript = client: [
''
${client}.wait_for_unit("network.target")
${client}.systemctl("start ii")
${client}.wait_for_unit("ii")
${client}.wait_for_file("${iiDir}/${server}/out")
''
# wait until first PING from server arrives before joining,
# so we don't try it too early
''
${client}.wait_until_succeeds("grep 'PING' ${iiDir}/${server}/out")
''
# join ${channel}
''
${client}.succeed("echo '/j #${channel}' > ${iiDir}/${server}/in")
${client}.wait_for_file("${iiDir}/${server}/#${channel}/in")
''
# send a greeting
''
${client}.succeed(
"echo '${msg client}' > ${iiDir}/${server}/#${channel}/in"
)
''
# check that all greetings arrived on all clients
] ++ builtins.map (other: ''
${client}.succeed(
"grep '${msg other}$' ${iiDir}/${server}/#${channel}/out"
)
'') clients;
# foldl', but requires a non-empty list instead of a start value
reduce = f: list:
builtins.foldl' f (builtins.head list) (builtins.tail list);
in ''
start_all()
${server}.wait_for_open_port(${toString ircPort})
# run clientScript for all clients so that every list
# entry is executed by every client before advancing
# to the next one.
'' + lib.concatStrings
(reduce
(lib.zipListsWith (cs: c: cs + c))
(builtins.map clientScript clients));
})

View file

@ -96,6 +96,15 @@ import ./make-test-python.nix (
podman.succeed(su_cmd("podman ps | grep sleeping")) podman.succeed(su_cmd("podman ps | grep sleeping"))
podman.succeed(su_cmd("podman stop sleeping")) podman.succeed(su_cmd("podman stop sleeping"))
podman.succeed(su_cmd("podman rm sleeping")) podman.succeed(su_cmd("podman rm sleeping"))
with subtest("Run container with init"):
podman.succeed(
"tar cv -C ${pkgs.pkgsStatic.busybox} . | podman import - busybox"
)
pid = podman.succeed("podman run --rm busybox readlink /proc/self").strip()
assert pid == "1"
pid = podman.succeed("podman run --rm --init busybox readlink /proc/self").strip()
assert pid == "2"
''; '';
} }
) )

View file

@ -45,6 +45,10 @@ import ./make-test-python.nix (
''; '';
inherit passwordFile initialize paths pruneOpts; inherit passwordFile initialize paths pruneOpts;
}; };
remoteprune = {
inherit repository passwordFile;
pruneOpts = [ "--keep-last 1" ];
};
}; };
environment.sessionVariables.RCLONE_CONFIG_LOCAL_TYPE = "local"; environment.sessionVariables.RCLONE_CONFIG_LOCAL_TYPE = "local";
@ -84,6 +88,8 @@ import ./make-test-python.nix (
"systemctl start restic-backups-rclonebackup.service", "systemctl start restic-backups-rclonebackup.service",
'${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"', '${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"',
'${pkgs.restic}/bin/restic -r ${rcloneRepository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"', '${pkgs.restic}/bin/restic -r ${rcloneRepository} -p ${passwordFile} snapshots -c | grep -e "^4 snapshot"',
"systemctl start restic-backups-remoteprune.service",
'${pkgs.restic}/bin/restic -r ${repository} -p ${passwordFile} snapshots -c | grep -e "^1 snapshot"',
) )
''; '';
} }

View file

@ -0,0 +1,47 @@
import ./make-test-python.nix ({ pkgs, ... }:
let
exampleScript = pkgs.writeTextFile {
name = "example.sh";
text = ''
#! ${pkgs.runtimeShell} -e
while true; do
echo "Example script running" >&2
${pkgs.coreutils}/bin/sleep 1
done
'';
executable = true;
};
unitFile = pkgs.writeTextFile {
name = "example.service";
text = ''
[Unit]
Description=Example systemd service unit file
[Service]
ExecStart=${exampleScript}
[Install]
WantedBy=multi-user.target
'';
};
in
{
name = "systemd-unit-path";
machine = { pkgs, lib, ... }: {
boot.extraSystemdUnitPaths = [ "/etc/systemd-rw/system" ];
};
testScript = ''
machine.wait_for_unit("multi-user.target")
machine.succeed("mkdir -p /etc/systemd-rw/system")
machine.succeed(
"cp ${unitFile} /etc/systemd-rw/system/example.service"
)
machine.succeed("systemctl start example.service")
machine.succeed("systemctl status example.service | grep 'Active: active'")
'';
})

View file

@ -16,6 +16,7 @@
, glibmm , glibmm
, graphviz , graphviz
, gtkmm2 , gtkmm2
, harvid
, itstool , itstool
, libarchive , libarchive
, libjack2 , libjack2
@ -35,6 +36,7 @@
, lilv , lilv
, lrdf , lrdf
, lv2 , lv2
, makeWrapper
, pango , pango
, perl , perl
, pkg-config , pkg-config
@ -49,6 +51,8 @@
, taglib , taglib
, vamp-plugin-sdk , vamp-plugin-sdk
, wafHook , wafHook
, xjadeo
, videoSupport ? false
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ardour"; pname = "ardour";
@ -70,6 +74,7 @@ stdenv.mkDerivation rec {
doxygen doxygen
graphviz # for dot graphviz # for dot
itstool itstool
makeWrapper
perl perl
pkg-config pkg-config
python3 python3
@ -121,7 +126,7 @@ stdenv.mkDerivation rec {
suil suil
taglib taglib
vamp-plugin-sdk vamp-plugin-sdk
]; ] ++ lib.optionals videoSupport [ harvid xjadeo ];
wafConfigureFlags = [ wafConfigureFlags = [
"--cxx11" "--cxx11"
@ -158,6 +163,10 @@ stdenv.mkDerivation rec {
"$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png" "$out/share/icons/hicolor/''${size}x''${size}/apps/ardour6.png"
done done
install -vDm 644 "ardour.1"* -t "$out/share/man/man1" install -vDm 644 "ardour.1"* -t "$out/share/man/man1"
'' + lib.optionalString videoSupport ''
# `harvid` and `xjadeo` must be accessible in `PATH` for video to work.
wrapProgram "$out/bin/ardour6" \
--prefix PATH : "${lib.makeBinPath [ harvid xjadeo ]}"
''; '';
LINKFLAGS = "-lpthread"; LINKFLAGS = "-lpthread";
@ -174,8 +183,8 @@ stdenv.mkDerivation rec {
https://community.ardour.org/donate https://community.ardour.org/donate
''; '';
homepage = "https://ardour.org/"; homepage = "https://ardour.org/";
license = licenses.gpl2; license = licenses.gpl2Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ goibhniu magnetophon ]; maintainers = with maintainers; [ goibhniu magnetophon mitchmindtree ];
}; };
} }

View file

@ -1,4 +1,5 @@
{ mkDerivation { mkDerivation
, stdenv
, lib , lib
, fetchFromGitHub , fetchFromGitHub
, fetchpatch , fetchpatch
@ -39,6 +40,14 @@ mkDerivation rec {
postConfigure = "make qmake_all"; postConfigure = "make qmake_all";
# installs app bundle on darwin, re-extract the binary
# wrapQtAppsHook fails to wrap mach-o binaries, manually call wrapper (https://github.com/NixOS/nixpkgs/issues/102044)
postInstall = lib.optionalString stdenv.hostPlatform.isDarwin ''
mv $out/bin/BambooTracker{.app/Contents/MacOS/BambooTracker,}
rm -r $out/bin/BambooTracker.app
wrapQtApp $out/bin/BambooTracker
'';
meta = with lib; { meta = with lib; {
description = "A tracker for YM2608 (OPNA) which was used in NEC PC-8801/9801 series computers"; description = "A tracker for YM2608 (OPNA) which was used in NEC PC-8801/9801 series computers";
homepage = "https://rerrahkr.github.io/BambooTracker"; homepage = "https://rerrahkr.github.io/BambooTracker";

View file

@ -75,7 +75,5 @@ stdenv.mkDerivation rec {
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
maintainers = teams.gnome.members; maintainers = teams.gnome.members;
platforms = platforms.unix; platforms = platforms.unix;
# couldn't read /build/source/build/podcasts-gtk/resources/resources.gresource: No such file or directory (os error 2)
broken = true;
}; };
} }

View file

@ -43,7 +43,9 @@ stdenv.mkDerivation rec {
installPhase = let extension = if stdenv.isDarwin then "app" else "deb-exe"; installPhase = let extension = if stdenv.isDarwin then "app" else "deb-exe";
in "install -Dm555 lgpt.${extension} $out/bin/lgpt"; in "install -Dm555 lgpt.${extension} $out/bin/lgpt";
passthru.updateScript = unstableGitUpdater { }; passthru.updateScript = unstableGitUpdater {
url = "https://github.com/Mdashdotdashn/littlegptracker.git";
};
meta = with lib; { meta = with lib; {
description = "A music tracker similar to lsdj optimised to run on portable game consoles"; description = "A music tracker similar to lsdj optimised to run on portable game consoles";

View file

@ -1,4 +1,4 @@
{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }: { lib, stdenv, fetchFromGitHub, fetchpatch, faust2jaqt, faust2lv2 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "MBdistortion"; pname = "MBdistortion";
version = "1.1.1"; version = "1.1.1";
@ -10,6 +10,13 @@ stdenv.mkDerivation rec {
sha256 = "0mdzaqmxzgspfgx9w1hdip18y17hwpdcgjyq1rrfm843vkascwip"; sha256 = "0mdzaqmxzgspfgx9w1hdip18y17hwpdcgjyq1rrfm843vkascwip";
}; };
patches = [
(fetchpatch {
url = "https://github.com/magnetophon/MBdistortion/commit/10e35084b88c559f1b63760cf40fd5ef5a6745a5.patch";
sha256 = "0hwjl3rzvn3id0sr0qs8f37jdmr915mdan8miaf78ra0ir3wnk76";
})
];
buildInputs = [ faust2jaqt faust2lv2 ]; buildInputs = [ faust2jaqt faust2lv2 ];
buildPhase = '' buildPhase = ''

View file

@ -0,0 +1,52 @@
{ lib, fetchFromGitHub
, python3Packages
, gdk-pixbuf, glib, gobject-introspection, gtk3
, intltool
, wrapGAppsHook }:
python3Packages.buildPythonApplication rec {
pname = "mpdevil";
version = "1.1.1";
src = fetchFromGitHub {
owner = "SoongNoonien";
repo = pname;
rev = "v${version}";
sha256 = "0l7mqv7ys05al2hds4icb32hf14fqi3n7b0f5v1yx54cbl9cqfap";
};
nativeBuildInputs = [
glib.dev gobject-introspection gtk3 intltool wrapGAppsHook
];
buildInputs = [
gdk-pixbuf glib
];
propagatedBuildInputs = with python3Packages; [
beautifulsoup4 distutils_extra mpd2 notify-py pygobject3 requests
];
postInstall = ''
glib-compile-schemas $out/share/glib-2.0/schemas
'';
preFixup = ''
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
'';
# Prevent double wrapping.
dontWrapGApps = true;
# Otherwise wrapGAppsHook do not pick up the dependencies correctly.
strictDeps = false;
# There aren't any checks.
doCheck = false;
meta = with lib; {
description = "A simple music browser for MPD";
homepage = "https://github.com/SoongNoonien/mpdevil";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ bloomvdomino ];
};
}

View file

@ -11,11 +11,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "ocenaudio"; pname = "ocenaudio";
version = "3.9.6"; version = "3.10.2";
src = fetchurl { src = fetchurl {
url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian9_64.deb?version=${version}"; url = "https://www.ocenaudio.com/downloads/index.php/ocenaudio_debian9_64.deb?version=${version}";
sha256 = "07r49133kk99ya4grwby3admy892mkk9cfxz3wh0v81aznhpw4jg"; sha256 = "sha256-mmo6/zc/3R8ptXfY01RKUOLgmDhWTHiYBMlGqpdMTAo=";
}; };

View file

@ -8,13 +8,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "pt2-clone"; pname = "pt2-clone";
version = "1.28"; version = "1.29";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "8bitbubsy"; owner = "8bitbubsy";
repo = "pt2-clone"; repo = "pt2-clone";
rev = "v${version}"; rev = "v${version}";
sha256 = "1c2x43f46l7556kl9y9qign0g6ywdkh7ywkzv6c9y63n68ph20x2"; sha256 = "sha256-xnw4UL30nUv/Ru6x/7d05gC0X9nREMdXO9QWBjVoIvo=";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -63,6 +63,6 @@ stdenv.mkDerivation rec {
homepage = "https://getmonero.org/"; homepage = "https://getmonero.org/";
license = licenses.bsd3; license = licenses.bsd3;
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ ehmry rnhmjoj ]; maintainers = with maintainers; [ rnhmjoj ];
}; };
} }

View file

@ -1,13 +0,0 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b43f02f6..4470abbf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -119,7 +119,7 @@ endif (RAIBLOCKS_SECURE_RPC)
include_directories (${CMAKE_SOURCE_DIR})
-set(Boost_USE_STATIC_LIBS ON)
+add_definitions(-DBOOST_LOG_DYN_LINK)
set(Boost_USE_MULTITHREADED ON)
if (BOOST_CUSTOM)

View file

@ -1,28 +1,24 @@
{ lib, stdenv, fetchFromGitHub, cmake, pkg-config, wrapQtAppsHook, boost, libGL { lib, stdenv, fetchFromGitHub, cmake, pkg-config, wrapQtAppsHook, boost, libGL
, qtbase}: , qtbase, python }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "nano-wallet"; pname = "nano-wallet";
version = "20.0"; version = "21.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nanocurrency"; owner = "nanocurrency";
repo = "raiblocks"; repo = "nano-node";
rev = "V${version}"; rev = "V${version}";
sha256 = "12nrjjd89yjzx20d85ccmp395pl0djpx0x0qb8dgka8xfy11k7xn"; sha256 = "0f6chl5vrzdr4w8g3nivfxk3qm6m11js401998afnhz0xaysm4pm";
fetchSubmodules = true; fetchSubmodules = true;
}; };
# Use a patch to force dynamic linking
patches = [
./CMakeLists.txt.patch
];
cmakeFlags = let cmakeFlags = let
options = { options = {
PYTHON_EXECUTABLE = "${python}/bin/python";
NANO_SHARED_BOOST = "ON";
BOOST_ROOT = boost; BOOST_ROOT = boost;
Boost_USE_STATIC_LIBS = "OFF";
RAIBLOCKS_GUI = "ON"; RAIBLOCKS_GUI = "ON";
RAIBLOCKS_TEST = "ON"; RAIBLOCKS_TEST = "ON";
Qt5_DIR = "${qtbase.dev}/lib/cmake/Qt5"; Qt5_DIR = "${qtbase.dev}/lib/cmake/Qt5";
@ -37,17 +33,15 @@ stdenv.mkDerivation rec {
buildInputs = [ boost libGL qtbase ]; buildInputs = [ boost libGL qtbase ];
buildPhase = '' buildPhase = ''
runHook preBuild
make nano_wallet make nano_wallet
''; runHook postBuild
# Move executables under bin directory
postInstall = ''
mkdir -p $out/bin
mv $out/nano* $out/bin/
''; '';
checkPhase = '' checkPhase = ''
runHook preCheck
./core_test ./core_test
runHook postCheck
''; '';
meta = { meta = {

View file

@ -13,14 +13,14 @@ let
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "apostrophe"; pname = "apostrophe";
version = "2.3"; version = "2.4";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "somas"; owner = "somas";
repo = pname; repo = pname;
domain = "gitlab.gnome.org"; domain = "gitlab.gnome.org";
rev = "v${version}"; rev = "v${version}";
sha256 = "1ggrbbnhbnf6p3hs72dww3c9m1rvr4znggmvwcpj6i8v1a3kycnb"; sha256 = "1qzy3zhi18wf42m034s8kcmx9gl05j620x3hf6rnycq2fvy7g4gz";
}; };
nativeBuildInputs = [ meson ninja cmake pkg-config desktop-file-utils nativeBuildInputs = [ meson ninja cmake pkg-config desktop-file-utils
@ -32,9 +32,6 @@ in stdenv.mkDerivation rec {
postPatch = '' postPatch = ''
patchShebangs --build build-aux/meson_post_install.py patchShebangs --build build-aux/meson_post_install.py
# get rid of unused distributed dependencies
rm -r ${pname}/pylocales
''; '';
preFixup = '' preFixup = ''

View file

@ -1,7 +1,7 @@
{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig { stdenv, lib, zlib, glib, alsaLib, dbus, gtk3, atk, pango, freetype, fontconfig
, libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr , libgnome-keyring3, gdk-pixbuf, cairo, cups, expat, libgpgerror, nspr
, gconf, nss, xorg, libcap, systemd, libnotify, libsecret, libuuid, at-spi2-atk , gconf, nss, xorg, libcap, systemd, libnotify, libsecret, libuuid, at-spi2-atk
, at-spi2-core , at-spi2-core, libdbusmenu
}: }:
let let
@ -11,7 +11,7 @@ let
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify xorg.libXcursor xorg.libxkbfile xorg.libXScrnSaver libcap systemd libnotify
xorg.libxcb libsecret libuuid at-spi2-atk at-spi2-core xorg.libxcb libsecret libuuid at-spi2-atk at-spi2-core libdbusmenu
]; ];
libPathNative = lib.makeLibraryPath packages; libPathNative = lib.makeLibraryPath packages;

View file

@ -38,13 +38,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "cudatext"; pname = "cudatext";
version = "1.122.3"; version = "1.129.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Alexey-T"; owner = "Alexey-T";
repo = "CudaText"; repo = "CudaText";
rev = version; rev = version;
sha256 = "1h56hj433z0n4l97zl1cwkjv0qvz4qmvf469zzjzf1nj4zj8px2b"; sha256 = "1sg9wg6w3w0phrnnzpj7h2g22y0x7a3dl57djzydayxmg8fnn2ys";
}; };
postPatch = '' postPatch = ''
@ -91,7 +91,12 @@ stdenv.mkDerivation rec {
install -Dm644 setup/debfiles/cudatext-512.png -t $out/share/pixmaps install -Dm644 setup/debfiles/cudatext-512.png -t $out/share/pixmaps
install -Dm644 setup/debfiles/cudatext.desktop -t $out/share/applications install -Dm644 setup/debfiles/cudatext.desktop -t $out/share/applications
'' + lib.concatMapStringsSep "\n" (lexer: '' '' + lib.concatMapStringsSep "\n" (lexer: ''
install -Dm644 CudaText-lexers/${lexer}/*.{cuda-lexmap,lcf} $out/share/cudatext/data/lexlib if [ -d "CudaText-lexers/${lexer}" ]; then
install -Dm644 CudaText-lexers/${lexer}/*.{cuda-lexmap,lcf} $out/share/cudatext/data/lexlib
else
echo "${lexer} lexer not found"
exit 1
fi
'') additionalLexers; '') additionalLexers;
meta = with lib; { meta = with lib; {

View file

@ -6,38 +6,38 @@
}, },
"ATBinHex-Lazarus": { "ATBinHex-Lazarus": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2020.11.22", "rev": "2021.02.13",
"sha256": "0dkvzm32ls03pfp40fxvsyrkfmyznc5yrj65cp4a8pp9kpkvzlz7" "sha256": "1p2r2q1al6rcsdbbg8ilm4xn6w48bj348khxdmpak7vfwx9741h8"
}, },
"ATFlatControls": { "ATFlatControls": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2021.01.12", "rev": "2021.03.05",
"sha256": "1mavv3krs4srdp362prf4sncssxjh11la5j4lkx0wk5csrmd1pc9" "sha256": "1p2pzha5dd4p23j2bv6jxphj596dlb5v8ixjzg4x2zglz2hir6yz"
}, },
"ATSynEdit": { "ATSynEdit": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2021.01.19", "rev": "2021.03.16",
"sha256": "0lpgfwljwh9mypscbpj5c7fivhza0hizjgqypval3v0209cx38d1" "sha256": "1sq9j2zaif019gl6nf391lyp8k9s38f5s6ci7k3z5v90hkz1dcql"
}, },
"ATSynEdit_Cmp": { "ATSynEdit_Cmp": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2021.01.17", "rev": "2021.03.08",
"sha256": "14i4jdpbmh6sjpvbwipdvvmmqqw8wg592b34a9wdf2f9qxq2p4ly" "sha256": "0xvnvx4qzp6nxi912i4zlnal91k6vbcsyfbz05ib73sz68xqd5qv"
}, },
"EControl": { "EControl": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2021.01.12", "rev": "2021.03.16",
"sha256": "107zyd65vc72fl4mvyirhv2a9m47l9bs6gwqiwar7hrn02zns6bq" "sha256": "159s1rpl829bmaa4bllqhjm8z0vji1ncsd6hw2s8z8hz28n905k8"
}, },
"ATSynEdit_Ex": { "ATSynEdit_Ex": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2020.10.04", "rev": "2021.03.16",
"sha256": "0z66cm9pgdi7whqaim6hva4aa08zrr1881n1fal7lnz6wlla824k" "sha256": "1a4mxcwjm9naxh4piqm5y93w2xd5rgl0vcn108wy1pkr221agg2q"
}, },
"Python-for-Lazarus": { "Python-for-Lazarus": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2021.01.16", "rev": "2021.02.18",
"sha256": "07qv3x1cm3r12gxfnqzxly6nff39bghwwgxzl2lxi1qbpqhcs2l5" "sha256": "0fy6bmpdcl2aa8pb7zban6midkfwdj99x14hdghrv7cp8l4gcsg5"
}, },
"Emmet-Pascal": { "Emmet-Pascal": {
"owner": "Alexey-T", "owner": "Alexey-T",
@ -46,8 +46,8 @@
}, },
"CudaText-lexers": { "CudaText-lexers": {
"owner": "Alexey-T", "owner": "Alexey-T",
"rev": "2021.01.16", "rev": "2021.02.01",
"sha256": "13zyg0cm1c1662l3f7sy462pbc39l1cwm5214nx8ijngf8kgn2zh" "sha256": "051jnrhfpl9n5pgrssf68lj732zxhvjbvna4746ngmdyxvw6dqfd"
}, },
"bgrabitmap": { "bgrabitmap": {
"owner": "bgrabitmap", "owner": "bgrabitmap",

View file

@ -4,10 +4,10 @@
elpaBuild { elpaBuild {
pname = "ace-window"; pname = "ace-window";
ename = "ace-window"; ename = "ace-window";
version = "0.9.0"; version = "0.10.0";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/ace-window-0.9.0.el"; url = "https://elpa.gnu.org/packages/ace-window-0.10.0.tar";
sha256 = "1m7fc4arcxn7fp0hnzyp20czjp4zx3rjaspfzpxzgc8sbghi81a3"; sha256 = "1kfyf7za4zc41gf0k3rq8byvwkw7q5pxnyynh5i0gv686zrzak1i";
}; };
packageRequires = [ avy ]; packageRequires = [ avy ];
meta = { meta = {
@ -343,10 +343,10 @@
elpaBuild { elpaBuild {
pname = "bnf-mode"; pname = "bnf-mode";
ename = "bnf-mode"; ename = "bnf-mode";
version = "0.4.4"; version = "0.4.5";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/bnf-mode-0.4.4.tar"; url = "https://elpa.gnu.org/packages/bnf-mode-0.4.5.tar";
sha256 = "0acr3x96zknxs90dc9mpnrwiaa81883h36lx5q1lxfn78vjfw14x"; sha256 = "0bj5ffqi54cdrraj5bp4v2cpbxjzly1p467dx1hzrlwv2b1svy2y";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -497,10 +497,10 @@
elpaBuild { elpaBuild {
pname = "clipboard-collector"; pname = "clipboard-collector";
ename = "clipboard-collector"; ename = "clipboard-collector";
version = "0.2"; version = "0.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/clipboard-collector-0.2.el"; url = "https://elpa.gnu.org/packages/clipboard-collector-0.3.tar";
sha256 = "19scspkxgm3b1jkv10jy6nw9gv1q6sfjys09l37mvsva3djxa1dl"; sha256 = "09zxbivmc1zhcj8ksac2a0qpqh74rrx2slnj6cwz1n1nixn19743";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {
@ -591,10 +591,10 @@
elpaBuild { elpaBuild {
pname = "company-math"; pname = "company-math";
ename = "company-math"; ename = "company-math";
version = "1.3"; version = "1.4";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/company-math-1.3.tar"; url = "https://elpa.gnu.org/packages/company-math-1.4.tar";
sha256 = "0fc9ms0s9w81sxp3qcfva3n3d2qys0pj19pnm621a6v1xdsc7i1l"; sha256 = "17p5ib65lg8lj2gwip5qgsznww96pch16pr16b41lls5dx4k6d6z";
}; };
packageRequires = [ company math-symbol-lists ]; packageRequires = [ company math-symbol-lists ];
meta = { meta = {
@ -940,10 +940,10 @@
elpaBuild { elpaBuild {
pname = "easy-kill"; pname = "easy-kill";
ename = "easy-kill"; ename = "easy-kill";
version = "0.9.3"; version = "0.9.4";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/easy-kill-0.9.3.tar"; url = "https://elpa.gnu.org/packages/easy-kill-0.9.4.tar";
sha256 = "17nw0mglmg877axwg1d0gs03yc0p04lzmd3pl0nsnqbh3303fnqb"; sha256 = "1pqqv4dhfm00wqch4wy3n2illsvxlz9r6r64925cvq3i7wq4la1x";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -1118,10 +1118,10 @@
elpaBuild { elpaBuild {
pname = "elisp-benchmarks"; pname = "elisp-benchmarks";
ename = "elisp-benchmarks"; ename = "elisp-benchmarks";
version = "1.9"; version = "1.11";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/elisp-benchmarks-1.9.tar"; url = "https://elpa.gnu.org/packages/elisp-benchmarks-1.11.tar";
sha256 = "14qmybmjlgkjns6vlbsf46f276ykydnbm0f6mij2w3b9qx7z2nb2"; sha256 = "0s1mpapvcivy25zbhw6ghpg0ym23vb4dsrz876rl4z2rfyckxral";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -1884,10 +1884,10 @@
elpaBuild { elpaBuild {
pname = "kiwix"; pname = "kiwix";
ename = "kiwix"; ename = "kiwix";
version = "1.0.1"; version = "1.0.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/kiwix-1.0.1.tar"; url = "https://elpa.gnu.org/packages/kiwix-1.0.3.tar";
sha256 = "1dly6pilf71hq3mra9kc63i6iynzkxjmp9gwy0rhnvhq4b4qr01d"; sha256 = "061b816xp8ykqd56z0nvc69aql9y4mba42p6x6vc0j6gr9n3c1j6";
}; };
packageRequires = [ emacs request ]; packageRequires = [ emacs request ];
meta = { meta = {
@ -1929,10 +1929,10 @@
elpaBuild { elpaBuild {
pname = "leaf"; pname = "leaf";
ename = "leaf"; ename = "leaf";
version = "4.3.2"; version = "4.4.4";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/leaf-4.3.2.tar"; url = "https://elpa.gnu.org/packages/leaf-4.4.4.tar";
sha256 = "190sfnnii9jnj8amjkdabd8w9k2xyalhg4h488a5gzjxdzz2s6zi"; sha256 = "1npg06zmy21kg2qsqgfm03l7vjib697i96awypcdb0hw5mvmc1a1";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {
@ -2195,31 +2195,54 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
modus-operandi-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }: modus-operandi-theme = callPackage ({ elpaBuild
, emacs
, fetchurl
, lib
, modus-themes }:
elpaBuild { elpaBuild {
pname = "modus-operandi-theme"; pname = "modus-operandi-theme";
ename = "modus-operandi-theme"; ename = "modus-operandi-theme";
version = "0.12.0"; version = "0.13.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.12.0.el"; url = "https://elpa.gnu.org/packages/modus-operandi-theme-0.13.1.tar";
sha256 = "1mllyysn701qfnglxs7n2f6mrzrz55v9hcwspvafc6fl2blr393y"; sha256 = "08l9qmhvxiscxn4mfb80x57mk4gfm5r0fs2l9c8i3gfzd4i3h091";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs modus-themes ];
meta = { meta = {
homepage = "https://elpa.gnu.org/packages/modus-operandi-theme.html"; homepage = "https://elpa.gnu.org/packages/modus-operandi-theme.html";
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
modus-vivendi-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }: modus-themes = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "modus-themes";
ename = "modus-themes";
version = "1.2.4";
src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-themes-1.2.4.tar";
sha256 = "0wz6dgkrq4ryvj0kxnzqxwh4i8b9lw15d5dsazjpqa7gfwffpzp0";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/modus-themes.html";
license = lib.licenses.free;
};
}) {};
modus-vivendi-theme = callPackage ({ elpaBuild
, emacs
, fetchurl
, lib
, modus-themes }:
elpaBuild { elpaBuild {
pname = "modus-vivendi-theme"; pname = "modus-vivendi-theme";
ename = "modus-vivendi-theme"; ename = "modus-vivendi-theme";
version = "0.12.0"; version = "0.13.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.12.0.el"; url = "https://elpa.gnu.org/packages/modus-vivendi-theme-0.13.1.tar";
sha256 = "01f6z5xjnmki1k9m83jwva42lxidb31pdpwm4wpxjzxqmb96picn"; sha256 = "0xz304zcc872c2zwnlm8ky0m18smf7bffiyj21ygghgclr7kgma1";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs modus-themes ];
meta = { meta = {
homepage = "https://elpa.gnu.org/packages/modus-vivendi-theme.html"; homepage = "https://elpa.gnu.org/packages/modus-vivendi-theme.html";
license = lib.licenses.free; license = lib.licenses.free;
@ -2763,10 +2786,10 @@
elpaBuild { elpaBuild {
pname = "pyim"; pname = "pyim";
ename = "pyim"; ename = "pyim";
version = "3.5"; version = "3.6";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/pyim-3.5.tar"; url = "https://elpa.gnu.org/packages/pyim-3.6.tar";
sha256 = "0593ds3zbmpd6235b8v33f3cb3sn8cwr6arb6zbf1ba97nawjxqs"; sha256 = "1fmbzh33s9xdvrfjhkqr9ydcqbiv8lr04k5idvbpc9vwjjjan5y0";
}; };
packageRequires = [ async emacs xr ]; packageRequires = [ async emacs xr ];
meta = { meta = {
@ -3103,10 +3126,10 @@
elpaBuild { elpaBuild {
pname = "rich-minority"; pname = "rich-minority";
ename = "rich-minority"; ename = "rich-minority";
version = "1.0.1"; version = "1.0.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/rich-minority-1.0.1.el"; url = "https://elpa.gnu.org/packages/rich-minority-1.0.3.tar";
sha256 = "1pr89k3jz044vf582klphl1zf0r7hj2g7ga8j1dwbrpr9ngiicgc"; sha256 = "1w61qvx2rw6a6gmrm61080zghil95nzdv4w06c0pvyb62m4rwab0";
}; };
packageRequires = [ cl-lib ]; packageRequires = [ cl-lib ];
meta = { meta = {
@ -3225,6 +3248,21 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
setup = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "setup";
ename = "setup";
version = "0.1.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/setup-0.1.1.tar";
sha256 = "0z34m06lxw6xd6bxacm1h5cijamsksk4daf6fbzhd7kqmw3gbgqg";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/setup.html";
license = lib.licenses.free;
};
}) {};
shelisp = callPackage ({ elpaBuild, fetchurl, lib }: shelisp = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "shelisp"; pname = "shelisp";
@ -3797,10 +3835,10 @@
elpaBuild { elpaBuild {
pname = "valign"; pname = "valign";
ename = "valign"; ename = "valign";
version = "3.1.0"; version = "3.1.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/valign-3.1.0.tar"; url = "https://elpa.gnu.org/packages/valign-3.1.1.tar";
sha256 = "0zx6p2nlvd4nkffj0myqv4hry8kgnhq45fcivfjzbfn62j2kp293"; sha256 = "1nla0zfj0rxwhdjgnsy2c34wzrxfxiwl89cjb6aicyvfxninz7j0";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {
@ -4012,10 +4050,10 @@
elpaBuild { elpaBuild {
pname = "which-key"; pname = "which-key";
ename = "which-key"; ename = "which-key";
version = "3.3.2"; version = "3.5.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/which-key-3.3.2.tar"; url = "https://elpa.gnu.org/packages/which-key-3.5.1.tar";
sha256 = "01g5jcikhgxnri1rpbjq191220b4r3bimz2jzs1asc766w42q2gb"; sha256 = "187cssvqpd0wj01rgd19pp1k6aj9m2n5fdqznkga6w1h6cb5cm2b";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {

View file

@ -4,10 +4,10 @@
elpaBuild { elpaBuild {
pname = "org"; pname = "org";
ename = "org"; ename = "org";
version = "20210308"; version = "20210315";
src = fetchurl { src = fetchurl {
url = "https://orgmode.org/elpa/org-20210308.tar"; url = "https://orgmode.org/elpa/org-20210315.tar";
sha256 = "1i5zga615inn5s547329g6paqbzcbhyj9hxv14c0c1m9bhra5bjs"; sha256 = "128agds82kfmvxshzrs61802vgwlf2dsm79hq9x2bljrnvf8p14l";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -19,10 +19,10 @@
elpaBuild { elpaBuild {
pname = "org-plus-contrib"; pname = "org-plus-contrib";
ename = "org-plus-contrib"; ename = "org-plus-contrib";
version = "20210308"; version = "20210315";
src = fetchurl { src = fetchurl {
url = "https://orgmode.org/elpa/org-plus-contrib-20210308.tar"; url = "https://orgmode.org/elpa/org-plus-contrib-20210315.tar";
sha256 = "1agbxhjkkmf4p8p8mwc6sv77ij22dr5fyhkpsnljvzkidiarfldf"; sha256 = "0dih4690pbbnwlphjnv1kgvsw43pkcgk41xjjiphy9sf7w9gr11j";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {

View file

@ -5,16 +5,16 @@
buildGoModule rec { buildGoModule rec {
pname = "gophernotes"; pname = "gophernotes";
version = "0.7.1"; version = "0.7.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "gopherdata"; owner = "gopherdata";
repo = "gophernotes"; repo = "gophernotes";
rev = "v${version}"; rev = "v${version}";
sha256 = "0hs92bdrsjqafdkhg2fk3z16h307i32mvbm9f6bb80bgsciysh27"; sha256 = "sha256-EEMKV+k5qcep4z7J5r1nSLxmb0fbfpJOPmz5bE91cd8=";
}; };
vendorSha256 = "1ylqf1sx0h2kixnq9f3prn3sha43q3ybd5ay57yy5z79qr8zqvxs"; vendorSha256 = "sha256-Wy4HcPlrlYUjRQHhw+UPAa+Rn1FvJobWGxgFiJKJTAg=";
meta = with lib; { meta = with lib; {
description = "Go kernel for Jupyter notebooks"; description = "Go kernel for Jupyter notebooks";

View file

@ -21,6 +21,5 @@ buildGoPackage rec {
longDescription = "The Hex Editor From Hell!"; longDescription = "The Hex Editor From Hell!";
license = with licenses; [ mit ]; license = with licenses; [ mit ];
maintainers = with maintainers; [ ramkromberg ]; maintainers = with maintainers; [ ramkromberg ];
platforms = with platforms; linux;
}; };
} }

View file

@ -270,12 +270,12 @@ in
clion = buildClion rec { clion = buildClion rec {
name = "clion-${version}"; name = "clion-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.3"; /* updated by script */
description = "C/C++ IDE. New. Intelligent. Cross-platform"; description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz"; url = "https://download.jetbrains.com/cpp/CLion-${version}.tar.gz";
sha256 = "10120y9ccdlhjrpvfnspfj4s7940b3v3yic78r372wj5ns4bsjax"; /* updated by script */ sha256 = "10s0jkxi892pg7d2slh7cvrd0ch2223qms3c9v1ax0n6ymfkcw14"; /* updated by script */
}; };
wmClass = "jetbrains-clion"; wmClass = "jetbrains-clion";
update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml update-channel = "CLion RELEASE"; # channel's id as in http://www.jetbrains.com/updates/updates.xml
@ -296,12 +296,12 @@ in
goland = buildGoland rec { goland = buildGoland rec {
name = "goland-${version}"; name = "goland-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.4"; /* updated by script */
description = "Up and Coming Go IDE"; description = "Up and Coming Go IDE";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/go/${name}.tar.gz"; url = "https://download.jetbrains.com/go/${name}.tar.gz";
sha256 = "00wbl4g1wgb9c287z6i7a48bm5zyb1gkmyqmhasmj0n2vamaq6sz"; /* updated by script */ sha256 = "148rs9w0fqr5xzhnq5bd473j4vnb69kf8yxxjmwdp25z2d7x47ip"; /* updated by script */
}; };
wmClass = "jetbrains-goland"; wmClass = "jetbrains-goland";
update-channel = "GoLand RELEASE"; update-channel = "GoLand RELEASE";
@ -309,12 +309,12 @@ in
idea-community = buildIdea rec { idea-community = buildIdea rec {
name = "idea-community-${version}"; name = "idea-community-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.3"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, community edition"; description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
license = lib.licenses.asl20; license = lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
sha256 = "0zkjmvi27b69xrkn4s6f5788n5yn044phgf48kamfqfs37q4xf1d"; /* updated by script */ sha256 = "1msfl8qq0aday4ssip73r0y096mrb89mr7z2j4mpqhkzgsmvpjk0"; /* updated by script */
}; };
wmClass = "jetbrains-idea-ce"; wmClass = "jetbrains-idea-ce";
update-channel = "IntelliJ IDEA RELEASE"; update-channel = "IntelliJ IDEA RELEASE";
@ -322,12 +322,12 @@ in
idea-ultimate = buildIdea rec { idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}"; name = "idea-ultimate-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.3"; /* updated by script */
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license"; description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz"; url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
sha256 = "1vac21d9p52z4k1dl903rc2dbbcf873xbg8rx1fp9nsaaphnc9lq"; /* updated by script */ sha256 = "0szq8lqp1h7kci8kqd1bb3g16j3p5f4dfmbccbyrrwsram3hvjgi"; /* updated by script */
}; };
wmClass = "jetbrains-idea"; wmClass = "jetbrains-idea";
update-channel = "IntelliJ IDEA RELEASE"; update-channel = "IntelliJ IDEA RELEASE";
@ -335,12 +335,12 @@ in
mps = buildMps rec { mps = buildMps rec {
name = "mps-${version}"; name = "mps-${version}";
version = "2020.3.1"; /* updated by script */ version = "2020.3.2"; /* updated by script */
description = "Create your own domain-specific language"; description = "Create your own domain-specific language";
license = lib.licenses.asl20; license = lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/mps/2020.3/MPS-${version}.tar.gz"; url = "https://download.jetbrains.com/mps/2020.3/MPS-${version}.tar.gz";
sha256 = "0qvl724mm53rxfhafl6561rhpwppcadmwr9sh0hpsfgsprh2xznv"; /* updated by script */ sha256 = "0vskzia48jq50bjdqw993gizvvd59f3qlszbsdp7xg5a3afbk7p3"; /* updated by script */
}; };
wmClass = "jetbrains-mps"; wmClass = "jetbrains-mps";
update-channel = "MPS RELEASE"; update-channel = "MPS RELEASE";
@ -348,12 +348,12 @@ in
phpstorm = buildPhpStorm rec { phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}"; name = "phpstorm-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.3"; /* updated by script */
description = "Professional IDE for Web and PHP developers"; description = "Professional IDE for Web and PHP developers";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz"; url = "https://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "1dmymlv71syjv8byb9ap9c13fimjl6c3r94dwr9kghdlj3jh7p0k"; /* updated by script */ sha256 = "0arff0882xw1azbxpn1n3wbc5ncg8gmfim3jf6rq2dky8kp9ylkm"; /* updated by script */
}; };
wmClass = "jetbrains-phpstorm"; wmClass = "jetbrains-phpstorm";
update-channel = "PhpStorm RELEASE"; update-channel = "PhpStorm RELEASE";
@ -361,12 +361,12 @@ in
pycharm-community = buildPycharm rec { pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}"; name = "pycharm-community-${version}";
version = "2020.3.3"; /* updated by script */ version = "2020.3.4"; /* updated by script */
description = "PyCharm Community Edition"; description = "PyCharm Community Edition";
license = lib.licenses.asl20; license = lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz"; url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "0p05pgfmr9515sqbqbjiksg7qzvqxcs119lxfc6dsirdvc1qhnli"; /* updated by script */ sha256 = "0xh0hb0v3ilgqjljh22c75hkllqgqbpppplni2dz2pv9rb3r5dv5"; /* updated by script */
}; };
wmClass = "jetbrains-pycharm-ce"; wmClass = "jetbrains-pycharm-ce";
update-channel = "PyCharm RELEASE"; update-channel = "PyCharm RELEASE";
@ -374,12 +374,12 @@ in
pycharm-professional = buildPycharm rec { pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}"; name = "pycharm-professional-${version}";
version = "2020.3.3"; /* updated by script */ version = "2020.3.4"; /* updated by script */
description = "PyCharm Professional Edition"; description = "PyCharm Professional Edition";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/python/${name}.tar.gz"; url = "https://download.jetbrains.com/python/${name}.tar.gz";
sha256 = "1yzv1pxpw6pvsjljqvbnf8qgdx34rs5j232zaq4vb5x2ahswf9mm"; /* updated by script */ sha256 = "18gkjc52qpghs721rkbsj03kaf6n8c8sxg57b2d82hjckjgm6q10"; /* updated by script */
}; };
wmClass = "jetbrains-pycharm"; wmClass = "jetbrains-pycharm";
update-channel = "PyCharm RELEASE"; update-channel = "PyCharm RELEASE";
@ -387,12 +387,12 @@ in
rider = buildRider rec { rider = buildRider rec {
name = "rider-${version}"; name = "rider-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.4"; /* updated by script */
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper"; description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz"; url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
sha256 = "1dkgbd2nqkjcswf7j3pnrsaq9n5wk42abz2c4wgkrh1zrpgihd0j"; /* updated by script */ sha256 = "1v99yqj83aw9j400z3v24n7xnyxzw5vm0b3rwd4yb8w3ajl59gq1"; /* updated by script */
}; };
wmClass = "jetbrains-rider"; wmClass = "jetbrains-rider";
update-channel = "Rider RELEASE"; update-channel = "Rider RELEASE";
@ -413,12 +413,12 @@ in
webstorm = buildWebStorm rec { webstorm = buildWebStorm rec {
name = "webstorm-${version}"; name = "webstorm-${version}";
version = "2020.3.2"; /* updated by script */ version = "2020.3.3"; /* updated by script */
description = "Professional IDE for Web and JavaScript development"; description = "Professional IDE for Web and JavaScript development";
license = lib.licenses.unfree; license = lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz"; url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
sha256 = "1jpa4gfy0xmmscjqca4pvvwvh4h3lg02nbf1m5wcsjdcywbk9y40"; /* updated by script */ sha256 = "0szq7qz5p1ksmqdy1rma5rfl0d9dy9qmhz8k5id4zdpyz2jsacfb"; /* updated by script */
}; };
wmClass = "jetbrains-webstorm"; wmClass = "jetbrains-webstorm";
update-channel = "WebStorm RELEASE"; update-channel = "WebStorm RELEASE";

View file

@ -34,13 +34,13 @@ self: super: {
kak-ansi = stdenv.mkDerivation rec { kak-ansi = stdenv.mkDerivation rec {
pname = "kak-ansi"; pname = "kak-ansi";
version = "0.2.1"; version = "0.2.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "eraserhd"; owner = "eraserhd";
repo = "kak-ansi"; repo = "kak-ansi";
rev = "v${version}"; rev = "v${version}";
sha256 = "0ddjih8hfyf6s4g7y46p1355kklaw1ydzzh61141i0r45wyb2d0d"; sha256 = "pO7M3MjKMJQew9O20KALEvsXLuCKPYGGTtuN/q/kj8Q=";
}; };
installPhase = '' installPhase = ''

View file

@ -57,6 +57,6 @@ python3Packages.buildPythonApplication rec {
''; '';
license = lib.licenses.gpl3; license = lib.licenses.gpl3;
maintainers = [ lib.maintainers.steveej ]; maintainers = [ lib.maintainers.steveej ];
platforms = lib.platforms.linux; platforms = lib.platforms.unix;
}; };
} }

View file

@ -0,0 +1,43 @@
{ lib, stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
, msgpack, neovim, pythonPackages, qtbase }:
mkDerivation rec {
pname = "neovim-qt-unwrapped";
version = "0.2.16.1";
src = fetchFromGitHub {
owner = "equalsraf";
repo = "neovim-qt";
rev = "v${version}";
sha256 = "0x5brrim3f21bzdmh6wyrhrislwpx1248wbx56csvic6v78hzqny";
};
cmakeFlags = [
"-DUSE_SYSTEM_MSGPACK=1"
"-DENABLE_TESTS=0" # tests fail because xcb platform plugin is not found
];
buildInputs = [
neovim.unwrapped # only used to generate help tags at build time
qtbase
] ++ (with pythonPackages; [
jinja2 python msgpack
]);
nativeBuildInputs = [ cmake doxygen ];
preCheck = ''
# The GUI tests require a running X server, disable them
sed -i ../test/CMakeLists.txt -e '/^add_xtest_gui/d'
'';
doCheck = true;
meta = with lib; {
description = "Neovim client library and GUI, in Qt5";
homepage = "https://github.com/equalsraf/neovim-qt";
license = licenses.isc;
maintainers = with maintainers; [ peterhoeg ];
inherit (neovim.meta) platforms;
};
}

View file

@ -1,79 +1,38 @@
{ lib, stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper { lib, stdenv, mkDerivation, fetchFromGitHub, cmake, doxygen, makeWrapper
, msgpack, neovim, pythonPackages, qtbase }: , msgpack, neovim, pythonPackages, qtbase, neovim-qt-unwrapped }:
let let
unwrapped = mkDerivation rec { unwrapped = neovim-qt-unwrapped;
pname = "neovim-qt-unwrapped";
version = "0.2.16.1";
src = fetchFromGitHub {
owner = "equalsraf";
repo = "neovim-qt";
rev = "v${version}";
sha256 = "0x5brrim3f21bzdmh6wyrhrislwpx1248wbx56csvic6v78hzqny";
};
cmakeFlags = [
"-DUSE_SYSTEM_MSGPACK=1"
"-DENABLE_TESTS=0" # tests fail because xcb platform plugin is not found
];
buildInputs = [
neovim.unwrapped # only used to generate help tags at build time
qtbase
] ++ (with pythonPackages; [
jinja2 python msgpack
]);
nativeBuildInputs = [ cmake doxygen ];
preCheck = ''
# The GUI tests require a running X server, disable them
sed -i ../test/CMakeLists.txt \
-e '/^add_xtest_gui/d'
'';
doCheck = true;
meta = with lib; {
description = "Neovim client library and GUI, in Qt5";
homepage = "https://github.com/equalsraf/neovim-qt";
license = licenses.isc;
maintainers = with maintainers; [ peterhoeg ];
inherit (neovim.meta) platforms;
inherit version;
};
};
in in
stdenv.mkDerivation { stdenv.mkDerivation {
pname = "neovim-qt"; pname = "neovim-qt";
version = unwrapped.version; version = unwrapped.version;
buildCommand = if stdenv.isDarwin then '' buildCommand = if stdenv.isDarwin then ''
mkdir -p $out/Applications mkdir -p $out/Applications
cp -r ${unwrapped}/bin/nvim-qt.app $out/Applications cp -r ${unwrapped}/bin/nvim-qt.app $out/Applications
chmod -R a+w "$out/Applications/nvim-qt.app/Contents/MacOS" chmod -R a+w $out/Applications/nvim-qt.app/Contents/MacOS
wrapProgram "$out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt" \ wrapProgram $out/Applications/nvim-qt.app/Contents/MacOS/nvim-qt \
--prefix PATH : "${neovim}/bin" --prefix PATH : ${neovim}/bin
'' else '' '' else ''
makeWrapper '${unwrapped}/bin/nvim-qt' "$out/bin/nvim-qt" \ makeWrapper ${unwrapped}/bin/nvim-qt $out/bin/nvim-qt \
--prefix PATH : "${neovim}/bin" --prefix PATH : ${neovim}/bin
# link .desktop file # link .desktop file
mkdir -p "$out/share/pixmaps" mkdir -p $out/share/pixmaps
ln -s '${unwrapped}/share/applications' "$out/share/applications" ln -s ${unwrapped}/share/applications $out/share/applications
ln -s '${unwrapped}/share/pixmaps/nvim-qt.png' "$out/share/pixmaps/nvim-qt.png" ln -s ${unwrapped}/share/pixmaps/nvim-qt.png $out/share/pixmaps/nvim-qt.png
''; '';
preferLocalBuild = true; preferLocalBuild = true;
nativeBuildInputs = [ nativeBuildInputs = [
makeWrapper makeWrapper
]; ];
passthru = { passthru = {
inherit unwrapped; inherit unwrapped;
}; };
inherit (unwrapped) meta; inherit (unwrapped) meta;
} }

View file

@ -3,7 +3,7 @@
}: }:
let let
version = "12.2"; version = "12.3";
desktopItem = makeDesktopItem { desktopItem = makeDesktopItem {
name = "netbeans"; name = "netbeans";
exec = "netbeans"; exec = "netbeans";
@ -19,7 +19,7 @@ stdenv.mkDerivation {
inherit version; inherit version;
src = fetchurl { src = fetchurl {
url = "mirror://apache/netbeans/netbeans/${version}/netbeans-${version}-bin.zip"; url = "mirror://apache/netbeans/netbeans/${version}/netbeans-${version}-bin.zip";
sha512 = "b25cda9830e8fe1d05687b08cc5fa9bcac7e8e6d12776998a4da7e483b3be0d04493345e56be7e6198fa8f86428d57d4459bfa7372c2e3f918f4a1101d0a31a7"; sha512 = "2fy696qrfbdkzmq4cwd6l7v6rsc0bf9akh61w3azc544bq3vxl3v6s31hvg3ba0nsh0jv3nbdrk6jp1l4hwgcg9zg7kf2012a1vv2nk";
}; };
buildCommand = '' buildCommand = ''

View file

@ -10,7 +10,7 @@
, readline , readline
, guiSupport ? false, tcl, tcllib, tk , guiSupport ? false, tcl, tcllib, tk
, miSupport ? true, json_c , miSupport ? true, json_c
, nbdSupport ? true, libnbd , nbdSupport ? !stdenv.isDarwin, libnbd
, textStylingSupport ? true , textStylingSupport ? true
, dejagnu , dejagnu
}: }:
@ -19,11 +19,11 @@ let
isCross = stdenv.hostPlatform != stdenv.buildPlatform; isCross = stdenv.hostPlatform != stdenv.buildPlatform;
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
pname = "poke"; pname = "poke";
version = "1.0"; version = "1.1";
src = fetchurl { src = fetchurl {
url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz"; url = "mirror://gnu/${pname}/${pname}-${version}.tar.gz";
hash = "sha256-3pMLhwDAdys8LNDQyjX1D9PXe9+CxiUetRa0noyiWwo="; hash = "sha256-zWjfY8dBtBYLEsvqAvJ8RxWCeUZuNEOTDSU1pFLAatY=";
}; };
postPatch = '' postPatch = ''

View file

@ -33,6 +33,10 @@ in python3.pkgs.buildPythonApplication {
paths = map (path: "${path}/lib/aspell") enchantAspellDicts; paths = map (path: "${path}/lib/aspell") enchantAspellDicts;
}}" }}"
) )
substituteInPlace $out/share/applications/me.mitya57.ReText.desktop \
--replace "Exec=ReText-${version}.data/scripts/retext %F" "Exec=$out/bin/retext %F" \
--replace "Icon=ReText-${version}.data/data/share/retext/icons/retext.svg" "Icon=$out/share/retext/icons/retext.svg"
''; '';
meta = with lib; { meta = with lib; {

View file

@ -13,10 +13,10 @@ let
archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz"; archive_fmt = if system == "x86_64-darwin" then "zip" else "tar.gz";
sha256 = { sha256 = {
x86_64-linux = "1b9pzfi034idhi6f3n0sz3fckf95ckf2qx3sgfn9fx2g52r9m9z1"; x86_64-linux = "1577wxmm8623aj513hxqcfim4d9p1r9wbla9my0c0c1x6pik0h8h";
x86_64-darwin = "1983d8hn04xl5vw7p6842cv5x08q7vilqg7nhvy5yg3lj9q2rpp0"; x86_64-darwin = "1n8q626nlqw78wlpfppzj365gmlz2swll6csg3ic7p4ik3nak95b";
aarch64-linux = "09l32abkq110ib4hjd0yv9avr8a2vg5vs7w4jpk0p499gzrysh2l"; aarch64-linux = "1a7rkmhz456rsqw95lrknp1wqsdp63pkzh76vhzy5bazb1h081v0";
armv7l-linux = "1s0gbq1fapq2i905c0xxfyh0656qnb7dmg00khlwbplxzd6i6m18"; armv7l-linux = "1qjik1r41c8n9fs7p09p0zdj8c5xgqjniwv23hcy6mp28i4whclr";
}.${system}; }.${system};
sourceRoot = { sourceRoot = {
@ -33,7 +33,7 @@ in
# Please backport all compatible updates to the stable release. # Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem. # This is important for the extension ecosystem.
version = "1.53.2"; version = "1.54.3";
pname = "vscodium"; pname = "vscodium";
executableName = "codium"; executableName = "codium";

View file

@ -32,11 +32,11 @@
mkDerivation rec { mkDerivation rec {
pname = "saga"; pname = "saga";
version = "7.8.2"; version = "7.9.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/saga-gis/SAGA%20-%20${lib.versions.major version}/SAGA%20-%20${version}/saga-${version}.tar.gz"; url = "mirror://sourceforge/saga-gis/SAGA%20-%20${lib.versions.major version}/SAGA%20-%20${version}/saga-${version}.tar.gz";
sha256 = "1008l8f4733vsxy3y6d1yg8m4h8pp65d2p48ljc9kp5nyrg5vfy5"; sha256 = "sha256-ob23JbQnBxNO1QA8zUhLjgo5YBR90pwm8JT62bsPBdg=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "batik"; pname = "batik";
version = "1.13"; version = "1.14";
src = fetchurl { src = fetchurl {
url = "mirror://apache/xmlgraphics/batik/binaries/batik-bin-${version}.tar.gz"; url = "mirror://apache/xmlgraphics/batik/binaries/batik-bin-${version}.tar.gz";
sha256 = "16sq90nbs6psgm3xz30sbs6r5dnpd3qzsvr1xvnp4yipwjcmhmkw"; sha256 = "sha256-D06qgb5wdS5AahnznDnAGISPCZY/CPqJdGQFRwUsRhg=";
}; };
meta = with lib; { meta = with lib; {

View file

@ -0,0 +1,47 @@
{ python3Packages
, fetchFromGitHub
, lib
, jre
, qt5
, wrapQtAppsHook
}:
python3Packages.buildPythonApplication rec {
pname = "eddy";
version = "1.2.1";
src = fetchFromGitHub {
owner = "obdasystems";
repo = pname;
rev = "v${version}";
sha256 = "12j77bbva5py9bd57c80cmjvf8vll40h19n81h16lvv2r2r7jynh";
};
propagatedBuildInputs = [
qt5.qtbase
wrapQtAppsHook
python3Packages.setuptools
python3Packages.rfc3987
python3Packages.JPype1
python3Packages.pyqt5
];
# Tests fail with: ImportError: cannot import name 'QtXmlPatterns' from 'PyQt5'
doCheck = false;
preBuild = ''
export HOME=/tmp
'';
preFixup = ''
wrapQtApp "$out/bin/eddy" --prefix JAVA_HOME : ${jre}
'';
meta = with lib; {
homepage = "http://www.obdasystems.com/eddy";
description = "Graphical editor for the specification and visualization of Graphol ontologies";
license = licenses.gpl3Only;
platforms = platforms.linux;
maintainers = with maintainers; [ koslambrou ];
};
}

View file

@ -8,16 +8,16 @@
, pythonPackages , pythonPackages
}: }:
pythonPackages.buildPythonPackage { pythonPackages.buildPythonPackage rec {
pname = "hydrus"; pname = "hydrus";
version = "426"; version = "431";
format = "other"; format = "other";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "hydrusnetwork"; owner = "hydrusnetwork";
repo = "hydrus"; repo = "hydrus";
rev = "1acdc258e5bb2ae22f5eafaf3dac8d9265dba5e2"; rev = "v${version}";
sha256 = "1snihd433hx36s6d5hsnq4qg0xs6ag4822lwm5fqak64n22ad2qb"; sha256 = "0mfql27n725k6ynvhkgzmxxpfbjlzil2fjpy082gz257kb0880zy";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
@ -44,6 +44,7 @@ pythonPackages.buildPythonPackage {
matplotlib matplotlib
qtpy qtpy
pyside2 pyside2
mpv
]; ];
checkInputs = with pythonPackages; [ nose httmock ]; checkInputs = with pythonPackages; [ nose httmock ];

View file

@ -6,7 +6,7 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "lightburn"; pname = "lightburn";
version = "0.9.20"; version = "0.9.21";
nativeBuildInputs = [ nativeBuildInputs = [
p7zip p7zip
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "https://github.com/LightBurnSoftware/deployment/releases/download/${version}/LightBurn-Linux64-v${version}.7z"; url = "https://github.com/LightBurnSoftware/deployment/releases/download/${version}/LightBurn-Linux64-v${version}.7z";
sha256 = "sha256-FtkBIoz5u70DbZZBH4uSaAkmOphWA9H0uYuukIPVGUM="; sha256 = "sha256-Tnv+vfKOdDWIU36T9ZqwdTwuMd2AOGyKBY0IkPfrZlc=";
}; };
buildInputs = [ buildInputs = [

View file

@ -1,7 +1,6 @@
{ mkDerivation { mkDerivation
, lib , lib
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, libGLU , libGLU
, qtbase , qtbase
, qtscript , qtscript
@ -19,13 +18,13 @@
mkDerivation rec { mkDerivation rec {
pname = "meshlab"; pname = "meshlab";
version = "2020.07"; version = "2020.12";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cnr-isti-vclab"; owner = "cnr-isti-vclab";
repo = "meshlab"; repo = "meshlab";
rev = "Meshlab-${version}"; rev = "Meshlab-${version}";
sha256 = "0vj849b57zk3k6lx35zzcjhr9gdy4hxqnnkb8chwy7hw262cm3ri"; sha256 = "QrnqXEVqI1ADUYWalZ0h/0+xS+gDZTinm0weT39onw0=";
fetchSubmodules = true; # for vcglib fetchSubmodules = true; # for vcglib
}; };
@ -46,17 +45,11 @@ mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
patches = [
# Make cmake use the system qhull. The next meshlab will not need this patch because it is already in master.
(fetchpatch {
url = "https://patch-diff.githubusercontent.com/raw/cnr-isti-vclab/meshlab/pull/747.patch";
sha256 = "0wx9f6zn458xz3lsqcgvsbwh1pgi3g0lah93nlbsb0sagng7n565";
})
];
preConfigure = '' preConfigure = ''
substituteAll ${./meshlab.desktop} install/linux/resources/meshlab.desktop substituteAll ${./meshlab.desktop} scripts/Linux/resources/meshlab.desktop
cd src cmakeDir=$PWD/src
mkdir ../build
cd ../build
''; '';
cmakeFlags = [ cmakeFlags = [
@ -75,19 +68,12 @@ mkDerivation rec {
postFixup = '' postFixup = ''
patchelf --add-needed $out/lib/meshlab/libmeshlab-common.so $out/bin/.meshlab-wrapped patchelf --add-needed $out/lib/meshlab/libmeshlab-common.so $out/bin/.meshlab-wrapped
patchelf --add-needed $out/lib/meshlab/libmeshlab-common.so $out/bin/.meshlabserver-wrapped
''; '';
# Meshlab is not format-security clean; without disabling hardening, we get:
# src/common/GLLogStream.h:61:37: error: format not a string literal and no format arguments [-Werror=format-security]
# 61 | int chars_written = snprintf(buf, buf_size, f, std::forward<Ts>(ts)...);
# |
hardeningDisable = [ "format" ];
meta = { meta = {
description = "A system for processing and editing 3D triangular meshes"; description = "A system for processing and editing 3D triangular meshes";
homepage = "https://www.meshlab.net/"; homepage = "https://www.meshlab.net/";
license = lib.licenses.gpl3; license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ viric ]; maintainers = with lib.maintainers; [ viric ];
platforms = with lib.platforms; linux; platforms = with lib.platforms; linux;
}; };

View file

@ -1,6 +1,5 @@
{ lib, stdenv { lib, stdenv
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, boost , boost
, cmake , cmake
, ilmbase , ilmbase
@ -11,26 +10,20 @@
, openexr , openexr
, robin-map , robin-map
, unzip , unzip
, fmt
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "openimageio"; pname = "openimageio";
version = "2.1.9.0"; version = "2.2.12.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "OpenImageIO"; owner = "OpenImageIO";
repo = "oiio"; repo = "oiio";
rev = "Release-${version}"; rev = "Release-${version}";
sha256 = "1bbxx3bcc5jlb90ffxbk29gb8227097rdr8vg97vj9axw2mjd5si"; sha256 = "16z8lnsqhljbfaarfwx9rc95p0a9wxf4p271j6kxdfknjb88p56i";
}; };
patches = [
(fetchpatch {
url = "https://github.com/OpenImageIO/oiio/pull/2441/commits/e9bdd69596103edf41b659ad8ab0ca4ce002f6f5.patch";
sha256 = "0x1wmjf1jrm19d1izhs1cs3y1if9al1zx48lahkfswyjag3r5dn0";
})
];
outputs = [ "bin" "out" "dev" "doc" ]; outputs = [ "bin" "out" "dev" "doc" ];
nativeBuildInputs = [ nativeBuildInputs = [
@ -47,6 +40,7 @@ stdenv.mkDerivation rec {
opencolorio opencolorio
openexr openexr
robin-map robin-map
fmt
]; ];
cmakeFlags = [ cmakeFlags = [

View file

@ -0,0 +1,31 @@
diff --git a/src/libOpenImageIO/exif.cpp b/src/libOpenImageIO/exif.cpp
index 10b75c21..0287d9c5 100644
--- a/src/libOpenImageIO/exif.cpp
+++ b/src/libOpenImageIO/exif.cpp
@@ -213,6 +213,9 @@ static const EXIF_tag_info exif_tag_table[] = {
+// libtiff > 4.1.0 defines these in tiff.h. For older libtiff, let's define
+// them ourselves.
+#ifndef GPSTAG_VERSIONID
enum GPSTag {
GPSTAG_VERSIONID = 0,
GPSTAG_LATITUDEREF = 1, GPSTAG_LATITUDE = 2,
@@ -237,6 +240,7 @@ enum GPSTag {
GPSTAG_DIFFERENTIAL = 30,
GPSTAG_HPOSITIONINGERROR = 31
};
+#endif
static const EXIF_tag_info gps_tag_table[] = {
{ GPSTAG_VERSIONID, "GPS:VersionID", TIFF_BYTE, 4 },
@@ -270,7 +274,7 @@ static const EXIF_tag_info gps_tag_table[] = {
{ GPSTAG_AREAINFORMATION, "GPS:AreaInformation", TIFF_UNDEFINED, 1 },
{ GPSTAG_DATESTAMP, "GPS:DateStamp", TIFF_ASCII, 0 },
{ GPSTAG_DIFFERENTIAL, "GPS:Differential", TIFF_SHORT, 1 },
- { GPSTAG_HPOSITIONINGERROR, "GPS:HPositioningError",TIFF_RATIONAL, 1 },
+ { GPSTAG_GPSHPOSITIONINGERROR, "GPS:HPositioningError",TIFF_RATIONAL, 1 },
{ -1, NULL } // signal end of table
};

View file

@ -33,6 +33,11 @@ stdenv.mkDerivation rec {
"dist_dir=" "dist_dir="
]; ];
patches = [
# Backported from https://github.com/OpenImageIO/oiio/pull/2539 for 1.8.17
./2539_backport.patch
];
meta = with lib; { meta = with lib; {
homepage = "http://www.openimageio.org"; homepage = "http://www.openimageio.org";
description = "A library and tools for reading and writing images"; description = "A library and tools for reading and writing images";

View file

@ -81,7 +81,7 @@ mkDerivationWith python3Packages.buildPythonApplication rec {
meta = with lib; { meta = with lib; {
description = "Photo and video importer for cameras, phones, and memory cards"; description = "Photo and video importer for cameras, phones, and memory cards";
homepage = "https://www.damonlynch.net/rapid/"; homepage = "https://www.damonlynch.net/rapid/";
license = licenses.gpl3; license = licenses.gpl3Plus;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = with maintainers; [ jfrankenau ]; maintainers = with maintainers; [ jfrankenau ];
}; };

View file

@ -1,10 +1,107 @@
{ callPackage, fetchurl, ... } @ args: { stdenv, lib, fetchurl, runtimeShell
, gettext, pkg-config, python3
, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp
, curl, systemd, libxml2, poppler
callPackage ./generic.nix (args // rec { # List of { src name backend } attibute sets - see installFirmware below:
version = "1.0.30"; , extraFirmware ? []
# For backwards compatibility with older setups; use extraFirmware instead:
, gt68xxFirmware ? null, snapscanFirmware ? null
}:
stdenv.mkDerivation {
pname = "sane-backends";
version = "1.0.32";
src = fetchurl { src = fetchurl {
url = "https://gitlab.com/sane-project/backends/uploads/c3dd60c9e054b5dee1e7b01a7edc98b0/sane-backends-${version}.tar.gz"; # raw checkouts of the repo do not work because, the configure script is
sha256 = "18vryaycps3zpjzxh0wjgg8nv2f4pdvcfxxmdfj28qbzqjlrcp9z"; # only functional in manually uploaded release tarballs.
# https://gitlab.com/sane-project/backends/-/issues/440
# unfortunately this make the url unpredictable on update, to find the link
# go to https://gitlab.com/sane-project/backends/-/releases and choose
# the link with other in the URL.
url = "https://gitlab.com/sane-project/backends/uploads/104f09c07d35519cc8e72e604f11643f/sane-backends-1.0.32.tar.gz";
sha256 = "055iicihxa6b28iv5fnz13n67frdr5nrydq2c846f9x7q0vw4a1s";
}; };
})
outputs = [ "out" "doc" "man" ];
nativeBuildInputs = [
gettext
pkg-config
python3
];
buildInputs = [
avahi
libgphoto2
libieee1284
libjpeg
libpng
libtiff
libusb1
libv4l
net-snmp
curl
systemd
libxml2
poppler
];
enableParallelBuilding = true;
configureFlags =
lib.optional (avahi != null) "--with-avahi"
++ lib.optional (libusb1 != null) "--with-usb"
;
postInstall = let
compatFirmware = extraFirmware
++ lib.optional (gt68xxFirmware != null) {
src = gt68xxFirmware.fw;
inherit (gt68xxFirmware) name;
backend = "gt68xx";
}
++ lib.optional (snapscanFirmware != null) {
src = snapscanFirmware;
name = "your-firmwarefile.bin";
backend = "snapscan";
};
installFirmware = f: ''
mkdir -p $out/share/sane/${f.backend}
ln -sv ${f.src} $out/share/sane/${f.backend}/${f.name}
'';
in ''
mkdir -p $out/etc/udev/rules.d/
./tools/sane-desc -m udev > $out/etc/udev/rules.d/49-libsane.rules || \
cp tools/udev/libsane.rules $out/etc/udev/rules.d/49-libsane.rules
# the created 49-libsane references /bin/sh
substituteInPlace $out/etc/udev/rules.d/49-libsane.rules \
--replace "RUN+=\"/bin/sh" "RUN+=\"${runtimeShell}"
substituteInPlace $out/lib/libsane.la \
--replace "-ljpeg" "-L${lib.getLib libjpeg}/lib -ljpeg"
# net.conf conflicts with the file generated by the nixos module
rm $out/etc/sane.d/net.conf
'' + lib.concatStrings (builtins.map installFirmware compatFirmware);
meta = with lib; {
description = "SANE (Scanner Access Now Easy) backends";
longDescription = ''
Collection of open-source SANE backends (device drivers).
SANE is a universal scanner interface providing standardized access to
any raster image scanner hardware: flatbed scanners, hand-held scanners,
video- and still-cameras, frame-grabbers, etc. For a list of supported
scanners, see http://www.sane-project.org/sane-backends.html.
'';
homepage = "http://www.sane-project.org/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ peti ];
platforms = platforms.linux;
};
}

View file

@ -1,95 +0,0 @@
{ lib, stdenv
, gettext, pkg-config
, avahi, libgphoto2, libieee1284, libjpeg, libpng, libtiff, libusb1, libv4l, net-snmp
# List of { src name backend } attibute sets - see installFirmware below:
, extraFirmware ? []
# For backwards compatibility with older setups; use extraFirmware instead:
, gt68xxFirmware ? null, snapscanFirmware ? null
# Passed from versioned package (e.g. default.nix, git.nix):
, version, src, ...
}:
stdenv.mkDerivation {
inherit src version;
name = "sane-backends-${version}";
outputs = [ "out" "doc" "man" ];
nativeBuildInputs = [
gettext
pkg-config
];
buildInputs = [
avahi
libgphoto2
libieee1284
libjpeg
libpng
libtiff
libusb1
libv4l
net-snmp
];
enableParallelBuilding = true;
configureFlags = []
++ lib.optional (avahi != null) "--enable-avahi"
++ lib.optional (libusb1 != null) "--with-usb"
;
postInstall = let
compatFirmware = extraFirmware
++ lib.optional (gt68xxFirmware != null) {
src = gt68xxFirmware.fw;
inherit (gt68xxFirmware) name;
backend = "gt68xx";
}
++ lib.optional (snapscanFirmware != null) {
src = snapscanFirmware;
name = "your-firmwarefile.bin";
backend = "snapscan";
};
installFirmware = f: ''
mkdir -p $out/share/sane/${f.backend}
ln -sv ${f.src} $out/share/sane/${f.backend}/${f.name}
'';
in ''
mkdir -p $out/etc/udev/rules.d/
./tools/sane-desc -m udev > $out/etc/udev/rules.d/49-libsane.rules || \
cp tools/udev/libsane.rules $out/etc/udev/rules.d/49-libsane.rules
# the created 49-libsane references /bin/sh
substituteInPlace $out/etc/udev/rules.d/49-libsane.rules \
--replace "RUN+=\"/bin/sh" "RUN+=\"${stdenv.shell}"
substituteInPlace $out/lib/libsane.la \
--replace "-ljpeg" "-L${libjpeg.out}/lib -ljpeg"
# net.conf conflicts with the file generated by the nixos module
rm -f $out/etc/sane.d/net.conf
'' + lib.concatStrings (builtins.map installFirmware compatFirmware);
meta = with lib; {
description = "SANE (Scanner Access Now Easy) backends";
longDescription = ''
Collection of open-source SANE backends (device drivers).
SANE is a universal scanner interface providing standardized access to
any raster image scanner hardware: flatbed scanners, hand-held scanners,
video- and still-cameras, frame-grabbers, etc. For a list of supported
scanners, see http://www.sane-project.org/sane-backends.html.
'';
homepage = "http://www.sane-project.org/";
license = licenses.gpl2Plus;
maintainers = with maintainers; [ peti ];
platforms = platforms.linux;
};
}

View file

@ -1,10 +0,0 @@
{ callPackage, fetchgit, ... } @ args:
callPackage ./generic.nix (args // {
version = "2017-12-01";
src = fetchgit {
sha256 = "0qf7d7268kdxnb723c03m6icxhbgx0vw8gqvck2q1w5b948dy9g8";
rev = "e895ee55bec8a3320a0e972b32c05d35b47fe226";
url = "https://gitlab.com/sane-project/backends.git";
};
})

View file

@ -1,15 +1,15 @@
{ lib, python3, fetchPypi, appdirs, attrs, requests, { lib, buildPythonApplication, fetchPypi, appdirs, attrs
beautifulsoup4, click-plugins, elasticsearch, flask_login, flask_wtf, , beautifulsoup4, click-plugins, elasticsearch, flask-compress
pypandoc, python-dotenv, python-frontmatter, tinydb, validators, , flask_login, flask_wtf, html2text, python-dotenv, python-frontmatter
watchdog, wtforms, html2text, flask-compress }: , requests, tinydb, validators, werkzeug, wtforms }:
python3.pkgs.buildPythonApplication rec { buildPythonApplication rec {
pname = "archivy"; pname = "archivy";
version = "1.0.2"; version = "1.1.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "6f706b925175852d8101a4afe2304ab7ee7d56e9658538b9a8e49e925978b87e"; sha256 = "sha256-yUXsTPb5oJYZA9MlHz7eLowRjD/ltq5VLTHeOMqcL/M=";
}; };
# Relax some dependencies # Relax some dependencies
@ -30,18 +30,17 @@ python3.pkgs.buildPythonApplication rec {
beautifulsoup4 beautifulsoup4
click-plugins click-plugins
elasticsearch elasticsearch
flask-compress
flask_login flask_login
flask_wtf flask_wtf
pypandoc html2text
python-dotenv python-dotenv
python-frontmatter python-frontmatter
tinydb
requests requests
tinydb
validators validators
watchdog werkzeug
wtforms wtforms
html2text
flask-compress
]; ];
# __init__.py attempts to mkdir in read-only file system # __init__.py attempts to mkdir in read-only file system

View file

@ -33,7 +33,7 @@ stdenv.mkDerivation rec {
patches = lib.optional stdenv.isDarwin ./darwin.patch; patches = lib.optional stdenv.isDarwin ./darwin.patch;
nativeBuildInputs = [ cmake ] ++ optional cudaSupport addOpenGLRunpath; nativeBuildInputs = [ cmake makeWrapper ] ++ optional cudaSupport addOpenGLRunpath;
buildInputs = buildInputs =
[ boost ffmpeg gettext glew ilmbase [ boost ffmpeg gettext glew ilmbase
freetype libjpeg libpng libsamplerate libsndfile libtiff freetype libjpeg libpng libsamplerate libsndfile libtiff
@ -41,9 +41,9 @@ stdenv.mkDerivation rec {
alembic alembic
(opensubdiv.override { inherit cudaSupport; }) (opensubdiv.override { inherit cudaSupport; })
tbb tbb
makeWrapper
embree embree
gmp gmp
pugixml
] ]
++ (if (!stdenv.isDarwin) then [ ++ (if (!stdenv.isDarwin) then [
libXi libX11 libXext libXrender libXi libX11 libXext libXrender
@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
openvdb openvdb
] ]
else [ else [
pugixml llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL llvmPackages.openmp SDL Cocoa CoreGraphics ForceFeedback OpenAL OpenGL
]) ])
++ optional jackaudioSupport libjack2 ++ optional jackaudioSupport libjack2
++ optional cudaSupport cudatoolkit ++ optional cudaSupport cudatoolkit

View file

@ -3,13 +3,13 @@
mkDerivation rec { mkDerivation rec {
pname = "coolreader"; pname = "coolreader";
version = "3.2.53"; version = "3.2.55";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "buggins"; owner = "buggins";
repo = pname; repo = pname;
rev = "cr${version}"; rev = "cr${version}";
sha256 = "sha256-5it70cwRV56OMZI4dny5uwxWgoF42tjcEC4g3MC548s="; sha256 = "sha256-gYAaYGEjw7p6y4h5j6j/4Ld+b37Nv+kt04Wp+qb8gzY=";
}; };
nativeBuildInputs = [ cmake pkg-config ]; nativeBuildInputs = [ cmake pkg-config ];

View file

@ -46,13 +46,13 @@ let
in in
mkDerivation rec { mkDerivation rec {
pname = "crow-translate"; pname = "crow-translate";
version = "2.8.0"; version = "2.8.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "crow-translate"; owner = "crow-translate";
repo = "crow-translate"; repo = "crow-translate";
rev = version; rev = version;
sha256 = "sha256-kpr3Xn1ZLBS1fVhhJ/sxo8UgB4M+SdOVhddnU8pNUfA="; sha256 = "sha256-fmlNUhNorV/MUdfdDXM6puAblTTa6p2slVT/EKy5THg=";
}; };
patches = [ patches = [

View file

@ -12,7 +12,9 @@ stdenv.mkDerivation {
}; };
postPatch = '' postPatch = ''
sed -i 's,--static,,g' Makefile substituteInPlace Makefile --replace "--static" ""
'' + lib.optionalString stdenv.isi686 ''
substituteInPlace Makefile --replace "-flto" ""
''; '';
installPhase = '' installPhase = ''

View file

@ -5,13 +5,13 @@
buildGoModule rec { buildGoModule rec {
pname = "dasel"; pname = "dasel";
version = "1.13.4"; version = "1.13.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "TomWright"; owner = "TomWright";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-4/67GwNIRcbC6qYe5s8DD16b2uVcG0DI1ScQk31Ffk0="; sha256 = "sha256-Fy202w1lUrymnpnCmWwnbpMsda7JrZ3B0c+a9UtKsSA=";
}; };
vendorSha256 = "sha256-BdX4DO77mIf/+aBdkNVFUzClsIml1UMcgvikDbbdgcY="; vendorSha256 = "sha256-BdX4DO77mIf/+aBdkNVFUzClsIml1UMcgvikDbbdgcY=";

View file

@ -150,6 +150,6 @@ python3.pkgs.buildPythonApplication {
homepage = "https://electrum.org/"; homepage = "https://electrum.org/";
license = licenses.mit; license = licenses.mit;
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ ehmry joachifm np prusnak ]; maintainers = with maintainers; [ joachifm np prusnak ];
}; };
} }

View file

@ -0,0 +1,118 @@
{ stdenv, lib, fetchpatch, fetchFromGitHub, makeWrapper, writeText, runtimeShell, jdk11, perl, gradle_5, which }:
let
pname = "freeplane";
version = "1.8.11";
src = fetchFromGitHub {
owner = pname;
repo = pname;
rev = "release-${version}";
sha256 = "07xjx9pf62dvy8lx6vnbwwcn1zqy89cmdmwy792k7gb12wz81nnc";
};
deps = stdenv.mkDerivation {
name = "${pname}-deps";
inherit src;
nativeBuildInputs = [ jdk11 perl gradle_5 ];
buildPhase = ''
GRADLE_USER_HOME=$PWD gradle -Dorg.gradle.java.home=${jdk11} --no-daemon jar
'';
# Mavenize dependency paths
# e.g. org.codehaus.groovy/groovy/2.4.0/{hash}/groovy-2.4.0.jar -> org/codehaus/groovy/groovy/2.4.0/groovy-2.4.0.jar
installPhase = ''
find ./caches/modules-2 -type f -regex '.*\.\(jar\|pom\)' \
| perl -pe 's#(.*/([^/]+)/([^/]+)/([^/]+)/[0-9a-f]{30,40}/([^/\s]+))$# ($x = $2) =~ tr|\.|/|; "install -Dm444 $1 \$out/$x/$3/$4/$5" #e' \
| sh
'';
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "0r7f6713m0whh5hlk1id7z9j5v9494r41sivn9fzl63q70kzz92g";
};
# Point to our local deps repo
gradleInit = writeText "init.gradle" ''
logger.lifecycle 'Replacing Maven repositories with ${deps}...'
gradle.projectsLoaded {
rootProject.allprojects {
buildscript {
repositories {
clear()
maven { url '${deps}' }
}
}
repositories {
clear()
maven { url '${deps}' }
}
}
}
settingsEvaluated { settings ->
settings.pluginManagement {
repositories {
maven { url '${deps}' }
}
}
}
'';
# downloaded from unicode.org and twemoji.maxcdn.com by code in freeplane/emoji.gradle
# the below hash is for versions of freeplane that use twemoji 12.1.4, and emoji 12.1
emoji = stdenv.mkDerivation rec {
name = "${pname}-emoji";
inherit src;
nativeBuildInputs = [ jdk11 gradle_5 ];
buildPhase = ''
GRADLE_USER_HOME=$PWD gradle -Dorg.gradle.java.home=${jdk11} --no-daemon --offline --init-script ${gradleInit} emojiGraphicsClasses emojiListClasses
'';
installPhase = ''
mkdir -p $out/emoji/txt $out/resources/images
cp freeplane/build/emoji/txt/emojilist.txt $out/emoji/txt
cp -r freeplane/build/emoji/resources/images/emoji/. $out/resources/images/emoji
'';
outputHashAlgo = "sha256";
outputHashMode = "recursive";
outputHash = "0zikbakbr2fhyv4h4h52ajhznjka0hg6hiqfy1528a39i6psipn3";
};
in stdenv.mkDerivation rec {
inherit pname version src;
buildInputs = [ makeWrapper ];
nativeBuildInputs = [ jdk11 gradle_5 ];
buildPhase = ''
mkdir -p -- ./freeplane/build/emoji/{txt,resources/images}
cp ${emoji}/emoji/txt/emojilist.txt ./freeplane/build/emoji/txt/emojilist.txt
cp -r ${emoji}/resources/images/emoji ./freeplane/build/emoji/resources/images/emoji
GRADLE_USER_HOME=$PWD gradle -Dorg.gradle.java.home=${jdk11} --no-daemon --offline --init-script ${gradleInit} -x test -x :freeplane:downloadEmoji build
'';
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share
cp -a ./BIN/. $out/share/${pname}
makeWrapper $out/share/${pname}/${pname}.sh $out/bin/${pname} \
--set FREEPLANE_BASE_DIR $out/share/${pname} \
--set JAVA_HOME ${jdk11} \
--prefix PATH : ${lib.makeBinPath [ jdk11 which ]}
runHook postInstall
'';
meta = with lib; {
description = "Mind-mapping software";
homepage = "https://freeplane.org/";
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ chaduffy ];
};
}

View file

@ -2,11 +2,11 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "gallery_dl"; pname = "gallery_dl";
version = "1.17.0"; version = "1.17.1";
src = fetchPypi { src = fetchPypi {
inherit pname version; inherit pname version;
sha256 = "bf5196b9e18a45d62d7e823894f12def310264a258956882cbac13b5e856bf00"; sha256 = "1cfaa3a617d5d222d4b9b41634b1bdede2673a8620d6b0e62fb755ae224ca2ac";
}; };
propagatedBuildInputs = [ requests ]; propagatedBuildInputs = [ requests ];

View file

@ -0,0 +1,26 @@
{ lib, fetchFromGitHub, buildGoModule }:
buildGoModule rec {
pname = "go-org";
version = "1.4.0";
src = fetchFromGitHub {
owner = "niklasfasching";
repo = pname;
rev = "v${version}";
sha256 = "sha256-nMZzRbu3lxunIlnnmb49Ljt8oSiYpj+8gZ0u/OFRRDM=";
};
vendorSha256 = "sha256-njx89Ims7GZql8sbVmH/E9gM/ONRWiPRLVs+FzsCSzI=";
postInstallCheck = ''
$out/bin/go-org > /dev/null
'';
meta = with lib; {
description = "Org-mode parser and static site generator in go";
homepage = "https://niklasfasching.github.io/go-org";
license = licenses.mit;
maintainers = with maintainers; [ payas ];
};
}

View file

@ -1,7 +1,6 @@
{ lib { lib
, boost , boost
, fetchFromGitHub , fetchFromGitHub
, fetchpatch
, installShellFiles , installShellFiles
, mkDerivationWith , mkDerivationWith
, muparser , muparser
@ -11,36 +10,20 @@
, qtsvg , qtsvg
, qttools , qttools
, runtimeShell , runtimeShell
, gcc8Stdenv , stdenv
}: }:
let
stdenv = gcc8Stdenv;
in
# Doesn't build with gcc9
mkDerivationWith stdenv.mkDerivation rec { mkDerivationWith stdenv.mkDerivation rec {
pname = "librecad"; pname = "librecad";
version = "2.2.0-rc1"; version = "2.2.0-rc2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "LibreCAD"; owner = "LibreCAD";
repo = "LibreCAD"; repo = "LibreCAD";
rev = version; rev = version;
sha256 = "0kwj838hqzbw95gl4x6scli9gj3gs72hdmrrkzwq5rjxam18k3f3"; sha256 = "sha256-RNg7ioMriH4A7V65+4mh8NhsUHs/8IbTt38nVkYilCE=";
}; };
patches = [
./fix_qt_5_11_build.patch
(
fetchpatch {
# Fix missing app name and icon on Wayland.
url = "https://github.com/LibreCAD/LibreCAD/commit/a17f8281093403f0c7c36996232665ed21906688.patch";
sha256 = "1x46psh4bcx2hxck4l83ki43g1252vb033i2x94h4rpai9hww4d5";
}
)
];
postPatch = '' postPatch = ''
substituteInPlace scripts/postprocess-unix.sh \ substituteInPlace scripts/postprocess-unix.sh \
--replace /bin/sh ${runtimeShell} --replace /bin/sh ${runtimeShell}
@ -88,16 +71,11 @@ mkDerivationWith stdenv.mkDerivation rec {
qttools qttools
]; ];
enableParallelBuilding = true;
meta = with lib; { meta = with lib; {
description = "2D CAD package based on Qt"; description = "2D CAD package based on Qt";
homepage = "https://librecad.org"; homepage = "https://librecad.org";
license = licenses.gpl2; license = licenses.gpl2Only;
maintainers = with maintainers; [ maintainers = with maintainers; [ kiwi viric ];
kiwi
viric
];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} }

View file

@ -1,36 +0,0 @@
diff --git a/librecad/src/ui/forms/qg_commandwidget.cpp b/librecad/src/ui/forms/qg_commandwidget.cpp
index 835e47d..2c878e8 100644
--- a/librecad/src/ui/forms/qg_commandwidget.cpp
+++ b/librecad/src/ui/forms/qg_commandwidget.cpp
@@ -27,6 +27,7 @@
#include <algorithm>
+#include <QAction>
#include <QKeyEvent>
#include <QFileDialog>
#include <QSettings>
diff --git a/librecad/src/ui/generic/colorwizard.cpp b/librecad/src/ui/generic/colorwizard.cpp
index 2beaceb..84068ad 100644
--- a/librecad/src/ui/generic/colorwizard.cpp
+++ b/librecad/src/ui/generic/colorwizard.cpp
@@ -27,6 +27,7 @@
#include "colorwizard.h"
#include "ui_colorwizard.h"
+#include <QAction>
#include <QColorDialog>
#include <QLineEdit>
#include <QListWidget>
diff --git a/librecad/src/ui/generic/widgetcreator.cpp b/librecad/src/ui/generic/widgetcreator.cpp
index 7c35144..0e394f2 100644
--- a/librecad/src/ui/generic/widgetcreator.cpp
+++ b/librecad/src/ui/generic/widgetcreator.cpp
@@ -27,6 +27,7 @@
#include "widgetcreator.h"
#include "ui_widgetcreator.h"
+#include <QActionGroup>
#include <QSettings>
#include <QLineEdit>
#include <QPushButton>

View file

@ -0,0 +1,52 @@
{ lib, stdenv, fetchurl, appimageTools, makeWrapper, electron }:
stdenv.mkDerivation rec {
pname = "logseq";
version = "0.0.13";
src = fetchurl {
url = "https://github.com/logseq/logseq/releases/download/${version}/logseq-linux-x64-${version}.AppImage";
sha256 = "0a7c33f7d5ylcy6lqkpxp78wwyi4n5q4jdy7b8nx7p34sn2jnpf7";
name = "${pname}-${version}.AppImage";
};
appimageContents = appimageTools.extract {
name = "${pname}-${version}";
inherit src;
};
dontUnpack = true;
dontConfigure = true;
dontBuild = true;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
runHook preInstall
mkdir -p $out/bin $out/share/${pname} $out/share/applications
cp -a ${appimageContents}/{locales,resources} $out/share/${pname}
cp -a ${appimageContents}/Logseq.desktop $out/share/applications/${pname}.desktop
substituteInPlace $out/share/applications/${pname}.desktop \
--replace Exec=Logseq Exec=${pname} \
--replace Icon=Logseq Icon=$out/share/${pname}/resources/app/icons/logseq.png
runHook postInstall
'';
postFixup = ''
makeWrapper ${electron}/bin/electron $out/bin/${pname} \
--add-flags $out/share/${pname}/resources/app
'';
passthru.updateScript = ./update.sh;
meta = with lib; {
description = "A local-first, non-linear, outliner notebook for organizing and sharing your personal knowledge base";
homepage = "https://github.com/logseq/logseq";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ weihua ];
platforms = [ "x86_64-linux" ];
};
}

View file

@ -0,0 +1,5 @@
#!/usr/bin/env nix-shell
#!nix-shell -i bash -p curl jq common-updater-scripts
version="$(curl -sL "https://api.github.com/repos/logseq/logseq/releases" | jq '.[0].tag_name' --raw-output)"
update-source-version logseq "$version"

View file

@ -0,0 +1,59 @@
{ stdenv
, lib
, fetchFromGitHub
, wrapQtAppsHook
, pkg-config
, qmake
, qtquickcontrols2
, SDL2
, SDL2_ttf
, libva
, libvdpau
, libxkbcommon
, alsaLib
, libpulseaudio
, openssl
, libopus
, ffmpeg
}:
stdenv.mkDerivation rec {
pname = "moonlight-qt";
version = "3.1.0";
src = fetchFromGitHub {
owner = "moonlight-stream";
repo = pname;
rev = "v${version}";
sha256 = "e7fwb76zzidtF1COqrQ6gSF7bCX20j/CGjPu1Cb4HGc=";
fetchSubmodules = true;
};
nativeBuildInputs = [
wrapQtAppsHook
pkg-config
qmake
];
buildInputs = [
qtquickcontrols2
SDL2
SDL2_ttf
libva
libvdpau
libxkbcommon
alsaLib
libpulseaudio
openssl
libopus
ffmpeg
];
meta = with lib; {
description = "Play your PC games on almost any device";
homepage = "https://moonlight-stream.org";
license = licenses.gpl3Plus;
maintainers = with maintainers; [ luc65r ];
platforms = platforms.all;
};
}

View file

@ -22,24 +22,28 @@ in stdenv.mkDerivation rec {
sha256 = "0rljl44y8p8hgaqializlyrgpij1wbnrzyp0ll5kcg7w05nylq48"; sha256 = "0rljl44y8p8hgaqializlyrgpij1wbnrzyp0ll5kcg7w05nylq48";
}; };
patches = patches = lib.optional stdenv.isDarwin ./darwin.patch ++ [
lib.optional stdenv.isDarwin ./darwin.patch ++ [
(fetchpatch { (fetchpatch {
name = "pdfocr.patch"; name = "pdfocr.patch";
url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=a507b139adf37d2c742e039815601cdc2aa00a84"; url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=a507b139adf37d2c742e039815601cdc2aa00a84";
sha256 = "1fx6pdgwrbk3bqsx53764d61llfj9s5q8lxqkna7mjnp7mg4krj3"; sha256 = "1fx6pdgwrbk3bqsx53764d61llfj9s5q8lxqkna7mjnp7mg4krj3";
}) })
(fetchpatch { (fetchpatch {
name = "pdf-layer.patch"; name = "pdf-layer.patch";
url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=b82e9b6d6b46877e5c3763cc3bc641c66fa7eb54"; url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=b82e9b6d6b46877e5c3763cc3bc641c66fa7eb54";
sha256 = "0ma8jq8d9a0mf26qjklgi4gdaflpjik1br1nhafzvjz7ccl56ksm"; sha256 = "0ma8jq8d9a0mf26qjklgi4gdaflpjik1br1nhafzvjz7ccl56ksm";
}) })
(fetchpatch { (fetchpatch {
name = "pixmap.patch"; name = "pixmap.patch";
url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=32e4e8b4bcbacbf92af7c88337efae21986d9603"; url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=32e4e8b4bcbacbf92af7c88337efae21986d9603";
sha256 = "1zqkxgwrhcwsdya98pcmpq2815jjmv3fwsp0sba9f5nq5xi6whbj"; sha256 = "1zqkxgwrhcwsdya98pcmpq2815jjmv3fwsp0sba9f5nq5xi6whbj";
}) })
]; (fetchpatch {
name = "CVE-2021-3407.patch";
url = "http://git.ghostscript.com/?p=mupdf.git;a=patch;h=cee7cefc610d42fd383b3c80c12cbc675443176a";
sha256 = "18g9jsj90jnqibaff8pqi70a7x8ygc3sh4jl4xnvlv8vr7fxxbh6";
})
];
postPatch = '' postPatch = ''
sed -i "s/__OPENJPEG__VERSION__/${openJpegVersion}/" source/fitz/load-jpx.c sed -i "s/__OPENJPEG__VERSION__/${openJpegVersion}/" source/fitz/load-jpx.c

View file

@ -0,0 +1,71 @@
{ lib
, python3
, fetchFromGitHub
, appstream-glib
, desktop-file-utils
, gettext
, glib
, gobject-introspection
, gtk3
, libhandy
, librsvg
, meson
, ninja
, pkg-config
, wrapGAppsHook
}:
python3.pkgs.buildPythonApplication rec {
pname = "portfolio";
version = "0.9.10";
format = "other";
src = fetchFromGitHub {
owner = "tchx84";
repo = "Portfolio";
rev = "v${version}";
sha256 = "06hk0kx6h8w263qa71bik68rg4r8qs94b6s60pyhzicfc822k0j4";
};
postPatch = ''
patchShebangs build-aux/meson
'';
nativeBuildInputs = [
appstream-glib
desktop-file-utils
gettext
glib
gobject-introspection
gtk3
meson
ninja
pkg-config
wrapGAppsHook
];
buildInputs = [
glib
gobject-introspection
libhandy
librsvg
];
propagatedBuildInputs = with python3.pkgs; [
pygobject3
];
postInstall = ''
ln -s dev.tchx84.Portfolio "$out/bin/portfolio"
'';
meta = with lib; {
description = "A minimalist file manager for those who want to use Linux mobile devices";
homepage = "https://github.com/tchx84/Portfolio";
changelog = "https://github.com/tchx84/Portfolio/blob/v${version}/CHANGELOG.md";
license = licenses.gpl3Plus;
platforms = platforms.linux;
maintainers = with maintainers; [ dotlambda ];
};
}

View file

@ -31,6 +31,5 @@ mkDerivation {
homepage = "https://centrabit.com/"; homepage = "https://centrabit.com/";
license = licenses.gpl3; license = licenses.gpl3;
platforms = qt5.qtbase.meta.platforms; platforms = qt5.qtbase.meta.platforms;
maintainers = [ maintainers.ehmry ];
}; };
} }

View file

@ -1,4 +1,4 @@
{ symlinkJoin, lib, rofi-unwrapped, makeWrapper, wrapGAppsHook, gdk-pixbuf, hicolor-icon-theme, theme ? null, plugins ? [] }: { symlinkJoin, lib, rofi-unwrapped, makeWrapper, wrapGAppsHook, gdk-pixbuf, hicolor-icon-theme, theme ? null, plugins ? [], symlink-dmenu ? false }:
symlinkJoin { symlinkJoin {
name = "rofi-${rofi-unwrapped.version}"; name = "rofi-${rofi-unwrapped.version}";
@ -29,6 +29,8 @@ symlinkJoin {
${lib.optionalString (theme != null) ''--add-flags "-theme ${theme}"''} \ ${lib.optionalString (theme != null) ''--add-flags "-theme ${theme}"''} \
${lib.optionalString (plugins != []) ''--add-flags "-plugin-path $out/lib/rofi"''} ${lib.optionalString (plugins != []) ''--add-flags "-plugin-path $out/lib/rofi"''}
${lib.optionalString symlink-dmenu "ln -s ${rofi-unwrapped}/bin/rofi $out/bin/dmenu"}
rm $out/bin/rofi-theme-selector rm $out/bin/rofi-theme-selector
makeWrapper ${rofi-unwrapped}/bin/rofi-theme-selector $out/bin/rofi-theme-selector \ makeWrapper ${rofi-unwrapped}/bin/rofi-theme-selector $out/bin/rofi-theme-selector \
--prefix XDG_DATA_DIRS : $out/share --prefix XDG_DATA_DIRS : $out/share

View file

@ -17,10 +17,10 @@ let
pname = "simplenote"; pname = "simplenote";
version = "2.2.0"; version = "2.8.0";
sha256 = { sha256 = {
x86_64-linux = "123b0fh14068s2z3k6s5mmh46xwlz02qfnpmj838zlm5hckjmifv"; x86_64-linux = "sha256-W8+LzWMPDCrFZCm9p/Gcj7OXqJw/gs7lMxTKjOQChQY=";
}.${system} or throwSystem; }.${system} or throwSystem;
meta = with lib; { meta = with lib; {

View file

@ -0,0 +1,25 @@
{ lib, stdenv, fetchFromGitHub }:
stdenv.mkDerivation {
pname = "sunwait";
version = "2020-10-26";
src = fetchFromGitHub {
owner = "risacher";
repo = "sunwait";
rev = "102cb417ecbb7a3757ba9ee4b94d6db3225124c4";
sha256 = "0cs8rdcnzsl10zia2k49a6c2z6gvp5rnf31sgn3hn5c7kgy7l3ax";
};
installPhase = ''
install -Dm755 sunwait -t $out/bin
'';
meta = with lib; {
description = "Calculates sunrise or sunset times with civil, nautical, astronomical and custom twilights";
homepage = "https://github.com/risacher/sunwait";
license = licenses.gpl3Only;
maintainers = with maintainers; [ etu ];
platforms = platforms.all;
};
}

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