Merge remote-tracking branch 'nixpkgs/staging-next' into staging
Conflicts: nixos/doc/manual/from_md/release-notes/rl-2111.section.xml nixos/doc/manual/release-notes/rl-2111.section.md
This commit is contained in:
commit
3f01b576af
@ -181,7 +181,7 @@
|
||||
rev = "${version}";
|
||||
```
|
||||
|
||||
- Filling lists condionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`.
|
||||
- Building lists conditionally _should_ be done with `lib.optional(s)` instead of using `if cond then [ ... ] else null` or `if cond then [ ... ] else [ ]`.
|
||||
|
||||
```nix
|
||||
buildInputs = lib.optional stdenv.isDarwin iconv;
|
||||
|
@ -12955,6 +12955,12 @@
|
||||
fingerprint = "61AE D40F 368B 6F26 9DAE 3892 6861 6B2D 8AC4 DCC5";
|
||||
}];
|
||||
};
|
||||
zbioe = {
|
||||
name = "Iury Fukuda";
|
||||
email = "zbioe@protonmail.com";
|
||||
github = "zbioe";
|
||||
githubId = 7332055;
|
||||
};
|
||||
zenithal = {
|
||||
name = "zenithal";
|
||||
email = "i@zenithal.me";
|
||||
|
@ -1192,6 +1192,19 @@ Superuser created successfully.
|
||||
<literal>fluidsynth</literal> unchanged.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Nextcloud 20 (<literal>pkgs.nextcloud20</literal>) has been
|
||||
dropped because it was EOLed by upstream in 2021-10.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>virtualisation.pathsInNixDB</literal> option was
|
||||
renamed
|
||||
<link xlink:href="options.html#opt-virtualisation.additionalPaths"><literal>virtualisation.additionalPaths</literal></link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section xml:id="sec-release-21.11-notable-changes">
|
||||
@ -1215,25 +1228,31 @@ Superuser created successfully.
|
||||
<para>
|
||||
In NixOS virtual machines (QEMU), the
|
||||
<literal>virtualisation</literal> module has been updated with
|
||||
new options to configure:
|
||||
new options:
|
||||
</para>
|
||||
<itemizedlist spacing="compact">
|
||||
<listitem>
|
||||
<para>
|
||||
IPv4 port forwarding
|
||||
(<link xlink:href="options.html#opt-virtualisation.forwardPorts"><literal>virtualisation.forwardPorts</literal></link>),
|
||||
<link xlink:href="options.html#opt-virtualisation.forwardPorts"><literal>forwardPorts</literal></link>
|
||||
to configure IPv4 port forwarding,
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
shared host directories
|
||||
(<link xlink:href="options.html#opt-virtualisation.sharedDirectories"><literal>virtualisation.sharedDirectories</literal></link>),
|
||||
<link xlink:href="options.html#opt-virtualisation.sharedDirectories"><literal>sharedDirectories</literal></link>
|
||||
to set up shared host directories,
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
screen resolution
|
||||
(<link xlink:href="options.html#opt-virtualisation.resolution"><literal>virtualisation.resolution</literal></link>).
|
||||
<link xlink:href="options.html#opt-virtualisation.resolution"><literal>resolution</literal></link>
|
||||
to set the screen resolution,
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="options.html#opt-virtualisation.useNixStoreImage"><literal>useNixStoreImage</literal></link>
|
||||
to use a disk image for the Nix store instead of 9P.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
@ -366,16 +366,22 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- The `fluidsynth_1` attribute has been removed, as this legacy version is no longer needed in nixpkgs. The actively maintained 2.x series is available as `fluidsynth` unchanged.
|
||||
|
||||
- Nextcloud 20 (`pkgs.nextcloud20`) has been dropped because it was EOLed by upstream in 2021-10.
|
||||
|
||||
- The `virtualisation.pathsInNixDB` option was renamed
|
||||
[`virtualisation.additionalPaths`](options.html#opt-virtualisation.additionalPaths).
|
||||
|
||||
## Other Notable Changes {#sec-release-21.11-notable-changes}
|
||||
|
||||
|
||||
- The linux kernel package infrastructure was moved out of `all-packages.nix`, and restructured. Linux related functions and attributes now live under the `pkgs.linuxKernel` attribute set.
|
||||
In particular the versioned `linuxPackages_*` package sets (such as `linuxPackages_5_4`) and kernels from `pkgs` were moved there and now live under `pkgs.linuxKernel.packages.*`. The unversioned ones (such as `linuxPackages_latest`) remain untouched.
|
||||
|
||||
- In NixOS virtual machines (QEMU), the `virtualisation` module has been updated with new options to configure:
|
||||
- IPv4 port forwarding ([`virtualisation.forwardPorts`](options.html#opt-virtualisation.forwardPorts)),
|
||||
- shared host directories ([`virtualisation.sharedDirectories`](options.html#opt-virtualisation.sharedDirectories)),
|
||||
- screen resolution ([`virtualisation.resolution`](options.html#opt-virtualisation.resolution)).
|
||||
- In NixOS virtual machines (QEMU), the `virtualisation` module has been updated with new options:
|
||||
- [`forwardPorts`](options.html#opt-virtualisation.forwardPorts) to configure IPv4 port forwarding,
|
||||
- [`sharedDirectories`](options.html#opt-virtualisation.sharedDirectories) to set up shared host directories,
|
||||
- [`resolution`](options.html#opt-virtualisation.resolution) to set the screen resolution,
|
||||
- [`useNixStoreImage`](options.html#opt-virtualisation.useNixStoreImage) to use a disk image for the Nix store instead of 9P.
|
||||
|
||||
In addition, the default [`msize`](options.html#opt-virtualisation.msize) parameter in 9P filesystems (including /nix/store and all shared directories) has been increased to 16K for improved performance.
|
||||
|
||||
|
@ -44,11 +44,14 @@
|
||||
# most likely fails as GRUB will probably refuse to install.
|
||||
partitionTableType ? "legacy"
|
||||
|
||||
, # Whether to invoke `switch-to-configuration boot` during image creation
|
||||
installBootLoader ? true
|
||||
|
||||
, # The root file system type.
|
||||
fsType ? "ext4"
|
||||
|
||||
, # Filesystem label
|
||||
label ? "nixos"
|
||||
label ? if onlyNixStore then "nix-store" else "nixos"
|
||||
|
||||
, # The initial NixOS configuration file to be copied to
|
||||
# /etc/nixos/configuration.nix.
|
||||
@ -57,10 +60,24 @@
|
||||
, # Shell code executed after the VM has finished.
|
||||
postVM ? ""
|
||||
|
||||
, # Copy the contents of the Nix store to the root of the image and
|
||||
# skip further setup. Incompatible with `contents`,
|
||||
# `installBootLoader` and `configFile`.
|
||||
onlyNixStore ? false
|
||||
|
||||
, name ? "nixos-disk-image"
|
||||
|
||||
, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
|
||||
format ? "raw"
|
||||
|
||||
, # Whether a nix channel based on the current source tree should be
|
||||
# made available inside the image. Useful for interactive use of nix
|
||||
# utils, but changes the hash of the image when the sources are
|
||||
# updated.
|
||||
copyChannel ? true
|
||||
|
||||
, # Additional store paths to copy to the image's store.
|
||||
additionalPaths ? []
|
||||
}:
|
||||
|
||||
assert partitionTableType == "legacy" || partitionTableType == "legacy+gpt" || partitionTableType == "efi" || partitionTableType == "hybrid" || partitionTableType == "none";
|
||||
@ -71,6 +88,7 @@ assert lib.all
|
||||
(attrs: ((attrs.user or null) == null)
|
||||
== ((attrs.group or null) == null))
|
||||
contents;
|
||||
assert onlyNixStore -> contents == [] && configFile == null && !installBootLoader;
|
||||
|
||||
with lib;
|
||||
|
||||
@ -163,7 +181,14 @@ let format' = format; in let
|
||||
users = map (x: x.user or "''") contents;
|
||||
groups = map (x: x.group or "''") contents;
|
||||
|
||||
closureInfo = pkgs.closureInfo { rootPaths = [ config.system.build.toplevel channelSources ]; };
|
||||
basePaths = [ config.system.build.toplevel ]
|
||||
++ lib.optional copyChannel channelSources;
|
||||
|
||||
additionalPaths' = subtractLists basePaths additionalPaths;
|
||||
|
||||
closureInfo = pkgs.closureInfo {
|
||||
rootPaths = basePaths ++ additionalPaths';
|
||||
};
|
||||
|
||||
blockSize = toString (4 * 1024); # ext4fs block size (not block device sector size)
|
||||
|
||||
@ -251,7 +276,13 @@ let format' = format; in let
|
||||
chmod 755 "$TMPDIR"
|
||||
echo "running nixos-install..."
|
||||
nixos-install --root $root --no-bootloader --no-root-passwd \
|
||||
--system ${config.system.build.toplevel} --channel ${channelSources} --substituters ""
|
||||
--system ${config.system.build.toplevel} \
|
||||
${if copyChannel then "--channel ${channelSources}" else "--no-channel-copy"} \
|
||||
--substituters ""
|
||||
|
||||
${optionalString (additionalPaths' != []) ''
|
||||
nix copy --to $root --no-check-sigs ${concatStringsSep " " additionalPaths'}
|
||||
''}
|
||||
|
||||
diskImage=nixos.raw
|
||||
|
||||
@ -320,25 +351,29 @@ let format' = format; in let
|
||||
''}
|
||||
|
||||
echo "copying staging root to image..."
|
||||
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} -t ${fsType} -i $diskImage $root/* / ||
|
||||
cptofs -p ${optionalString (partitionTableType != "none") "-P ${rootPartition}"} \
|
||||
-t ${fsType} \
|
||||
-i $diskImage \
|
||||
$root${optionalString onlyNixStore builtins.storeDir}/* / ||
|
||||
(echo >&2 "ERROR: cptofs failed. diskSize might be too small for closure."; exit 1)
|
||||
'';
|
||||
in pkgs.vmTools.runInLinuxVM (
|
||||
pkgs.runCommand name
|
||||
{ preVM = prepareImage;
|
||||
|
||||
moveOrConvertImage = ''
|
||||
${if format == "raw" then ''
|
||||
mv $diskImage $out/${filename}
|
||||
'' else ''
|
||||
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
|
||||
''}
|
||||
diskImage=$out/${filename}
|
||||
'';
|
||||
|
||||
buildImage = pkgs.vmTools.runInLinuxVM (
|
||||
pkgs.runCommand name {
|
||||
preVM = prepareImage;
|
||||
buildInputs = with pkgs; [ util-linux e2fsprogs dosfstools ];
|
||||
postVM = ''
|
||||
${if format == "raw" then ''
|
||||
mv $diskImage $out/${filename}
|
||||
'' else ''
|
||||
${pkgs.qemu}/bin/qemu-img convert -f raw -O ${format} ${compress} $diskImage $out/${filename}
|
||||
''}
|
||||
diskImage=$out/${filename}
|
||||
${postVM}
|
||||
'';
|
||||
postVM = moveOrConvertImage + postVM;
|
||||
memSize = 1024;
|
||||
}
|
||||
''
|
||||
} ''
|
||||
export PATH=${binPath}:$PATH
|
||||
|
||||
rootDisk=${if partitionTableType != "none" then "/dev/vda${rootPartition}" else "/dev/vda"}
|
||||
@ -368,11 +403,13 @@ in pkgs.vmTools.runInLinuxVM (
|
||||
cp ${configFile} /mnt/etc/nixos/configuration.nix
|
||||
''}
|
||||
|
||||
# Set up core system link, GRUB, etc.
|
||||
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
||||
${lib.optionalString installBootLoader ''
|
||||
# Set up core system link, GRUB, etc.
|
||||
NIXOS_INSTALL_BOOTLOADER=1 nixos-enter --root $mountPoint -- /nix/var/nix/profiles/system/bin/switch-to-configuration boot
|
||||
|
||||
# The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
|
||||
rm -f $mountPoint/etc/machine-id
|
||||
# The above scripts will generate a random machine-id and we don't want to bake a single ID into all our images
|
||||
rm -f $mountPoint/etc/machine-id
|
||||
''}
|
||||
|
||||
# Set the ownerships of the contents. The modes are set in preVM.
|
||||
# No globbing on targets, so no need to set -f
|
||||
@ -398,4 +435,9 @@ in pkgs.vmTools.runInLinuxVM (
|
||||
tune2fs -T now -c 0 -i 0 $rootDisk
|
||||
''}
|
||||
''
|
||||
)
|
||||
);
|
||||
in
|
||||
if onlyNixStore then
|
||||
pkgs.runCommand name {}
|
||||
(prepareImage + moveOrConvertImage + postVM)
|
||||
else buildImage
|
||||
|
@ -209,11 +209,30 @@ rec {
|
||||
let
|
||||
nodes = qemu_pkg:
|
||||
let
|
||||
testScript' =
|
||||
# Call the test script with the computed nodes.
|
||||
if lib.isFunction testScript
|
||||
then testScript { nodes = nodes qemu_pkg; }
|
||||
else testScript;
|
||||
|
||||
build-vms = import ./build-vms.nix {
|
||||
inherit system lib pkgs minimal specialArgs;
|
||||
extraConfigurations = extraConfigurations ++ [(
|
||||
{
|
||||
virtualisation.qemu.package = qemu_pkg;
|
||||
|
||||
# Make sure all derivations referenced by the test
|
||||
# script are available on the nodes. When the store is
|
||||
# accessed through 9p, this isn't important, since
|
||||
# everything in the store is available to the guest,
|
||||
# but when building a root image it is, as all paths
|
||||
# that should be available to the guest has to be
|
||||
# copied to the image.
|
||||
virtualisation.additionalPaths =
|
||||
lib.optional
|
||||
(builtins.hasContext testScript')
|
||||
(pkgs.writeStringReferencesToFile testScript');
|
||||
|
||||
# Ensure we do not use aliases. Ideally this is only set
|
||||
# when the test framework is used by Nixpkgs NixOS tests.
|
||||
nixpkgs.config.allowAliases = false;
|
||||
|
@ -344,7 +344,7 @@ in {
|
||||
authenticate = lib.mkOption {
|
||||
description = "Authenticate with the SMTP server using username and password.";
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
default = false;
|
||||
};
|
||||
|
||||
host = lib.mkOption {
|
||||
@ -596,6 +596,7 @@ in {
|
||||
|
||||
services.postfix = lib.mkIf (cfg.smtp.createLocally && cfg.smtp.host == "127.0.0.1") {
|
||||
enable = true;
|
||||
hostname = lib.mkDefault "${cfg.localDomain}";
|
||||
};
|
||||
services.redis = lib.mkIf (cfg.redis.createLocally && cfg.redis.host == "127.0.0.1") {
|
||||
enable = true;
|
||||
|
@ -153,7 +153,7 @@ in {
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
description = "Which package to use for the Nextcloud instance.";
|
||||
relatedPackages = [ "nextcloud20" "nextcloud21" "nextcloud22" ];
|
||||
relatedPackages = [ "nextcloud21" "nextcloud22" ];
|
||||
};
|
||||
phpPackage = mkOption {
|
||||
type = types.package;
|
||||
@ -507,13 +507,7 @@ in {
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable (mkMerge [
|
||||
{ assertions = let acfg = cfg.config; in [
|
||||
{ assertion = versionOlder cfg.package.version "21" -> cfg.config.defaultPhoneRegion == null;
|
||||
message = "The `defaultPhoneRegion'-setting is only supported for Nextcloud >=21!";
|
||||
}
|
||||
];
|
||||
|
||||
warnings = let
|
||||
{ warnings = let
|
||||
latest = 22;
|
||||
upgradeWarning = major: nixos:
|
||||
''
|
||||
@ -547,7 +541,6 @@ in {
|
||||
Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
|
||||
Please migrate your configuration to config.services.nextcloud.poolSettings.
|
||||
'')
|
||||
++ (optional (versionOlder cfg.package.version "20") (upgradeWarning 19 "21.05"))
|
||||
++ (optional (versionOlder cfg.package.version "21") (upgradeWarning 20 "21.05"))
|
||||
++ (optional (versionOlder cfg.package.version "22") (upgradeWarning 21 "21.11"))
|
||||
++ (optional isUnsupportedMariadb ''
|
||||
@ -574,7 +567,11 @@ in {
|
||||
# This versionOlder statement remains set to 21.03 for backwards compatibility.
|
||||
# See https://github.com/NixOS/nixpkgs/pull/108899 and
|
||||
# https://github.com/NixOS/rfcs/blob/master/rfcs/0080-nixos-release-schedule.md.
|
||||
else if versionOlder stateVersion "21.03" then nextcloud19
|
||||
# FIXME(@Ma27) remove this else-if as soon as 21.05 is EOL! This is only here
|
||||
# to ensure that users who are on Nextcloud 19 with a stateVersion <21.05 with
|
||||
# no explicit services.nextcloud.package don't upgrade to v21 by accident (
|
||||
# nextcloud20 throws an eval-error because it's dropped).
|
||||
else if versionOlder stateVersion "21.03" then nextcloud20
|
||||
else if versionOlder stateVersion "21.11" then nextcloud21
|
||||
else nextcloud22
|
||||
);
|
||||
|
@ -227,8 +227,10 @@ in
|
||||
environment.sessionVariables.GTK_CSD = "1";
|
||||
environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini";
|
||||
|
||||
xdg.portal.extraPortals = [
|
||||
pkgs.pantheon.elementary-files
|
||||
xdg.portal.extraPortals = with pkgs; [
|
||||
pantheon.elementary-files
|
||||
pantheon.elementary-settings-daemon
|
||||
xdg-desktop-portal-pantheon
|
||||
];
|
||||
|
||||
# Override GSettings schemas
|
||||
|
@ -122,6 +122,12 @@ let
|
||||
TMPDIR=$(mktemp -d nix-vm.XXXXXXXXXX --tmpdir)
|
||||
fi
|
||||
|
||||
${lib.optionalString cfg.useNixStoreImage
|
||||
''
|
||||
# Create a writable copy/snapshot of the store image.
|
||||
${qemu}/bin/qemu-img create -f qcow2 -F qcow2 -b ${storeImage}/nixos.qcow2 "$TMPDIR"/store.img
|
||||
''}
|
||||
|
||||
# Create a directory for exchanging data with the VM.
|
||||
mkdir -p "$TMPDIR/xchg"
|
||||
|
||||
@ -171,7 +177,7 @@ let
|
||||
'';
|
||||
|
||||
|
||||
regInfo = pkgs.closureInfo { rootPaths = config.virtualisation.pathsInNixDB; };
|
||||
regInfo = pkgs.closureInfo { rootPaths = config.virtualisation.additionalPaths; };
|
||||
|
||||
|
||||
# Generate a hard disk image containing a /boot partition and GRUB
|
||||
@ -263,11 +269,24 @@ let
|
||||
'' # */
|
||||
);
|
||||
|
||||
storeImage = import ../../lib/make-disk-image.nix {
|
||||
inherit pkgs config lib;
|
||||
additionalPaths = [ regInfo ];
|
||||
format = "qcow2";
|
||||
onlyNixStore = true;
|
||||
partitionTableType = "none";
|
||||
installBootLoader = false;
|
||||
diskSize = "auto";
|
||||
additionalSpace = "0M";
|
||||
copyChannel = false;
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
imports = [
|
||||
../profiles/qemu-guest.nix
|
||||
(mkRenamedOptionModule [ "virtualisation" "pathsInNixDB" ] [ "virtualisation" "additionalPaths" ])
|
||||
];
|
||||
|
||||
options = {
|
||||
@ -399,17 +418,23 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.pathsInNixDB =
|
||||
virtualisation.additionalPaths =
|
||||
mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
description =
|
||||
''
|
||||
The list of paths whose closure is registered in the Nix
|
||||
database in the VM. All other paths in the host Nix store
|
||||
A list of paths whose closure should be made available to
|
||||
the VM.
|
||||
|
||||
When 9p is used, the closure is registered in the Nix
|
||||
database in the VM. All other paths in the host Nix store
|
||||
appear in the guest Nix store as well, but are considered
|
||||
garbage (because they are not registered in the Nix
|
||||
database in the guest).
|
||||
database of the guest).
|
||||
|
||||
When <option>virtualisation.useNixStoreImage</option> is
|
||||
set, the closure is copied to the Nix store image.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -608,6 +633,20 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.useNixStoreImage =
|
||||
mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Build and use a disk image for the Nix store, instead of
|
||||
accessing the host's one through 9p.
|
||||
|
||||
For applications which do a lot of reads from the store,
|
||||
this can drastically improve performance, but at the cost of
|
||||
disk space and image build time.
|
||||
'';
|
||||
};
|
||||
|
||||
virtualisation.useBootLoader =
|
||||
mkOption {
|
||||
type = types.bool;
|
||||
@ -740,7 +779,7 @@ in
|
||||
'';
|
||||
|
||||
# After booting, register the closure of the paths in
|
||||
# `virtualisation.pathsInNixDB' in the Nix database in the VM. This
|
||||
# `virtualisation.additionalPaths' in the Nix database in the VM. This
|
||||
# allows Nix operations to work in the VM. The path to the
|
||||
# registration file is passed through the kernel command line to
|
||||
# allow `system.build.toplevel' to be included. (If we had a direct
|
||||
@ -759,12 +798,21 @@ in
|
||||
|
||||
virtualisation.bootDevice = mkDefault (driveDeviceName 1);
|
||||
|
||||
virtualisation.pathsInNixDB = [ config.system.build.toplevel ];
|
||||
virtualisation.additionalPaths = [ config.system.build.toplevel ];
|
||||
|
||||
virtualisation.sharedDirectories = {
|
||||
nix-store = { source = "/nix/store"; target = "/nix/store"; };
|
||||
xchg = { source = ''"$TMPDIR"/xchg''; target = "/tmp/xchg"; };
|
||||
shared = { source = ''"''${SHARED_DIR:-$TMPDIR/xchg}"''; target = "/tmp/shared"; };
|
||||
nix-store = mkIf (!cfg.useNixStoreImage) {
|
||||
source = builtins.storeDir;
|
||||
target = "/nix/store";
|
||||
};
|
||||
xchg = {
|
||||
source = ''"$TMPDIR"/xchg'';
|
||||
target = "/tmp/xchg";
|
||||
};
|
||||
shared = {
|
||||
source = ''"''${SHARED_DIR:-$TMPDIR/xchg}"'';
|
||||
target = "/tmp/shared";
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.qemu.networkingOptions =
|
||||
@ -815,6 +863,11 @@ in
|
||||
driveExtraOpts.cache = "writeback";
|
||||
driveExtraOpts.werror = "report";
|
||||
}]
|
||||
(mkIf cfg.useNixStoreImage [{
|
||||
name = "nix-store";
|
||||
file = ''"$TMPDIR"/store.img'';
|
||||
deviceExtraOpts.bootindex = if cfg.useBootLoader then "3" else "2";
|
||||
}])
|
||||
(mkIf cfg.useBootLoader [
|
||||
# The order of this list determines the device names, see
|
||||
# note [Disk layout with `useBootLoader`].
|
||||
@ -865,6 +918,13 @@ in
|
||||
options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmpOnTmpfsSize}" ];
|
||||
};
|
||||
|
||||
"/nix/${if cfg.writableStore then ".ro-store" else "store"}" =
|
||||
mkIf cfg.useNixStoreImage
|
||||
{ device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
|
||||
neededForBoot = true;
|
||||
options = [ "ro" ];
|
||||
};
|
||||
|
||||
"/nix/.rw-store" = mkIf (cfg.writableStore && cfg.writableStoreUseTmpfs)
|
||||
{ fsType = "tmpfs";
|
||||
options = [ "mode=0755" ];
|
||||
|
@ -157,6 +157,7 @@ in
|
||||
gobgpd = handleTest ./gobgpd.nix {};
|
||||
gocd-agent = handleTest ./gocd-agent.nix {};
|
||||
gocd-server = handleTest ./gocd-server.nix {};
|
||||
google-cloud-sdk = handleTest ./google-cloud-sdk.nix {};
|
||||
google-oslogin = handleTest ./google-oslogin {};
|
||||
gotify-server = handleTest ./gotify-server.nix {};
|
||||
grafana = handleTest ./grafana.nix {};
|
||||
|
@ -56,7 +56,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
};
|
||||
|
||||
|
||||
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||
virtualisation.additionalPaths = [ pkgs.stdenv ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
|
@ -45,7 +45,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||
virtualisation.additionalPaths = [ pkgs.stdenv ];
|
||||
};
|
||||
|
||||
testScript =
|
||||
|
@ -17,7 +17,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
virtualisation.memorySize = 1024;
|
||||
# Make sure we always have all the required dependencies for creating a
|
||||
# container available within the VM, because we don't have network access.
|
||||
virtualisation.pathsInNixDB = let
|
||||
virtualisation.additionalPaths = let
|
||||
emptyContainer = import ../lib/eval-config.nix {
|
||||
inherit (config.nixpkgs.localSystem) system;
|
||||
modules = lib.singleton {
|
||||
|
@ -27,7 +27,7 @@ in import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
|
||||
containers.webserver4 = webserverFor "10.231.136.1" "10.231.136.2";
|
||||
containers.webserver6 = webserverFor "fc00::2" "fc00::1";
|
||||
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||
virtualisation.additionalPaths = [ pkgs.stdenv ];
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }: ''
|
||||
|
@ -29,7 +29,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||
virtualisation.additionalPaths = [ pkgs.stdenv ];
|
||||
};
|
||||
|
||||
testScript =
|
||||
|
@ -26,7 +26,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
config = { };
|
||||
};
|
||||
|
||||
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||
virtualisation.additionalPaths = [ pkgs.stdenv ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
|
@ -28,6 +28,8 @@ import ./make-test-python.nix (
|
||||
{ nodes, ... }:
|
||||
{
|
||||
virtualisation.memorySize = 2048;
|
||||
virtualisation.cores = 4;
|
||||
virtualisation.useNixStoreImage = true;
|
||||
|
||||
imports = [ common/user-account.nix ];
|
||||
|
||||
|
@ -14,6 +14,8 @@ import ./make-test-python.nix ({ pkgs, lib, ...} : with lib; {
|
||||
imports = [ common/user-account.nix ];
|
||||
|
||||
virtualisation.memorySize = if pkgs.stdenv.is64bit then 4096 else 2047;
|
||||
virtualisation.cores = 4;
|
||||
virtualisation.useNixStoreImage = true;
|
||||
systemd.services.gitlab.serviceConfig.Restart = mkForce "no";
|
||||
systemd.services.gitlab-workhorse.serviceConfig.Restart = mkForce "no";
|
||||
systemd.services.gitaly.serviceConfig.Restart = mkForce "no";
|
||||
|
13
nixos/tests/google-cloud-sdk.nix
Normal file
13
nixos/tests/google-cloud-sdk.nix
Normal file
@ -0,0 +1,13 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "google-cloud-sdk";
|
||||
meta = with pkgs.lib.maintainers; { maintainers = [ iammrinal0 ]; };
|
||||
|
||||
machine = { pkgs, ... }: {
|
||||
environment.systemPackages = [ pkgs.google-cloud-sdk ];
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
import json
|
||||
assert "${pkgs.google-cloud-sdk.version}" in json.loads(machine.succeed("gcloud version --format json"))["Google Cloud SDK"]
|
||||
'';
|
||||
})
|
@ -68,7 +68,7 @@ in makeTest {
|
||||
testScript =
|
||||
''
|
||||
def create_named_machine(name):
|
||||
return create_machine(
|
||||
machine = create_machine(
|
||||
{
|
||||
"qemuFlags": "-cpu max ${
|
||||
if system == "x86_64-linux" then "-m 1024"
|
||||
@ -78,6 +78,8 @@ in makeTest {
|
||||
"name": name,
|
||||
}
|
||||
)
|
||||
driver.machines.append(machine)
|
||||
return machine
|
||||
|
||||
|
||||
# Install NixOS
|
||||
|
@ -18,4 +18,4 @@ foldl
|
||||
};
|
||||
})
|
||||
{}
|
||||
[ 20 21 22 ]
|
||||
[ 21 22 ]
|
||||
|
@ -7,13 +7,13 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "mpdevil";
|
||||
version = "1.3.0";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SoongNoonien";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1wa5wkkv8kvzlxrhqmmhjmrzcm5v2dij516dk4vlpv9sazc6gzkm";
|
||||
sha256 = "1zx129zl6bjb0j3f81yx2641nsj6ck04q5f0v0g8f08xgdwsyv3b";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,60 +1,56 @@
|
||||
{ stdenv
|
||||
, dpkg
|
||||
, lib
|
||||
, autoPatchelfHook
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchurl
|
||||
, gtk3
|
||||
, glib
|
||||
, desktop-file-utils
|
||||
, autoPatchelfHook
|
||||
, dpkg
|
||||
, alsa-lib
|
||||
, libjack2
|
||||
, harfbuzz
|
||||
, fribidi
|
||||
, pango
|
||||
, freetype
|
||||
, libglvnd
|
||||
, curl
|
||||
, libXcursor
|
||||
, libXinerama
|
||||
, libXrandr
|
||||
, libXrender
|
||||
, libjack2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tonelib-jam";
|
||||
version = "4.6.6";
|
||||
version = "4.7.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.tonelib.net/download/0509/ToneLib-Jam-amd64.deb";
|
||||
sha256 = "sha256-cizIQgO35CQSLme/LKQqP+WzB/jCTk+fS5Z+EtF7wnQ=";
|
||||
url = "https://www.tonelib.net/download/0930/ToneLib-Jam-amd64.deb";
|
||||
sha256 = "sha256-xyBDp3DQVC+nK2WGnvrfUfD+9GvwtbldXgExTMmCGw0=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
dpkg
|
||||
gtk3
|
||||
glib
|
||||
desktop-file-utils
|
||||
alsa-lib
|
||||
libjack2
|
||||
harfbuzz
|
||||
fribidi
|
||||
pango
|
||||
freetype
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
dpkg
|
||||
];
|
||||
|
||||
unpackPhase = ''
|
||||
mkdir -p $TMP/ $out/
|
||||
dpkg -x $src $TMP
|
||||
'';
|
||||
buildInputs = [
|
||||
stdenv.cc.cc.lib
|
||||
alsa-lib
|
||||
freetype
|
||||
libglvnd
|
||||
] ++ runtimeDependencies;
|
||||
|
||||
runtimeDependencies = map lib.getLib [
|
||||
curl
|
||||
libXcursor
|
||||
libXinerama
|
||||
libXrandr
|
||||
libXrender
|
||||
libjack2
|
||||
];
|
||||
|
||||
unpackCmd = "dpkg -x $curSrc source";
|
||||
|
||||
installPhase = ''
|
||||
cp -R $TMP/usr/* $out/
|
||||
mv $out/bin/ToneLib-Jam $out/bin/tonelib-jam
|
||||
mv usr $out
|
||||
substituteInPlace $out/share/applications/ToneLib-Jam.desktop --replace /usr/ $out/
|
||||
'';
|
||||
|
||||
runtimeDependencies = [
|
||||
(lib.getLib curl)
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "ToneLib Jam – the learning and practice software for guitar players";
|
||||
homepage = "https://tonelib.net/";
|
||||
|
@ -47,6 +47,8 @@ stdenv.mkDerivation {
|
||||
meta = with lib; {
|
||||
homepage = "http://www.areca-backup.org/";
|
||||
description = "An Open Source personal backup solution";
|
||||
# Builds fine but fails to launch.
|
||||
broken = true;
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ pSub ];
|
||||
platforms = with platforms; linux;
|
||||
|
@ -7,12 +7,12 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "eclair";
|
||||
version = "0.6.1";
|
||||
revision = "d3ae323";
|
||||
version = "0.6.2";
|
||||
revision = "6817d6f";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/ACINQ/eclair/releases/download/v${version}/eclair-node-${version}-${revision}-bin.zip";
|
||||
sha256 = "0hmdssj6pxhvadrgr1svb2lh7hfbd2axr5wsl7glizv1a21g0l2c";
|
||||
sha256 = "038r9mblm2r8mkxnv65k29r7xj22dff5gmvzv9xiy5zf9i45mmk8";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ jq openjdk11 ];
|
||||
@ -33,6 +33,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/ACINQ/eclair";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ prusnak ];
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -17,8 +17,8 @@ let
|
||||
sha256Hash = "1j1fxl4vzq3bln2z9ycxn9imjgy55yd1nbl7ycmsi90bdp96pzj0";
|
||||
};
|
||||
latestVersion = { # canary & dev
|
||||
version = "2021.2.1.1"; # "Android Studio Chipmunk (2021.2.1) Canary 1"
|
||||
sha256Hash = "1fn0jv6ybgdhgpwhamw16fjqbg2961ir9jhbjzanysi7y3935nbv";
|
||||
version = "2021.2.1.2"; # "Android Studio Chipmunk (2021.2.1) Canary 2"
|
||||
sha256Hash = "0xvn9zgn4cc9lhjynhiavmvx8bdzg4kcllmhg7xv18kp6wz4lh6z";
|
||||
};
|
||||
in {
|
||||
# Attributes are named by their corresponding release channels
|
||||
|
@ -38,13 +38,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cudatext";
|
||||
version = "1.146.0";
|
||||
version = "1.148.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Alexey-T";
|
||||
repo = "CudaText";
|
||||
rev = version;
|
||||
sha256 = "sha256-YK4nLQvRdgS7hq5a9uVfVjUAgkM/sYXiKjbt0QNzcok=";
|
||||
sha256 = "sha256-/wvtIPF/1HneW0zuT7+VCixemkw91MdU0S66bz2y48U=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -11,13 +11,13 @@
|
||||
},
|
||||
"ATFlatControls": {
|
||||
"owner": "Alexey-T",
|
||||
"rev": "2021.09.14",
|
||||
"sha256": "sha256-j69UkRNdVdzMITBHMT1QwAsYX9S0fts5/0PCroCGtL8="
|
||||
"rev": "2021.10.19",
|
||||
"sha256": "sha256-NO1q4qDXZ0x0G6AtcRP9xnFDWuBzOvxq8G7I76LgaBw="
|
||||
},
|
||||
"ATSynEdit": {
|
||||
"owner": "Alexey-T",
|
||||
"rev": "2021.10.03",
|
||||
"sha256": "sha256-JGw/GbQNLAgHhDm/EgCGvzPpd8rqQo2FhmAL51XIekw="
|
||||
"rev": "2021.10.27",
|
||||
"sha256": "sha256-7DlnO7IeCFLU1A+HJt4CFXoHWfhAr52tBvfPNHieXMM="
|
||||
},
|
||||
"ATSynEdit_Cmp": {
|
||||
"owner": "Alexey-T",
|
||||
@ -26,8 +26,8 @@
|
||||
},
|
||||
"EControl": {
|
||||
"owner": "Alexey-T",
|
||||
"rev": "2021.10.03",
|
||||
"sha256": "sha256-Kbjzn4Rp+/oTNgFMlzlkQEeob0Z4VidqJ/+wuNHS580="
|
||||
"rev": "2021.10.21",
|
||||
"sha256": "sha256-RyRpHihmmr/EeVWk9CR0S3pvKy0FzqLZNGti33+4fkI="
|
||||
},
|
||||
"ATSynEdit_Ex": {
|
||||
"owner": "Alexey-T",
|
||||
@ -36,8 +36,8 @@
|
||||
},
|
||||
"Python-for-Lazarus": {
|
||||
"owner": "Alexey-T",
|
||||
"rev": "2021.07.27",
|
||||
"sha256": "sha256-izCyBNRLRCizSjR7v9RhcLrQ6+aQA4eejCHFUzJ0IpE="
|
||||
"rev": "2021.10.27",
|
||||
"sha256": "sha256-ikXdDUMJ9MxRejEVAhwUsXYVh0URVFHzEpnXuN5NGpA="
|
||||
},
|
||||
"Emmet-Pascal": {
|
||||
"owner": "Alexey-T",
|
||||
|
@ -1,7 +1,6 @@
|
||||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
, dxflib
|
||||
, eigen
|
||||
@ -20,9 +19,7 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "cloudcompare";
|
||||
# Released version doesn't work with packaged PCL
|
||||
# because it's too new. Considering that a release
|
||||
# is a year ago it's unreasonable to wait for it.
|
||||
# Released version(v2.11.3) doesn't work with packaged PCL.
|
||||
version = "unstable-2021-10-14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, lib, fetchFromGitHub, makeWrapper
|
||||
{ stdenv, lib, fetchFromGitHub, makeWrapper, fetchpatch
|
||||
, pkg-config, which, perl, libXrandr
|
||||
, cairo, dbus, systemd, gdk-pixbuf, glib, libX11, libXScrnSaver
|
||||
, wayland, wayland-protocols
|
||||
@ -16,6 +16,14 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "sha256-BWbvGetXXCXbfPRY+u6gEfzBmX8PLSnI6a5vfCByiC0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
(fetchpatch {
|
||||
# fixes double free (https://github.com/dunst-project/dunst/issues/957)
|
||||
url = "https://github.com/dunst-project/dunst/commit/dc8efbbaff0e9ba881fa187a01bfe5c033fbdcf9.patch";
|
||||
sha256 = "sha256-xuODOFDP9Eqr3g8OtNnaMmTihhurfj2NLeZPr0TF4vY=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ perl pkg-config which systemd makeWrapper ];
|
||||
|
||||
buildInputs = [
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
buildPythonApplication rec {
|
||||
pname = "gallery_dl";
|
||||
version = "1.19.0";
|
||||
version = "1.19.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "ceffaa5022d76132165ca9004c1e57d7400b56c9ab3866e3bd139e2ffe38cb72";
|
||||
sha256 = "ea1a7bf908507a87edffde6d6be93b8859ab0832ca788b61690a13aa5dd52216";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ requests ];
|
||||
|
@ -14,11 +14,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mkgmap";
|
||||
version = "4808";
|
||||
version = "4810";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.mkgmap.org.uk/download/mkgmap-r${version}-src.tar.gz";
|
||||
sha256 = "ooiXotpxdy99ViUQ0kFp0NoTowGEZjEoD31x+3XrW28=";
|
||||
sha256 = "j21WTEu+MTmnFrRH5B8Eb1tS2elFR715R8jhgKZ5Gmw=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -5,7 +5,7 @@
|
||||
# python deps
|
||||
, python, buildPythonPackage
|
||||
, alembic, beautifulsoup4, chardet, lxml, Mako, pyenchant
|
||||
, pyqt5_with_qtwebkit, pyxdg, sip_4, sqlalchemy, sqlalchemy_migrate
|
||||
, pyqt5_with_qtwebkit, pyxdg, sip_4, sqlalchemy, sqlalchemy-migrate
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
@ -43,7 +43,7 @@ buildPythonPackage rec {
|
||||
pyxdg
|
||||
sip_4
|
||||
sqlalchemy
|
||||
sqlalchemy_migrate
|
||||
sqlalchemy-migrate
|
||||
];
|
||||
|
||||
prePatch = ''
|
||||
|
@ -36,7 +36,7 @@ in python.pkgs.buildPythonApplication rec {
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with python.pkgs; [
|
||||
sqlalchemy_migrate
|
||||
sqlalchemy-migrate
|
||||
python-dateutil
|
||||
matplotlib
|
||||
lxml
|
||||
|
@ -2,7 +2,7 @@
|
||||
, fetchFromGitHub
|
||||
, nix-update-script
|
||||
, fetchpatch
|
||||
, vala
|
||||
, vala_0_52
|
||||
, meson
|
||||
, ninja
|
||||
, pkg-config
|
||||
@ -35,7 +35,9 @@ stdenv.mkDerivation rec {
|
||||
ninja
|
||||
pkg-config
|
||||
python3
|
||||
vala
|
||||
# Does not build with vala 0.54
|
||||
# https://github.com/bleakgrey/tootle/issues/337
|
||||
vala_0_52
|
||||
wrapGAppsHook
|
||||
];
|
||||
|
||||
|
@ -50,7 +50,7 @@
|
||||
, ffmpeg
|
||||
, runtimeShell
|
||||
, mesa # firefox wants gbm for drm+dmabuf
|
||||
, systemLocale ? config.i18n.defaultLocale or "en-US"
|
||||
, systemLocale ? config.i18n.defaultLocale or "en_US"
|
||||
}:
|
||||
|
||||
let
|
||||
@ -78,7 +78,12 @@ let
|
||||
|
||||
defaultSource = lib.findFirst (sourceMatches "en-US") {} sources;
|
||||
|
||||
source = lib.findFirst (sourceMatches systemLocale) defaultSource sources;
|
||||
mozLocale =
|
||||
if systemLocale == "ca_ES@valencia"
|
||||
then "ca-valencia"
|
||||
else lib.replaceStrings ["_"] ["-"] systemLocale;
|
||||
|
||||
source = lib.findFirst (sourceMatches mozLocale) defaultSource sources;
|
||||
|
||||
pname = "firefox-${channel}-bin-unwrapped";
|
||||
|
||||
|
@ -18,13 +18,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lagrange";
|
||||
version = "1.7.2";
|
||||
version = "1.7.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "skyjake";
|
||||
repo = "lagrange";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-iJ6+tc5nls8E/9/Jp5OS9gfJo8SJ5bN+Im/JzEYEAfI=";
|
||||
sha256 = "sha256-peBdmz/aucrKO5Vsj8WkHkpGpLm4inQHee133Zph3MM=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
34
pkgs/applications/networking/cluster/kumactl/default.nix
Normal file
34
pkgs/applications/networking/cluster/kumactl/default.nix
Normal file
@ -0,0 +1,34 @@
|
||||
{ lib, fetchFromGitHub, buildGoModule }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kumactl";
|
||||
version = "1.3.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kumahq";
|
||||
repo = "kuma";
|
||||
rev = version;
|
||||
sha256 = "0b554cngg2j3wnadpqwhq3dv3la8vvvzyww2diw4il4gl4j6xj0j";
|
||||
};
|
||||
|
||||
vendorSha256 = "0r26h4vp11wbl7nk3y7c22p60q7lspy8nr58khxyczdqjk6wrdjp";
|
||||
|
||||
subPackages = [ "app/kumactl" ];
|
||||
|
||||
ldflags = let
|
||||
prefix = "github.com/kumahq/kuma/pkg/version";
|
||||
in [
|
||||
"-s" "-w"
|
||||
"-X ${prefix}.version=${version}"
|
||||
"-X ${prefix}.gitTag=${version}"
|
||||
"-X ${prefix}.gitCommit=${version}"
|
||||
"-X ${prefix}.buildDate=${version}"
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Kuma service mesh controller";
|
||||
homepage = "https://kuma.io/";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ zbioe ];
|
||||
};
|
||||
}
|
@ -1,15 +1,14 @@
|
||||
{ lib, stdenv, fetchFromGitHub, ... }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
pname = "terranix";
|
||||
version = "2.3.0";
|
||||
version = "2.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mrVanDalo";
|
||||
repo = "terranix";
|
||||
rev = version;
|
||||
sha256 = "030067h3gjc02llaa7rx5iml0ikvw6szadm0nrss2sqzshsfimm4";
|
||||
sha256 = "sha256-3N4a5VhZqIgJW11w8oJKJ9T8mhfwEM33kEwV/zZkCs8=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
||||
|
@ -3,16 +3,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "newsboat";
|
||||
version = "2.24";
|
||||
version = "2.25";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "newsboat";
|
||||
repo = "newsboat";
|
||||
rev = "r${version}";
|
||||
sha256 = "0qb10w7pn9hiczjjpc0xanmc83p22ngcqcrkjwji5rl0sh8v9ii4";
|
||||
sha256 = "sha256-TAnGDxTKYl4niouS6nYdJDaIngAPsPHr9Bw9L3cR2Xk=";
|
||||
};
|
||||
|
||||
cargoSha256 = "0vhr8qyw4f3lc208mgl1m3z42igkbwly6wcv7g7jrq3c6dcwyhjn";
|
||||
cargoSha256 = "sha256-MxoyYBLbrCuLVa0p8JrYKSKu2oFPnXMwab42lhhAu48=";
|
||||
|
||||
# TODO: Check if that's still needed
|
||||
postPatch = lib.optionalString stdenv.isDarwin ''
|
||||
|
@ -2,14 +2,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "flexget";
|
||||
version = "3.1.140";
|
||||
version = "3.1.148";
|
||||
|
||||
# Fetch from GitHub in order to use `requirements.in`
|
||||
src = fetchFromGitHub {
|
||||
owner = "flexget";
|
||||
repo = "flexget";
|
||||
rev = "v${version}";
|
||||
sha256 = "15ngmpqqx902l7gxg2lb6h8q8vmjk247jbqhc92l1apr1imjqcc5";
|
||||
sha256 = "0gf07qa1wsysvl0mckh2r3a40065rxhgszf4767jkbryz8z174bc";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@ -32,38 +32,36 @@ python3Packages.buildPythonApplication rec {
|
||||
# See https://github.com/Flexget/Flexget/blob/master/requirements.in
|
||||
APScheduler
|
||||
beautifulsoup4
|
||||
cherrypy
|
||||
colorama
|
||||
colorclass
|
||||
feedparser
|
||||
flask-compress
|
||||
flask-cors
|
||||
flask_login
|
||||
flask-restful
|
||||
flask-restx
|
||||
flask
|
||||
greenlet
|
||||
guessit
|
||||
html5lib
|
||||
jinja2
|
||||
jsonschema
|
||||
loguru
|
||||
more-itertools
|
||||
progressbar
|
||||
psutil
|
||||
pynzb
|
||||
pyparsing
|
||||
PyRSS2Gen
|
||||
python-dateutil
|
||||
pyyaml
|
||||
rebulk
|
||||
requests
|
||||
rich
|
||||
rpyc
|
||||
sgmllib3k
|
||||
sqlalchemy
|
||||
terminaltables
|
||||
|
||||
# WebUI requirements
|
||||
cherrypy
|
||||
flask-compress
|
||||
flask-cors
|
||||
flask_login
|
||||
flask-restful
|
||||
flask-restx
|
||||
flask
|
||||
pyparsing
|
||||
zxcvbn
|
||||
psutil
|
||||
# plugins
|
||||
|
||||
# Plugins requirements
|
||||
transmission-rpc
|
||||
];
|
||||
|
||||
|
@ -23,7 +23,7 @@ let
|
||||
--set LC_MESSAGES "${spellcheckerLanguage}"'');
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "signal-desktop";
|
||||
version = "5.20.0"; # Please backport all updates to the stable channel.
|
||||
version = "5.21.0"; # Please backport all updates to the stable channel.
|
||||
# All releases have a limited lifetime and "expire" 90 days after the release.
|
||||
# When releases "expire" the application becomes unusable until an update is
|
||||
# applied. The expiration date for the current release can be extracted with:
|
||||
@ -33,7 +33,7 @@ in stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://updates.signal.org/desktop/apt/pool/main/s/signal-desktop/signal-desktop_${version}_amd64.deb";
|
||||
sha256 = "0a57gajxjqkp7zcmjc3iiys06b7v53nd81gkwrsfn2gmshihlzkd";
|
||||
sha256 = "19bp5gjf13n87cyicqaikmz3bdx6szazq1kbp4gkyhq0mw7nah7c";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -28,11 +28,11 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "5.8.0.16";
|
||||
version = "5.8.3.145";
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://zoom.us/client/${version}/zoom_x86_64.pkg.tar.xz";
|
||||
sha256 = "1axnh81bf3ab5gzxxqm172wpqlpfbj9a2h3cry3kyxzmrihzbwdm";
|
||||
sha256 = "1p4agpbcpk95r04m775dr17fmlm18vxq9mb65pyfbhvsd1ypw6kr";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -5,6 +5,6 @@ set -eu -o pipefail
|
||||
|
||||
version="$(curl -Ls https://zoom.us/download\?os\=linux | \
|
||||
pup '.linux-ver-text text{}' | \
|
||||
awk -F'[ ().]' '{printf $2"."$3"."$6"."$7"\n"}')"
|
||||
awk -F'[ ().]' '{printf $2"."$3"."$4"."$6"\n"}')"
|
||||
|
||||
update-source-version zoom-us "$version"
|
||||
|
@ -7,25 +7,15 @@ python3Packages.buildPythonApplication rec {
|
||||
pname = "stig";
|
||||
# This project has a different concept for pre release / alpha,
|
||||
# Read the project's README for details: https://github.com/rndusr/stig#stig
|
||||
version = "0.11.2a0";
|
||||
version = "0.12.2a0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "rndusr";
|
||||
repo = "stig";
|
||||
rev = "v${version}";
|
||||
sha256 = "05dn6mr86ly65gdqarl16a2jk1bwiw5xa6r4kyag3s6lqsv66iw8";
|
||||
sha256 = "0sk4vgj3cn75nyrng2d6q0pj1h968kcmbpr9sv1lj1g8fc7g0n4f";
|
||||
};
|
||||
|
||||
# urwidtrees 1.0.3 is requested by the developer because 1.0.2 (which is packaged
|
||||
# in nixpkgs) is not uploaded to pypi and 1.0.1 has a problematic `setup.py`.
|
||||
# As long as we don't have any problems installing it, no special features / specific bugs
|
||||
# were fixed in 1.0.3 that aren't available in 1.0.2 are used by stig.
|
||||
# See https://github.com/rndusr/stig/issues/120
|
||||
postPatch = ''
|
||||
substituteInPlace setup.py \
|
||||
--replace "urwidtrees>=1.0.3dev0" "urwidtrees"
|
||||
'';
|
||||
|
||||
propagatedBuildInputs = with python3Packages; [
|
||||
urwid
|
||||
urwidtrees
|
||||
@ -62,7 +52,7 @@ python3Packages.buildPythonApplication rec {
|
||||
meta = with lib; {
|
||||
description = "TUI and CLI for the BitTorrent client Transmission";
|
||||
homepage = "https://github.com/rndusr/stig";
|
||||
license = licenses.gpl3;
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ doronbehar ];
|
||||
};
|
||||
}
|
||||
|
@ -7,11 +7,11 @@
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "zim";
|
||||
version = "0.73.5";
|
||||
version = "0.74.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://zim-wiki.org/downloads/zim-${version}.tar.gz";
|
||||
sha256 = "sha256-o28V2Sw5lMDVWwf4MlOz2LgmvrNxSGXturwU8cyR1jo=";
|
||||
sha256 = "sha256-tZxBlpps2nLThSOq3WJ42iUQ4NG1Lb463bvDQ+djZJA=";
|
||||
};
|
||||
|
||||
buildInputs = [ gtk3 gobject-introspection wrapGAppsHook gnome.adwaita-icon-theme ];
|
||||
|
32
pkgs/applications/office/zk/default.nix
Normal file
32
pkgs/applications/office/zk/default.nix
Normal file
@ -0,0 +1,32 @@
|
||||
{ lib, fetchFromGitHub, buildGoModule, icu }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "zk";
|
||||
version = "0.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mickael-menu";
|
||||
repo = "zk";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-C3/V4v8lH4F3S51egEw5d51AI0n5xzBQjwhrI64FEGA=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-m7QGv8Vx776TsN7QHXtO+yl3U1D573UMZVyg1B4UeIk=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
buildInputs = [ icu ];
|
||||
|
||||
CGO_ENABLED = 1;
|
||||
|
||||
ldflags = [ "-s" "-w" "-X=main.Build=${version}" ];
|
||||
|
||||
tags = [ "fts5" "icu" ];
|
||||
|
||||
meta = with lib; {
|
||||
maintainers = with maintainers; [ pinpox ];
|
||||
license = licenses.gpl3;
|
||||
description = "A zettelkasten plain text note-taking assistant";
|
||||
homepage = "https://github.com/mickael-menu/zk";
|
||||
};
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
, openssl
|
||||
, gflags
|
||||
, gnuradio3_8
|
||||
, thrift
|
||||
, libpcap
|
||||
, orc
|
||||
, pkg-config
|
||||
@ -21,6 +22,8 @@
|
||||
|
||||
gnuradio3_8.pkgs.mkDerivation rec {
|
||||
pname = "gnss-sdr";
|
||||
# There's an issue with cpufeatures on 0.0.15, see:
|
||||
# https://github.com/NixOS/nixpkgs/pull/142557#issuecomment-950217925
|
||||
version = "0.0.13";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@ -56,6 +59,9 @@ gnuradio3_8.pkgs.mkDerivation rec {
|
||||
protobuf
|
||||
gnuradio3_8.pkgs.osmosdr
|
||||
libpcap
|
||||
] ++ lib.optionals (gnuradio3_8.hasFeature "gr-ctrlport") [
|
||||
thrift
|
||||
gnuradio3_8.unwrapped.python.pkgs.thrift
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
|
@ -44,8 +44,6 @@
|
||||
minor = "14";
|
||||
patch = "0";
|
||||
}
|
||||
# We use our build of volk and not the one bundled with the release
|
||||
, fetchSubmodules ? false
|
||||
}:
|
||||
|
||||
let
|
||||
@ -213,7 +211,6 @@ let
|
||||
sourceSha256
|
||||
overrideSrc
|
||||
fetchFromGitHub
|
||||
fetchSubmodules
|
||||
;
|
||||
qt = qt4;
|
||||
gtk = gtk2;
|
||||
@ -238,34 +235,34 @@ stdenv.mkDerivation rec {
|
||||
passthru = shared.passthru // {
|
||||
# Deps that are potentially overriden and are used inside GR plugins - the same version must
|
||||
inherit boost volk;
|
||||
} // lib.optionalAttrs (hasFeature "gr-uhd" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gr-uhd") {
|
||||
inherit uhd;
|
||||
};
|
||||
cmakeFlags = shared.cmakeFlags
|
||||
# From some reason, if these are not set, libcodec2 and gsm are
|
||||
# not detected properly (slightly different then what's in
|
||||
# ./default.nix).
|
||||
++ lib.optionals (hasFeature "gr-vocoder" features) [
|
||||
++ lib.optionals (hasFeature "gr-vocoder") [
|
||||
"-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so"
|
||||
"-DLIBCODEC2_INCLUDE_DIR=${codec2}/include"
|
||||
"-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so"
|
||||
"-DLIBGSM_INCLUDE_DIR=${gsm}/include/gsm"
|
||||
]
|
||||
++ lib.optionals (hasFeature "volk" features && volk != null) [
|
||||
++ lib.optionals (hasFeature "volk" && volk != null) [
|
||||
"-DENABLE_INTERNAL_VOLK=OFF"
|
||||
]
|
||||
;
|
||||
stripDebugList = shared.stripDebugList
|
||||
# gr-fcd feature was dropped in 3.8
|
||||
++ lib.optionals (hasFeature "gr-fcd" features) [ "share/gnuradio/examples/fcd" ]
|
||||
++ lib.optionals (hasFeature "gr-fcd") [ "share/gnuradio/examples/fcd" ]
|
||||
;
|
||||
preConfigure = ""
|
||||
# wxgui and pygtk are not looked up properly, so we force them to be
|
||||
# detected as found, if they are requested by the `features` attrset.
|
||||
+ lib.optionalString (hasFeature "gr-wxgui" features) ''
|
||||
+ lib.optionalString (hasFeature "gr-wxgui") ''
|
||||
sed -i 's/.*wx\.version.*/set(WX_FOUND TRUE)/g' gr-wxgui/CMakeLists.txt
|
||||
''
|
||||
+ lib.optionalString (hasFeature "gnuradio-companion" features) ''
|
||||
+ lib.optionalString (hasFeature "gnuradio-companion") ''
|
||||
sed -i 's/.*pygtk_version.*/set(PYGTK_FOUND TRUE)/g' grc/CMakeLists.txt
|
||||
''
|
||||
;
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ lib, stdenv
|
||||
, fetchFromGitHub
|
||||
, fetchpatch
|
||||
, cmake
|
||||
# Remove gcc and python references
|
||||
, removeReferencesTo
|
||||
@ -15,6 +16,7 @@
|
||||
, python
|
||||
, codec2
|
||||
, gsm
|
||||
, thrift
|
||||
, fftwFloat
|
||||
, alsa-lib
|
||||
, libjack2
|
||||
@ -41,15 +43,13 @@
|
||||
, pname ? "gnuradio"
|
||||
, versionAttr ? {
|
||||
major = "3.8";
|
||||
minor = "3";
|
||||
patch = "1";
|
||||
minor = "4";
|
||||
patch = "0";
|
||||
}
|
||||
# We use our build of volk and not the one bundled with the release
|
||||
, fetchSubmodules ? false
|
||||
}:
|
||||
|
||||
let
|
||||
sourceSha256 = "0vd39azp8n576dbqsanax7bgsnxwc80riaxid2ihxs4xzyjmbw9r";
|
||||
sourceSha256 = "sha256-C8S3iF7vj9A8SpxriW9y7idrhXzonvenoQtVAMex+Iw=";
|
||||
featuresInfo = {
|
||||
# Needed always
|
||||
basic = {
|
||||
@ -65,7 +65,7 @@ let
|
||||
]
|
||||
# when gr-qtgui is disabled, icu needs to be included, otherwise
|
||||
# building with boost 1.7x fails
|
||||
++ lib.optionals (!(hasFeature "gr-qtgui" features)) [ icu ];
|
||||
++ lib.optionals (!(hasFeature "gr-qtgui")) [ icu ];
|
||||
pythonNative = with python.pkgs; [
|
||||
Mako
|
||||
six
|
||||
@ -101,13 +101,19 @@ let
|
||||
cmakeEnableFlag = "GNURADIO_RUNTIME";
|
||||
};
|
||||
gr-ctrlport = {
|
||||
# Thrift support is not really working well, and even the patch they
|
||||
# recommend applying on 0.9.2 won't apply. See:
|
||||
# https://github.com/gnuradio/gnuradio/blob/v3.8.2.0/gnuradio-runtime/lib/controlport/thrift/README
|
||||
cmakeEnableFlag = "GR_CTRLPORT";
|
||||
native = [
|
||||
swig
|
||||
];
|
||||
runtime = [
|
||||
thrift
|
||||
];
|
||||
pythonRuntime = with python.pkgs; [
|
||||
python.pkgs.thrift
|
||||
# For gr-perf-monitorx
|
||||
matplotlib
|
||||
networkx
|
||||
];
|
||||
};
|
||||
gnuradio-companion = {
|
||||
pythonRuntime = with python.pkgs; [
|
||||
@ -171,9 +177,14 @@ let
|
||||
};
|
||||
gr-utils = {
|
||||
cmakeEnableFlag = "GR_UTILS";
|
||||
pythonRuntime = with python.pkgs; [
|
||||
# For gr_plot
|
||||
matplotlib
|
||||
];
|
||||
};
|
||||
gr-modtool = {
|
||||
pythonRuntime = with python.pkgs; [
|
||||
setuptools
|
||||
click
|
||||
click-plugins
|
||||
];
|
||||
@ -208,7 +219,6 @@ let
|
||||
sourceSha256
|
||||
overrideSrc
|
||||
fetchFromGitHub
|
||||
fetchSubmodules
|
||||
;
|
||||
qt = qt5;
|
||||
gtk = gtk3;
|
||||
@ -230,12 +240,21 @@ stdenv.mkDerivation rec {
|
||||
dontWrapQtApps
|
||||
meta
|
||||
;
|
||||
patches = [
|
||||
# Not accepted upstream, see https://github.com/gnuradio/gnuradio/pull/5227
|
||||
./modtool-newmod-permissions.3_8.patch
|
||||
(fetchpatch {
|
||||
# https://github.com/gnuradio/gnuradio/pull/5226
|
||||
url = "https://github.com/gnuradio/gnuradio/commit/9d7343526dd793120b6425cd9a6969416ed32503.patch";
|
||||
sha256 = "sha256-usSoRDDuClUfdX4yFbQNu8wDzve6UEhZYTFj1oZbFic=";
|
||||
})
|
||||
];
|
||||
passthru = shared.passthru // {
|
||||
# Deps that are potentially overriden and are used inside GR plugins - the same version must
|
||||
inherit boost volk;
|
||||
} // lib.optionalAttrs (hasFeature "gr-uhd" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gr-uhd") {
|
||||
inherit uhd;
|
||||
} // lib.optionalAttrs (hasFeature "gr-qtgui" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gr-qtgui") {
|
||||
inherit (libsForQt5) qwt;
|
||||
};
|
||||
cmakeFlags = shared.cmakeFlags
|
||||
@ -246,7 +265,7 @@ stdenv.mkDerivation rec {
|
||||
#
|
||||
# NOTE: qradiolink needs libcodec2 to be detected in
|
||||
# order to build, see https://github.com/qradiolink/qradiolink/issues/67
|
||||
++ lib.optionals (hasFeature "gr-vocoder" features) [
|
||||
++ lib.optionals (hasFeature "gr-vocoder") [
|
||||
"-DLIBCODEC2_FOUND=TRUE"
|
||||
"-DLIBCODEC2_LIBRARIES=${codec2}/lib/libcodec2.so"
|
||||
"-DLIBCODEC2_INCLUDE_DIRS=${codec2}/include"
|
||||
@ -255,7 +274,7 @@ stdenv.mkDerivation rec {
|
||||
"-DLIBGSM_LIBRARIES=${gsm}/lib/libgsm.so"
|
||||
"-DLIBGSM_INCLUDE_DIRS=${gsm}/include/gsm"
|
||||
]
|
||||
++ lib.optionals (hasFeature "volk" features && volk != null) [
|
||||
++ lib.optionals (hasFeature "volk" && volk != null) [
|
||||
"-DENABLE_INTERNAL_VOLK=OFF"
|
||||
]
|
||||
;
|
||||
@ -263,7 +282,7 @@ stdenv.mkDerivation rec {
|
||||
postInstall = shared.postInstall
|
||||
# This is the only python reference worth removing, if needed (3.7 doesn't
|
||||
# set that reference).
|
||||
+ lib.optionalString (!hasFeature "python-support" features) ''
|
||||
+ lib.optionalString (!hasFeature "python-support") ''
|
||||
${removeReferencesTo}/bin/remove-references-to -t ${python} $out/lib/cmake/gnuradio/GnuradioConfig.cmake
|
||||
''
|
||||
;
|
||||
|
@ -26,6 +26,7 @@
|
||||
, libsodium
|
||||
, libsndfile
|
||||
, libunwind
|
||||
, thrift
|
||||
, cppzmq
|
||||
, zeromq
|
||||
# Needed only if qt-gui is disabled, from some reason
|
||||
@ -45,14 +46,13 @@
|
||||
, pname ? "gnuradio"
|
||||
, versionAttr ? {
|
||||
major = "3.9";
|
||||
minor = "2";
|
||||
minor = "3";
|
||||
patch = "0";
|
||||
}
|
||||
, fetchSubmodules ? false
|
||||
}:
|
||||
|
||||
let
|
||||
sourceSha256 = "01wyqazrpphmb0fl69j93k0w4vm4d1l4177m1fyg7qx8hzia0aaq";
|
||||
sourceSha256 = "sha256-jVfExv1CcnlOaaj/XtnfhWAHnQsshZJ1l/zXo0uovdo=";
|
||||
featuresInfo = {
|
||||
# Needed always
|
||||
basic = {
|
||||
@ -69,7 +69,7 @@ let
|
||||
]
|
||||
# when gr-qtgui is disabled, icu needs to be included, otherwise
|
||||
# building with boost 1.7x fails
|
||||
++ lib.optionals (!(hasFeature "gr-qtgui" features)) [ icu ];
|
||||
++ lib.optionals (!(hasFeature "gr-qtgui")) [ icu ];
|
||||
pythonNative = with python.pkgs; [
|
||||
Mako
|
||||
six
|
||||
@ -100,11 +100,15 @@ let
|
||||
];
|
||||
};
|
||||
gr-ctrlport = {
|
||||
# Thrift support is not really working well, and even the patch they
|
||||
# recommend applying on 0.9.2 won't apply. See:
|
||||
# https://github.com/gnuradio/gnuradio/blob/v3.9.0.0/gnuradio-runtime/lib/controlport/thrift/README
|
||||
runtime = [
|
||||
libunwind
|
||||
thrift
|
||||
];
|
||||
pythonRuntime = with python.pkgs; [
|
||||
python.pkgs.thrift
|
||||
# For gr-perf-monitorx
|
||||
matplotlib
|
||||
networkx
|
||||
];
|
||||
cmakeEnableFlag = "GR_CTRLPORT";
|
||||
};
|
||||
@ -140,6 +144,10 @@ let
|
||||
gr-filter = {
|
||||
runtime = [ fftwFloat ];
|
||||
cmakeEnableFlag = "GR_FILTER";
|
||||
pythonRuntime = with python.pkgs; [
|
||||
scipy
|
||||
pyqtgraph
|
||||
];
|
||||
};
|
||||
gr-analog = {
|
||||
cmakeEnableFlag = "GR_ANALOG";
|
||||
@ -174,11 +182,22 @@ let
|
||||
];
|
||||
cmakeEnableFlag = "GR_UHD";
|
||||
};
|
||||
gr-uhd-rfnoc = {
|
||||
runtime = [
|
||||
uhd
|
||||
];
|
||||
cmakeEnableFlag = "UHD_RFNOC";
|
||||
};
|
||||
gr-utils = {
|
||||
cmakeEnableFlag = "GR_UTILS";
|
||||
pythonRuntime = with python.pkgs; [
|
||||
# For gr_plot
|
||||
matplotlib
|
||||
];
|
||||
};
|
||||
gr-modtool = {
|
||||
pythonRuntime = with python.pkgs; [
|
||||
setuptools
|
||||
click
|
||||
click-plugins
|
||||
];
|
||||
@ -225,7 +244,6 @@ let
|
||||
sourceSha256
|
||||
overrideSrc
|
||||
fetchFromGitHub
|
||||
fetchSubmodules
|
||||
;
|
||||
qt = qt5;
|
||||
gtk = gtk3;
|
||||
@ -248,18 +266,27 @@ stdenv.mkDerivation rec {
|
||||
dontWrapQtApps
|
||||
meta
|
||||
;
|
||||
patches = [
|
||||
# Not accepted upstream, see https://github.com/gnuradio/gnuradio/pull/5227
|
||||
./modtool-newmod-permissions.patch
|
||||
(fetchpatch {
|
||||
# https://github.com/gnuradio/gnuradio/pull/5225
|
||||
url = "https://github.com/gnuradio/gnuradio/commit/4cef46e3ea0faf04e05ca1a5846cd1568fa51bb2.patch";
|
||||
sha256 = "sha256-6AlGbtD1S0c3I9JSoLTMP4YqwDU17i2j+XRkuR+QTuc=";
|
||||
})
|
||||
];
|
||||
passthru = shared.passthru // {
|
||||
# Deps that are potentially overriden and are used inside GR plugins - the same version must
|
||||
inherit boost volk;
|
||||
} // lib.optionalAttrs (hasFeature "gr-uhd" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gr-uhd") {
|
||||
inherit uhd;
|
||||
} // lib.optionalAttrs (hasFeature "gr-qtgui" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gr-qtgui") {
|
||||
inherit (libsForQt5) qwt;
|
||||
};
|
||||
|
||||
postInstall = shared.postInstall
|
||||
# This is the only python reference worth removing, if needed.
|
||||
+ lib.optionalString (!hasFeature "python-support" features) ''
|
||||
+ lib.optionalString (!hasFeature "python-support") ''
|
||||
${removeReferencesTo}/bin/remove-references-to -t ${python} $out/lib/cmake/gnuradio/GnuradioConfig.cmake
|
||||
${removeReferencesTo}/bin/remove-references-to -t ${python} $(readlink -f $out/lib/libgnuradio-runtime.so)
|
||||
${removeReferencesTo}/bin/remove-references-to -t ${python.pkgs.pybind11} $out/lib/cmake/gnuradio/gnuradio-runtimeTargets.cmake
|
||||
|
@ -0,0 +1,26 @@
|
||||
commit bf870157e0a9c3d19e968afb276b4e7d96b4df30
|
||||
Author: Doron Behar <doron.behar@gmail.com>
|
||||
Date: Thu Oct 21 13:10:42 2021 +0300
|
||||
|
||||
gr-modtool: Don't copy source permissions
|
||||
|
||||
This is needed for systems such as NixOS, where the build tree isn't
|
||||
writable and the files copied should be.
|
||||
|
||||
Signed-off-by: Doron Behar <doron.behar@gmail.com>
|
||||
|
||||
diff --git a/gr-utils/python/modtool/core/newmod.py b/gr-utils/python/modtool/core/newmod.py
|
||||
index 123059907..0c734e7ae 100644
|
||||
--- a/gr-utils/python/modtool/core/newmod.py
|
||||
+++ b/gr-utils/python/modtool/core/newmod.py
|
||||
@@ -78,7 +78,9 @@ class ModToolNewModule(ModTool):
|
||||
self._setup_scm(mode='new')
|
||||
logger.info("Creating out-of-tree module in {}...".format(self.dir))
|
||||
try:
|
||||
- shutil.copytree(self.srcdir, self.dir)
|
||||
+ # https://stackoverflow.com/a/17022146/4935114
|
||||
+ shutil.copystat = lambda x, y: x
|
||||
+ shutil.copytree(self.srcdir, self.dir, copy_function=shutil.copyfile)
|
||||
os.chdir(self.dir)
|
||||
except OSError:
|
||||
raise ModToolException('Could not create directory {}.'.format(self.dir))
|
@ -0,0 +1,15 @@
|
||||
diff --git c/gr-utils/modtool/core/newmod.py w/gr-utils/modtool/core/newmod.py
|
||||
index babebfcde..9a02f663e 100644
|
||||
--- c/gr-utils/modtool/core/newmod.py
|
||||
+++ w/gr-utils/modtool/core/newmod.py
|
||||
@@ -62,7 +62,9 @@ class ModToolNewModule(ModTool):
|
||||
self._setup_scm(mode='new')
|
||||
logger.info(f"Creating out-of-tree module in {self.dir}...")
|
||||
try:
|
||||
- shutil.copytree(self.srcdir, self.dir)
|
||||
+ # https://stackoverflow.com/a/17022146/4935114
|
||||
+ shutil.copystat = lambda x, y: x
|
||||
+ shutil.copytree(self.srcdir, self.dir, copy_function=shutil.copyfile)
|
||||
try:
|
||||
shutil.copyfile(os.path.join(gr.prefix(), 'share', 'gnuradio', 'clang-format.conf'),
|
||||
os.path.join(self.dir, '.clang-format'))
|
@ -11,7 +11,6 @@
|
||||
# the main expressions
|
||||
, overrideSrc
|
||||
, fetchFromGitHub
|
||||
, fetchSubmodules
|
||||
}:
|
||||
|
||||
rec {
|
||||
@ -26,12 +25,11 @@ rec {
|
||||
owner = "gnuradio";
|
||||
rev = "v${version}";
|
||||
sha256 = sourceSha256;
|
||||
inherit fetchSubmodules;
|
||||
}
|
||||
;
|
||||
# Check if a feature is enabled, while defaulting to true if feat is not
|
||||
# specified.
|
||||
hasFeature = feat: features: (
|
||||
hasFeature = feat: (
|
||||
if builtins.hasAttr feat features then
|
||||
features.${feat}
|
||||
else
|
||||
@ -39,7 +37,7 @@ rec {
|
||||
);
|
||||
nativeBuildInputs = lib.flatten (lib.mapAttrsToList (
|
||||
feat: info: (
|
||||
if hasFeature feat features then
|
||||
if hasFeature feat then
|
||||
(if builtins.hasAttr "native" info then info.native else []) ++
|
||||
(if builtins.hasAttr "pythonNative" info then info.pythonNative else [])
|
||||
else
|
||||
@ -48,7 +46,7 @@ rec {
|
||||
) featuresInfo);
|
||||
buildInputs = lib.flatten (lib.mapAttrsToList (
|
||||
feat: info: (
|
||||
if hasFeature feat features then
|
||||
if hasFeature feat then
|
||||
(if builtins.hasAttr "runtime" info then info.runtime else []) ++
|
||||
(if builtins.hasAttr "pythonRuntime" info then info.pythonRuntime else [])
|
||||
else
|
||||
@ -63,7 +61,7 @@ rec {
|
||||
# satisfied, let only our cmakeFlags decide.
|
||||
"-DENABLE_DEFAULT=OFF"
|
||||
else
|
||||
if hasFeature feat features then
|
||||
if hasFeature feat then
|
||||
"-DENABLE_${info.cmakeEnableFlag}=ON"
|
||||
else
|
||||
"-DENABLE_${info.cmakeEnableFlag}=OFF"
|
||||
@ -75,17 +73,17 @@ rec {
|
||||
stdenv.cc.cc
|
||||
]
|
||||
# If python-support is disabled, we probably don't want it referenced
|
||||
++ lib.optionals (!hasFeature "python-support" features) [ python ]
|
||||
++ lib.optionals (!hasFeature "python-support") [ python ]
|
||||
;
|
||||
# Gcc references from examples
|
||||
stripDebugList = [ "lib" "bin" ]
|
||||
++ lib.optionals (hasFeature "gr-audio" features) [ "share/gnuradio/examples/audio" ]
|
||||
++ lib.optionals (hasFeature "gr-uhd" features) [ "share/gnuradio/examples/uhd" ]
|
||||
++ lib.optionals (hasFeature "gr-qtgui" features) [ "share/gnuradio/examples/qt-gui" ]
|
||||
++ lib.optionals (hasFeature "gr-audio") [ "share/gnuradio/examples/audio" ]
|
||||
++ lib.optionals (hasFeature "gr-uhd") [ "share/gnuradio/examples/uhd" ]
|
||||
++ lib.optionals (hasFeature "gr-qtgui") [ "share/gnuradio/examples/qt-gui" ]
|
||||
;
|
||||
postInstall = ""
|
||||
# Gcc references
|
||||
+ lib.optionalString (hasFeature "gnuradio-runtime" features) ''
|
||||
+ lib.optionalString (hasFeature "gnuradio-runtime") ''
|
||||
${removeReferencesTo}/bin/remove-references-to -t ${stdenv.cc} $(readlink -f $out/lib/libgnuradio-runtime.so)
|
||||
''
|
||||
;
|
||||
@ -101,9 +99,9 @@ rec {
|
||||
featuresInfo
|
||||
python
|
||||
;
|
||||
} // lib.optionalAttrs (hasFeature "gr-qtgui" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gr-qtgui") {
|
||||
inherit qt;
|
||||
} // lib.optionalAttrs (hasFeature "gnuradio-companion" features) {
|
||||
} // lib.optionalAttrs (hasFeature "gnuradio-companion") {
|
||||
inherit gtk;
|
||||
};
|
||||
# Wrapping is done with an external wrapper
|
||||
|
@ -33,25 +33,20 @@
|
||||
}:
|
||||
|
||||
let
|
||||
# We don't check if `python-support` feature is on, as it's unlikely someone
|
||||
# may wish to wrap GR without python support.
|
||||
pythonPkgs = extraPythonPackages
|
||||
++ [ (unwrapped.python.pkgs.toPythonModule unwrapped) ]
|
||||
# Add the extraPackages as python modules as well
|
||||
++ (builtins.map unwrapped.python.pkgs.toPythonModule extraPackages)
|
||||
++ lib.flatten (lib.mapAttrsToList (
|
||||
feat: info: (
|
||||
if unwrapped.hasFeature feat unwrapped.features then
|
||||
if unwrapped.hasFeature feat then
|
||||
(if builtins.hasAttr "pythonRuntime" info then info.pythonRuntime else [])
|
||||
else
|
||||
[]
|
||||
)
|
||||
) unwrapped.featuresInfo)
|
||||
++ lib.optionals
|
||||
(unwrapped.hasFeature "python-support" unwrapped.features)
|
||||
(
|
||||
# Add unwrapped itself as a python module
|
||||
[ (unwrapped.python.pkgs.toPythonModule unwrapped) ]
|
||||
# Add all extraPackages as python modules
|
||||
++ (builtins.map unwrapped.python.pkgs.toPythonModule extraPackages)
|
||||
)
|
||||
;
|
||||
pythonEnv = unwrapped.python.withPackages(ps: pythonPkgs);
|
||||
|
||||
@ -60,8 +55,8 @@ let
|
||||
]
|
||||
# Emulating wrapGAppsHook & wrapQtAppsHook working together
|
||||
++ lib.optionals (
|
||||
(unwrapped.hasFeature "gnuradio-companion" unwrapped.features)
|
||||
|| (unwrapped.hasFeature "gr-qtgui" unwrapped.features)
|
||||
(unwrapped.hasFeature "gnuradio-companion")
|
||||
|| (unwrapped.hasFeature "gr-qtgui")
|
||||
) [
|
||||
"--prefix" "XDG_DATA_DIRS" ":" "$out/share"
|
||||
"--prefix" "XDG_DATA_DIRS" ":" "$out/share/gsettings-schemas/${name}"
|
||||
@ -71,7 +66,7 @@ let
|
||||
# https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1764890.html
|
||||
"--prefix" "PATH" ":" "${lib.getBin glib}/bin"
|
||||
]
|
||||
++ lib.optionals (unwrapped.hasFeature "gnuradio-companion" unwrapped.features) [
|
||||
++ lib.optionals (unwrapped.hasFeature "gnuradio-companion") [
|
||||
"--set" "GDK_PIXBUF_MODULE_FILE" "${librsvg}/${gdk-pixbuf.moduleDir}.cache"
|
||||
"--prefix" "GIO_EXTRA_MODULES" ":" "${lib.getLib dconf}/lib/gio/modules"
|
||||
"--prefix" "XDG_DATA_DIRS" ":" "${unwrapped.gtk}/share"
|
||||
@ -94,7 +89,7 @@ let
|
||||
++ lib.optionals (extraPackages != []) [
|
||||
"--prefix" "GRC_BLOCKS_PATH" ":" "${lib.makeSearchPath "share/gnuradio/grc/blocks" extraPackages}"
|
||||
]
|
||||
++ lib.optionals (unwrapped.hasFeature "gr-qtgui" unwrapped.features)
|
||||
++ lib.optionals (unwrapped.hasFeature "gr-qtgui")
|
||||
# 3.7 builds with qt4
|
||||
(if lib.versionAtLeast unwrapped.versionAttr.major "3.8" then
|
||||
[
|
||||
|
@ -4,6 +4,7 @@
|
||||
, pkg-config
|
||||
, qt5
|
||||
, gnuradio3_8Minimal
|
||||
, thrift
|
||||
, log4cpp
|
||||
, mpir
|
||||
, fftwFloat
|
||||
@ -45,6 +46,9 @@ gnuradio3_8Minimal.pkgs.mkDerivation rec {
|
||||
gnuradio3_8Minimal.pkgs.osmosdr
|
||||
rtl-sdr
|
||||
hackrf
|
||||
] ++ lib.optionals (gnuradio3_8Minimal.hasFeature "gr-ctrlport") [
|
||||
thrift
|
||||
gnuradio3_8Minimal.unwrapped.python.pkgs.thrift
|
||||
] ++ lib.optionals pulseaudioSupport [ libpulseaudio ];
|
||||
|
||||
postInstall = ''
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ lib
|
||||
, gnuradio3_8Minimal
|
||||
, thrift
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, cmake
|
||||
@ -28,6 +29,9 @@ gnuradio3_8Minimal.pkgs.mkDerivation rec {
|
||||
fftwFloat
|
||||
liquid-dsp
|
||||
qt5.qtbase
|
||||
] ++ lib.optionals (gnuradio3_8Minimal.hasFeature "gr-ctrlport") [
|
||||
thrift
|
||||
gnuradio3_8Minimal.unwrapped.python.pkgs.thrift
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
|
@ -4,6 +4,7 @@
|
||||
, libconfig
|
||||
# Needs a gnuradio built with qt gui support
|
||||
, gnuradio3_8
|
||||
, thrift
|
||||
# Not gnuradioPackages'
|
||||
, codec2
|
||||
, log4cpp
|
||||
@ -61,6 +62,9 @@ gnuradio3_8.pkgs.mkDerivation rec {
|
||||
libftdi
|
||||
libsndfile
|
||||
gnuradio3_8.qwt
|
||||
] ++ lib.optionals (gnuradio3_8.hasFeature "gr-ctrlport") [
|
||||
thrift
|
||||
gnuradio3_8.unwrapped.python.pkgs.thrift
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
protobuf
|
||||
|
@ -26,6 +26,6 @@ in stdenv.mkDerivation {
|
||||
description = "SoapySDR plugin for RTL-SDR devices";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ ragge ];
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -19,8 +19,8 @@ stdenv.mkDerivation rec {
|
||||
meta = with lib; {
|
||||
homepage = "https://vapier.github.io/pcalc/";
|
||||
description = "Programmer's calculator";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with lib.maintainers; [ ftrvxmtrx ];
|
||||
platforms = lib.platforms.linux;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ ftrvxmtrx ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -9,16 +9,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "delta";
|
||||
version = "0.8.3";
|
||||
version = "0.9.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dandavison";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-lwdsl3dzqrIL1JoBFmldwsCvNCWUcTlgeoEoCvmlTCQ=";
|
||||
sha256 = "sha256-LyKkkQlYdCyvlru+o/QeA7CDWYgCRTFKAdAjJxJX+oM=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-7TvxkSJ3iWJnjD3Xe7WDXBNWIyl8U9XTCn9muUG1AmI=";
|
||||
cargoSha256 = "sha256-+ao2nVRkXNWs00oUiATgzsDTfPo09BV66AioZQqBhGk=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gh";
|
||||
version = "2.1.0";
|
||||
version = "2.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cli";
|
||||
repo = "cli";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-70FmFN76azRqnAZ9SLgr/V8moqkWoBbDB6IdSXM7Vmg=";
|
||||
sha256 = "sha256-/czexUqpdsFQAteZ75ur2SFibrtZWffHpPBEPlLQXSY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-004TspNwjCWnrD86HEf5wGpt8OCP5qIrTwlGWSRNUmg=";
|
||||
vendorSha256 = "sha256-slMl5dCyyVNBgDbpYECfYUbpJJ7sWuSGSutYR3rTzj0=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -16,12 +16,12 @@ with lib;
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "gitea";
|
||||
version = "1.15.5";
|
||||
version = "1.15.6";
|
||||
|
||||
# not fetching directly from the git repo, because that lacks several vendor files for the web UI
|
||||
src = fetchurl {
|
||||
url = "https://github.com/go-gitea/gitea/releases/download/v${version}/gitea-src-${version}.tar.gz";
|
||||
sha256 = "sha256-W+czWzo4keTLRPDLcTeYl3JSccwfq+P6k4ELADO9FVM=";
|
||||
sha256 = "sha256-FMM/iQAxJcymv4jYBzaBXG0Uy8UxHh9gFWB5gzV9cn0=";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
|
@ -19,11 +19,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "github-desktop";
|
||||
version = "2.9.3";
|
||||
version = "2.9.4";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/shiftkey/desktop/releases/download/release-${version}-linux1/GitHubDesktop-linux-${version}-linux1.deb";
|
||||
sha256 = "sha256-e3XDjVQ5VcsS/MGxNsDs2h77joZAz8mNn+SwrqiUAR0=";
|
||||
sha256 = "sha256-CcAOATIEcrUKhVQWFr0dMvY9Q5rHWQI9/KdSEZ/ncD4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -11,7 +11,6 @@
|
||||
, yajl
|
||||
, nixosTests
|
||||
, criu
|
||||
, system
|
||||
}:
|
||||
|
||||
let
|
||||
@ -52,7 +51,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
buildInputs = [ libcap libseccomp systemd yajl ]
|
||||
# Criu currently only builds on x86_64-linux
|
||||
++ lib.optional (lib.elem system criu.meta.platforms) criu;
|
||||
++ lib.optional (lib.elem stdenv.hostPlatform.system criu.meta.platforms) criu;
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
|
43
pkgs/applications/window-managers/eww/default.nix
Normal file
43
pkgs/applications/window-managers/eww/default.nix
Normal file
@ -0,0 +1,43 @@
|
||||
{ lib
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, gtk3
|
||||
, withWayland ? false
|
||||
, gtk-layer-shell
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "eww";
|
||||
version = "0.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elkowar";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "050zc3w1z9f2vg6sz86mdxf345gd3s3jf09gf4y8y1mqkzs86b8x";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-LejnTVv9rhL9CVW1fgj2gFv4amHQeziu5uaH2ae8AAw=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ gtk3 ] ++ lib.optional withWayland gtk-layer-shell;
|
||||
|
||||
cargoBuildFlags = [ "--bin" "eww" ] ++ lib.optionals withWayland [
|
||||
"--no-default-features"
|
||||
"--features=wayland"
|
||||
];
|
||||
|
||||
cargoTestFlags = cargoBuildFlags;
|
||||
|
||||
# requires unstable rust features
|
||||
RUSTC_BOOTSTRAP = 1;
|
||||
|
||||
meta = with lib; {
|
||||
description = "ElKowars wacky widgets";
|
||||
homepage = "https://github.com/elkowar/eww";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ figsoda legendofmiracles ];
|
||||
};
|
||||
}
|
@ -31,8 +31,6 @@
|
||||
, writeText
|
||||
, writeTextDir
|
||||
, writePython3
|
||||
, system
|
||||
, # Note: This is the cross system we're compiling for
|
||||
}:
|
||||
|
||||
let
|
||||
|
9
pkgs/build-support/java/canonicalize-jar.nix
Normal file
9
pkgs/build-support/java/canonicalize-jar.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{ substituteAll, unzip, zip }:
|
||||
|
||||
substituteAll {
|
||||
name = "canonicalize-jar";
|
||||
src = ./canonicalize-jar.sh;
|
||||
|
||||
unzip = "${unzip}/bin/unzip";
|
||||
zip = "${zip}/bin/zip";
|
||||
}
|
29
pkgs/build-support/java/canonicalize-jar.sh
Normal file
29
pkgs/build-support/java/canonicalize-jar.sh
Normal file
@ -0,0 +1,29 @@
|
||||
# Canonicalize the manifest & repack with deterministic timestamps.
|
||||
canonicalizeJar() {
|
||||
local input='' outer=''
|
||||
input="$(realpath -sm -- "$1")"
|
||||
outer="$(pwd)"
|
||||
# -qq: even quieter
|
||||
@unzip@ -qq "$input" -d "$input-tmp"
|
||||
canonicalizeJarManifest "$input-tmp/META-INF/MANIFEST.MF"
|
||||
# Sets all timestamps to Jan 1 1980, the earliest mtime zips support.
|
||||
find -- "$input-tmp" -exec touch -t 198001010000.00 {} +
|
||||
rm "$input"
|
||||
pushd "$input-tmp" 2>/dev/null
|
||||
# -q|--quiet, -r|--recurse-paths
|
||||
# -o|--latest-time: canonicalizes overall archive mtime
|
||||
# -X|--no-extra: don't store platform-specific extra file attribute fields
|
||||
@zip@ -qroX "$outer/tmp-out.jar" . 2> /dev/null
|
||||
popd 2>/dev/null
|
||||
rm -rf "$input-tmp"
|
||||
mv "$outer/tmp-out.jar" "$input"
|
||||
}
|
||||
|
||||
# See also the Java specification's JAR requirements:
|
||||
# https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Notes_on_Manifest_and_Signature_Files
|
||||
canonicalizeJarManifest() {
|
||||
local input=''
|
||||
input="$(realpath -sm -- "$1")"
|
||||
(head -n 1 "$input" && tail -n +2 "$input" | sort | grep -v '^\s*$') > "$input-tmp"
|
||||
mv "$input-tmp" "$input"
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
{ src
|
||||
, pkgs
|
||||
, lib
|
||||
, stdenv ? pkgs.stdenv
|
||||
, name
|
||||
, antTargets ? []
|
||||
, jars ? []
|
||||
, jarWrappers ? []
|
||||
, antProperties ? []
|
||||
, antBuildInputs ? []
|
||||
, buildfile ? "build.xml"
|
||||
, ant ? pkgs.ant
|
||||
, jre ? pkgs.jdk
|
||||
, hydraAntLogger ? pkgs.hydraAntLogger
|
||||
, zip ? pkgs.zip
|
||||
, unzip ? pkgs.unzip
|
||||
, ... } @ args:
|
||||
|
||||
let
|
||||
antFlags = "-f ${buildfile} " + lib.concatMapStrings ({name, value}: "-D${name}=${value} " ) antProperties ;
|
||||
in
|
||||
stdenv.mkDerivation (
|
||||
|
||||
{
|
||||
inherit jre ant;
|
||||
showBuildStats = true;
|
||||
|
||||
postPhases =
|
||||
["generateWrappersPhase" "finalPhase"];
|
||||
|
||||
prePhases =
|
||||
["antSetupPhase"];
|
||||
|
||||
antSetupPhase = with lib; ''
|
||||
if test "$hydraAntLogger" != "" ; then
|
||||
export ANT_ARGS="-logger org.hydra.ant.HydraLogger -lib `ls $hydraAntLogger/share/java/*.jar | head -1`"
|
||||
fi
|
||||
for abi in ${concatStringsSep " " (map (f: "`find ${f} -name '*.jar'`") antBuildInputs)}; do
|
||||
export ANT_ARGS="$ANT_ARGS -lib $abi"
|
||||
done
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
mkdir -p $out/share/java
|
||||
${ if jars == [] then ''
|
||||
find . -name "*.jar" | xargs -I{} cp -v {} $out/share/java
|
||||
'' else lib.concatMapStrings (j: ''
|
||||
cp -v ${j} $out/share/java
|
||||
'') jars }
|
||||
|
||||
. ${./functions.sh}
|
||||
for j in $out/share/java/*.jar ; do
|
||||
canonicalizeJar $j
|
||||
echo file jar $j >> $out/nix-support/hydra-build-products
|
||||
done
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
generateWrappersPhase =
|
||||
let
|
||||
cp = w: "-cp '${lib.optionalString (w ? classPath) w.classPath}${lib.optionalString (w ? mainClass) ":$out/share/java/*"}'";
|
||||
in
|
||||
''
|
||||
header "Generating jar wrappers"
|
||||
'' + (lib.concatMapStrings (w: ''
|
||||
|
||||
mkdir -p $out/bin
|
||||
cat >> $out/bin/${w.name} <<EOF
|
||||
#!${pkgs.runtimeShell}
|
||||
export JAVA_HOME=$jre
|
||||
$jre/bin/java ${cp w} ${if w ? mainClass then w.mainClass else "-jar ${w.jar}"} \$@
|
||||
EOF
|
||||
|
||||
chmod a+x $out/bin/${w.name} || exit 1
|
||||
'') jarWrappers) + ''
|
||||
closeNest
|
||||
'';
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
'' + (if antTargets == [] then ''
|
||||
header "Building default ant target"
|
||||
ant ${antFlags}
|
||||
closeNest
|
||||
'' else lib.concatMapStrings (t: ''
|
||||
header "Building '${t}' target"
|
||||
ant ${antFlags} ${t}
|
||||
closeNest
|
||||
'') antTargets) + ''
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
finalPhase =
|
||||
''
|
||||
# Propagate the release name of the source tarball. This is
|
||||
# to get nice package names in channels.
|
||||
if test -e $origSrc/nix-support/hydra-release-name; then
|
||||
cp $origSrc/nix-support/hydra-release-name $out/nix-support/hydra-release-name
|
||||
fi
|
||||
'';
|
||||
}
|
||||
|
||||
// removeAttrs args ["antProperties" "buildInputs" "pkgs" "lib" "jarWrappers"] //
|
||||
|
||||
{
|
||||
name = name + (if src ? version then "-" + src.version else "");
|
||||
|
||||
nativeBuildInputs = [ unzip ];
|
||||
buildInputs = [ant jre zip] ++ lib.optional (args ? buildInputs) args.buildInputs ;
|
||||
|
||||
postHook = ''
|
||||
mkdir -p $out/nix-support
|
||||
echo "$system" > $out/nix-support/system
|
||||
. ${./functions.sh}
|
||||
|
||||
origSrc=$src
|
||||
src=$(findTarball $src)
|
||||
'';
|
||||
}
|
||||
)
|
@ -14,10 +14,6 @@ rec {
|
||||
{ inherit stdenv;
|
||||
} // args);
|
||||
|
||||
antBuild = args: import ./ant-build.nix (
|
||||
{ inherit lib pkgs;
|
||||
} // args);
|
||||
|
||||
mvnBuild = args: import ./maven-build.nix (
|
||||
{ inherit stdenv;
|
||||
} // args);
|
||||
|
@ -11,29 +11,6 @@ findTarball() {
|
||||
fi
|
||||
}
|
||||
|
||||
canonicalizeJarManifest() {
|
||||
local input=$1
|
||||
# http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html#Notes_on_Manifest_and_Signature_Files
|
||||
(head -n 1 $input && tail -n +2 $input | sort | grep -v '^\s*$') > $input-tmp
|
||||
mv $input-tmp $input
|
||||
}
|
||||
|
||||
# Post-process a jar file to contain canonical timestamps and metadata ordering
|
||||
canonicalizeJar() {
|
||||
local input=$1
|
||||
local outer=$(pwd)
|
||||
unzip -qq $input -d $input-tmp
|
||||
canonicalizeJarManifest $input-tmp/META-INF/MANIFEST.MF
|
||||
# Set all timestamps to Jan 1 1980, which is the earliest date the zip format supports...
|
||||
find $input-tmp -exec touch -t 198001010000.00 {} +
|
||||
rm $input
|
||||
pushd $input-tmp
|
||||
zip -q -r -o -X $outer/tmp-out.jar . 2> /dev/null
|
||||
popd
|
||||
rm -rf $input-tmp
|
||||
mv $outer/tmp-out.jar $input
|
||||
}
|
||||
|
||||
propagateImageName() {
|
||||
mkdir -p $out/nix-support
|
||||
cat "$diskImage"/nix-support/full-name > $out/nix-support/full-name
|
||||
|
@ -22,7 +22,11 @@
|
||||
, clang
|
||||
, llvmPackages
|
||||
, linux-pam
|
||||
, cmake
|
||||
, glib
|
||||
, freetype
|
||||
, rdkafka
|
||||
, udev
|
||||
, ...
|
||||
}:
|
||||
|
||||
@ -61,6 +65,10 @@ in
|
||||
buildInputs = [ dbus ];
|
||||
};
|
||||
|
||||
expat-sys = attrs: {
|
||||
nativeBuildInputs = [ cmake ];
|
||||
};
|
||||
|
||||
foundationdb-sys = attrs: {
|
||||
buildInputs = [ foundationdb ];
|
||||
# needed for 0.4+ release, when the FFI bindings are auto-generated
|
||||
@ -75,6 +83,16 @@ in
|
||||
buildInputs = [ foundationdb ];
|
||||
};
|
||||
|
||||
freetype-sys = attrs: {
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ freetype ];
|
||||
};
|
||||
|
||||
glib-sys = attrs: {
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ glib ];
|
||||
};
|
||||
|
||||
gobject-sys = attrs: {
|
||||
buildInputs = [ dbus-glib ];
|
||||
};
|
||||
@ -112,6 +130,11 @@ in
|
||||
buildInputs = [ dbus ];
|
||||
};
|
||||
|
||||
libudev-sys = attrs: {
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ udev ];
|
||||
};
|
||||
|
||||
nettle-sys = attrs: {
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ nettle clang ];
|
||||
@ -184,6 +207,11 @@ in
|
||||
buildInputs = lib.optional stdenv.isDarwin Security;
|
||||
};
|
||||
|
||||
servo-fontconfig-sys = attrs: {
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ freetype ];
|
||||
};
|
||||
|
||||
thrussh-libsodium = attrs: {
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
buildInputs = [ libsodium ];
|
||||
|
17
pkgs/build-support/setup-hooks/canonicalize-jars.sh
Normal file
17
pkgs/build-support/setup-hooks/canonicalize-jars.sh
Normal file
@ -0,0 +1,17 @@
|
||||
# This setup hook causes the fixup phase to repack all JAR files in a
|
||||
# canonical & deterministic fashion, e.g. resetting mtimes (like with normal
|
||||
# store files) and avoiding impure metadata.
|
||||
|
||||
fixupOutputHooks+=('if [ -z "$dontCanonicalizeJars" -a -e "$prefix" ]; then canonicalizeJarsIn "$prefix"; fi')
|
||||
|
||||
canonicalizeJarsIn() {
|
||||
local dir="$1"
|
||||
header "canonicalizing jars in $dir"
|
||||
dir="$(realpath -sm -- "$dir")"
|
||||
while IFS= read -rd '' f; do
|
||||
canonicalizeJar "$f"
|
||||
done < <(find -- "$dir" -type f -name '*.jar' -print0)
|
||||
stopNest
|
||||
}
|
||||
|
||||
source @canonicalize_jar@
|
@ -465,6 +465,88 @@ rec {
|
||||
'';
|
||||
|
||||
|
||||
/*
|
||||
* Extract a string's references to derivations and paths (its
|
||||
* context) and write them to a text file, removing the input string
|
||||
* itself from the dependency graph. This is useful when you want to
|
||||
* make a derivation depend on the string's references, but not its
|
||||
* contents (to avoid unnecessary rebuilds, for example).
|
||||
*
|
||||
* Note that this only works as intended on Nix >= 2.3.
|
||||
*/
|
||||
writeStringReferencesToFile = string:
|
||||
/*
|
||||
* The basic operation this performs is to copy the string context
|
||||
* from `string' to a second string and wrap that string in a
|
||||
* derivation. However, that alone is not enough, since nothing in the
|
||||
* string refers to the output paths of the derivations/paths in its
|
||||
* context, meaning they'll be considered build-time dependencies and
|
||||
* removed from the wrapper derivation's closure. Putting the
|
||||
* necessary output paths in the new string is however not very
|
||||
* straightforward - the attrset returned by `getContext' contains
|
||||
* only references to derivations' .drv-paths, not their output
|
||||
* paths. In order to "convert" them, we try to extract the
|
||||
* corresponding paths from the original string using regex.
|
||||
*/
|
||||
let
|
||||
# Taken from https://github.com/NixOS/nix/blob/130284b8508dad3c70e8160b15f3d62042fc730a/src/libutil/hash.cc#L84
|
||||
nixHashChars = "0123456789abcdfghijklmnpqrsvwxyz";
|
||||
context = builtins.getContext string;
|
||||
derivations = lib.filterAttrs (n: v: v ? outputs) context;
|
||||
# Objects copied from outside of the store, such as paths and
|
||||
# `builtins.fetch*`ed ones
|
||||
sources = lib.attrNames (lib.filterAttrs (n: v: v ? path) context);
|
||||
packages =
|
||||
lib.mapAttrs'
|
||||
(name: value:
|
||||
{
|
||||
inherit value;
|
||||
name = lib.head (builtins.match "${builtins.storeDir}/[${nixHashChars}]+-(.*)\.drv" name);
|
||||
})
|
||||
derivations;
|
||||
# The syntax of output paths differs between outputs named `out`
|
||||
# and other, explicitly named ones. For explicitly named ones,
|
||||
# the output name is suffixed as `-name`, but `out` outputs
|
||||
# aren't suffixed at all, and thus aren't easily distinguished
|
||||
# from named output paths. Therefore, we find all the named ones
|
||||
# first so we can use them to remove false matches when looking
|
||||
# for `out` outputs (see the definition of `outputPaths`).
|
||||
namedOutputPaths =
|
||||
lib.flatten
|
||||
(lib.mapAttrsToList
|
||||
(name: value:
|
||||
(map
|
||||
(output:
|
||||
lib.filter
|
||||
lib.isList
|
||||
(builtins.split "(${builtins.storeDir}/[${nixHashChars}]+-${name}-${output})" string))
|
||||
(lib.remove "out" value.outputs)))
|
||||
packages);
|
||||
# Only `out` outputs
|
||||
outputPaths =
|
||||
lib.flatten
|
||||
(lib.mapAttrsToList
|
||||
(name: value:
|
||||
if lib.elem "out" value.outputs then
|
||||
lib.filter
|
||||
(x: lib.isList x &&
|
||||
# If the matched path is in `namedOutputPaths`,
|
||||
# it's a partial match of an output path where
|
||||
# the output name isn't `out`
|
||||
lib.all (o: !lib.hasPrefix (lib.head x) o) namedOutputPaths)
|
||||
(builtins.split "(${builtins.storeDir}/[${nixHashChars}]+-${name})" string)
|
||||
else
|
||||
[])
|
||||
packages);
|
||||
allPaths = lib.concatStringsSep "\n" (lib.unique (sources ++ namedOutputPaths ++ outputPaths));
|
||||
allPathsWithContext = builtins.appendContext allPaths context;
|
||||
in
|
||||
if builtins ? getContext then
|
||||
writeText "string-references" allPathsWithContext
|
||||
else
|
||||
writeDirectReferencesToFile (writeText "string-file" string);
|
||||
|
||||
|
||||
/* Print an error message if the file with the specified name and
|
||||
* hash doesn't exist in the Nix store. This function should only
|
||||
* be used by non-redistributable software with an unfree license
|
||||
|
@ -38,11 +38,27 @@ nixosTest {
|
||||
DIRECT_REFS = invokeSamples ./test/invoke-writeDirectReferencesToFile.nix;
|
||||
};
|
||||
};
|
||||
testScript = ''
|
||||
machine.succeed("""
|
||||
${./test.sh} 2>/dev/console
|
||||
""")
|
||||
'';
|
||||
testScript =
|
||||
let
|
||||
sample = import ./test/sample.nix { inherit pkgs; };
|
||||
samplePaths = lib.unique (lib.attrValues sample);
|
||||
sampleText = pkgs.writeText "sample-text" (lib.concatStringsSep "\n" samplePaths);
|
||||
stringReferencesText =
|
||||
pkgs.writeStringReferencesToFile
|
||||
((lib.concatMapStringsSep "fillertext"
|
||||
(d: "${d}")
|
||||
(lib.attrValues sample)) + ''
|
||||
STORE=${builtins.storeDir};\nsystemctl start bar-foo.service
|
||||
'');
|
||||
in ''
|
||||
machine.succeed("""
|
||||
${./test.sh} 2>/dev/console
|
||||
""")
|
||||
machine.succeed("""
|
||||
echo >&2 Testing string references...
|
||||
diff -U3 <(sort ${stringReferencesText}) <(sort ${sampleText})
|
||||
""")
|
||||
'';
|
||||
meta = {
|
||||
license = lib.licenses.mit; # nixpkgs license
|
||||
maintainers = with lib.maintainers; [
|
||||
|
@ -2,6 +2,7 @@
|
||||
let
|
||||
inherit (pkgs)
|
||||
figlet
|
||||
zlib
|
||||
hello
|
||||
writeText
|
||||
;
|
||||
@ -9,8 +10,13 @@ in
|
||||
{
|
||||
hello = hello;
|
||||
figlet = figlet;
|
||||
zlib = zlib;
|
||||
zlib-dev = zlib.dev;
|
||||
norefs = writeText "hi" "hello";
|
||||
norefsDup = writeText "hi" "hello";
|
||||
helloRef = writeText "hi" "hello ${hello}";
|
||||
helloRefDup = writeText "hi" "hello ${hello}";
|
||||
path = ./invoke-writeReferencesToFile.nix;
|
||||
helloFigletRef = writeText "hi" "hello ${hello} ${figlet}";
|
||||
inherit (pkgs)
|
||||
emptyFile
|
||||
|
@ -25,7 +25,8 @@ let
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "corefonts-1";
|
||||
pname = "corefonts";
|
||||
version = "1";
|
||||
|
||||
exes = map ({name, sha256}: fetchurl {
|
||||
url = "mirror://sourceforge/corefonts/${name}32.exe";
|
||||
|
@ -36,7 +36,7 @@
|
||||
, xcbutil
|
||||
, xcbutilwm
|
||||
, xz
|
||||
, buildManPages ? true, ruby
|
||||
, buildManpages ? true, ruby
|
||||
}:
|
||||
|
||||
let
|
||||
@ -52,21 +52,21 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "arcan";
|
||||
version = "0.6.1pre1+unstable=2021-09-05";
|
||||
version = "0.6.1pre1+unstable=2021-10-16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "letoram";
|
||||
repo = "arcan";
|
||||
rev = "525521177e4458199d7a57f8e6d37d41c04a988d";
|
||||
hash = "sha256-RsvTHPIvF9TeOfjPGcArptIiF9g42BfZkVMCbjJcXnE=";
|
||||
rev = "e0182b944152fbcb49f5c16932d38c05a9fb2680";
|
||||
hash = "sha256-4FodFuO51ehvyjH4YaF/xBY9dwA6cP/e6/BvEsH4w7U=";
|
||||
};
|
||||
|
||||
postUnpack = ''
|
||||
(
|
||||
cd $sourceRoot/external/git/
|
||||
cp -a ${letoram-openal-src}/ openal/
|
||||
chmod --recursive 744 openal/
|
||||
)
|
||||
pushd .
|
||||
cd $sourceRoot/external/git/
|
||||
cp -a ${letoram-openal-src}/ openal/
|
||||
chmod --recursive 744 openal/
|
||||
popd
|
||||
'';
|
||||
|
||||
# TODO: work with upstream in order to get rid of these hardcoded paths
|
||||
@ -82,7 +82,7 @@ stdenv.mkDerivation rec {
|
||||
cmake
|
||||
makeWrapper
|
||||
pkg-config
|
||||
] ++ lib.optionals buildManPages [
|
||||
] ++ lib.optionals buildManpages [
|
||||
ruby
|
||||
];
|
||||
|
||||
@ -123,8 +123,11 @@ stdenv.mkDerivation rec {
|
||||
|
||||
# INFO: According to the source code, the manpages need to be generated before
|
||||
# the configure phase
|
||||
preConfigure = lib.optionalString buildManPages ''
|
||||
(cd doc; ruby docgen.rb mangen)
|
||||
preConfigure = lib.optionalString buildManpages ''
|
||||
pushd .
|
||||
cd doc
|
||||
ruby docgen.rb mangen
|
||||
popd
|
||||
'';
|
||||
|
||||
cmakeFlags = [
|
@ -9,25 +9,26 @@ rec {
|
||||
|
||||
# Arcan
|
||||
|
||||
arcan = callPackage ./arcan.nix { };
|
||||
arcan = callPackage ./arcan { };
|
||||
arcan-wrapped = callPackage ./wrapper.nix { };
|
||||
xarcan = callPackage ./xarcan.nix { };
|
||||
xarcan = callPackage ./xarcan { };
|
||||
|
||||
# Appls
|
||||
|
||||
durden = callPackage ./durden.nix { };
|
||||
durden = callPackage ./durden { };
|
||||
durden-wrapped = callPackage ./wrapper.nix {
|
||||
name = "durden-wrapped";
|
||||
appls = [ durden ];
|
||||
};
|
||||
|
||||
pipeworld = callPackage ./pipeworld.nix { };
|
||||
pipeworld = callPackage ./pipeworld { };
|
||||
pipeworld-wrapped = callPackage ./wrapper.nix {
|
||||
name = "pipeworld-wrapped";
|
||||
appls = [ pipeworld ];
|
||||
};
|
||||
|
||||
prio = callPackage ./prio.nix { };
|
||||
# Warning: prio is deprecated; however it works and is useful for testing
|
||||
prio = callPackage ./prio { };
|
||||
prio-wrapped = callPackage ./wrapper.nix {
|
||||
name = "prio-wrapped";
|
||||
appls = [ prio ];
|
||||
|
@ -5,13 +5,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "durden";
|
||||
version = "0.6.1+unstable=2021-07-11";
|
||||
version = "0.6.1+unstable=2021-10-15";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "letoram";
|
||||
repo = pname;
|
||||
rev = "8e0a5c07cade9ad9f606781615c9ebae7b28b6d5";
|
||||
hash = "sha256-4cGuCAeYmmr4ACWt2akVQu2cPqqyE6p+XFaKWcFf3t0=";
|
||||
rev = "ab6cdaf19e87b74895a9ab5e1d005a07ea9396a6";
|
||||
hash = "sha256-FxqY1TUgbD/PjQjTZZerb7ngn5nkcqmVwqPvbRAYaqo=";
|
||||
};
|
||||
|
||||
installPhase = ''
|
@ -24,6 +24,6 @@ symlinkJoin rec {
|
||||
done
|
||||
'';
|
||||
}
|
||||
# TODO: set ARCAN_FONTPATH to a set of fonts that can be provided in a parameter
|
||||
# TODO: set ARCAN_STATEBASEPATH to $HOME/.arcan/resources/savestates/ - possibly
|
||||
# via a suitable script
|
||||
# TODO: set ARCAN_FONTPATH to a set of default-but-configurable fontset
|
||||
|
@ -3,6 +3,7 @@
|
||||
, ninja
|
||||
, gettext
|
||||
, fetchurl
|
||||
, fetchpatch
|
||||
, pkg-config
|
||||
, gtk3
|
||||
, glib
|
||||
@ -46,12 +47,30 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "s50YJUkllbC3TF1qZoaoV/lBnfpMAvgBPCl7yHDibdA=";
|
||||
};
|
||||
|
||||
patches = lib.optionals withPantheon [
|
||||
# Make this respect dark mode settings from Pantheon
|
||||
patches = [
|
||||
# tab-view: Update close button position on startup
|
||||
# https://gitlab.gnome.org/GNOME/epiphany/-/merge_requests/1025
|
||||
(fetchpatch {
|
||||
url = "https://gitlab.gnome.org/GNOME/epiphany/-/commit/6e9d6d3cf7fa7ddf21a70e9816a5cd4767a79523.patch";
|
||||
sha256 = "sha256-lBVliGCIKwTvsYnWjAcmJxhTg1HS/2x4wlOh+4sx/xQ=";
|
||||
})
|
||||
] ++ lib.optionals withPantheon [
|
||||
# Pantheon specific patches for epiphany
|
||||
# https://github.com/elementary/browser
|
||||
# The patch currently differs from upstream (updated for epiphany 40 and 41).
|
||||
./pantheon-dark-style.patch
|
||||
./pantheon-navigation-buttons.patch
|
||||
#
|
||||
# Make this respect dark mode settings from Pantheon
|
||||
# https://github.com/elementary/browser/pull/21
|
||||
# https://github.com/elementary/browser/pull/41
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/elementary/browser/cc17559a7ac6effe593712b4f3d0bbefde6e3b62/dark-style.patch";
|
||||
sha256 = "sha256-RzMUc9P51UN3tRFefzRtMniXR9duOOmLj5eu5gL2TEQ=";
|
||||
})
|
||||
# Patch to unlink nav buttons
|
||||
# https://github.com/elementary/browser/pull/18
|
||||
(fetchpatch {
|
||||
url = "https://raw.githubusercontent.com/elementary/browser/cc17559a7ac6effe593712b4f3d0bbefde6e3b62/navigation-buttons.patch";
|
||||
sha256 = "sha256-G1/JUjn/8DyO9sgL/5Kq205KbTOs4EMi4Vf3cJ8FHXU=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -1,76 +0,0 @@
|
||||
diff --git a/meson.build b/meson.build
|
||||
index de9cbfa850..647f617605 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -92,6 +92,7 @@ iso_codes_dep = dependency('iso-codes', version: '>= 0.35')
|
||||
json_glib_dep = dependency('json-glib-1.0', version: '>= 1.6')
|
||||
libarchive_dep = dependency('libarchive')
|
||||
libdazzle_dep = dependency('libdazzle-1.0', version: '>= 3.37.1')
|
||||
+libgranite_dep = dependency('granite', version: '>= 6.0.0')
|
||||
libhandy_dep = dependency('libhandy-1', version: '>= 1.1.0')
|
||||
libsecret_dep = dependency('libsecret-1', version: '>= 0.19.0')
|
||||
libsoup_dep = dependency('libsoup-2.4', version: '>= 2.48.0')
|
||||
diff --git a/src/ephy-shell.c b/src/ephy-shell.c
|
||||
index 650531da86..b9d1355e86 100644
|
||||
--- a/src/ephy-shell.c
|
||||
+++ b/src/ephy-shell.c
|
||||
@@ -50,6 +50,7 @@
|
||||
|
||||
#include <glib/gi18n.h>
|
||||
#include <gtk/gtk.h>
|
||||
+#include <granite.h>
|
||||
#include <handy.h>
|
||||
|
||||
struct _EphyShell {
|
||||
@@ -483,6 +484,20 @@ run_in_background_set_mapping (const GValue *value,
|
||||
return g_variant_new_boolean (g_variant_get_boolean (var));
|
||||
}
|
||||
|
||||
+static void
|
||||
+ephy_shell_set_prefers_color_scheme (EphyShell *shell)
|
||||
+{
|
||||
+ GtkSettings* gtk_settings = gtk_settings_get_default ();
|
||||
+ GraniteSettings* granite_settings = granite_settings_get_default ();
|
||||
+
|
||||
+ g_object_set (
|
||||
+ gtk_settings,
|
||||
+ "gtk-application-prefer-dark-theme",
|
||||
+ granite_settings_get_prefers_color_scheme (granite_settings) == GRANITE_SETTINGS_COLOR_SCHEME_DARK,
|
||||
+ NULL
|
||||
+ );
|
||||
+}
|
||||
+
|
||||
static void
|
||||
ephy_shell_startup (GApplication *application)
|
||||
{
|
||||
@@ -490,11 +505,18 @@ ephy_shell_startup (GApplication *application)
|
||||
EphyShell *shell = EPHY_SHELL (application);
|
||||
EphyEmbedShellMode mode;
|
||||
GAction *action;
|
||||
+ GraniteSettings* granite_settings = granite_settings_get_default ();
|
||||
|
||||
G_APPLICATION_CLASS (ephy_shell_parent_class)->startup (application);
|
||||
|
||||
hdy_init ();
|
||||
|
||||
+ ephy_shell_set_prefers_color_scheme (shell);
|
||||
+
|
||||
+ g_signal_connect (granite_settings, "notify::prefers-color-scheme",
|
||||
+ G_CALLBACK (ephy_shell_set_prefers_color_scheme), shell
|
||||
+ );
|
||||
+
|
||||
/* If we are under Pantheon set the icon-theme and cursor-theme accordingly. */
|
||||
if (is_desktop_pantheon ()) {
|
||||
GtkSettings *settings = gtk_settings_get_default ();
|
||||
diff --git a/src/meson.build b/src/meson.build
|
||||
index 5bf3eb92ec..d17b1b6d93 100644
|
||||
--- a/src/meson.build
|
||||
+++ b/src/meson.build
|
||||
@@ -74,6 +74,7 @@ libephymain_deps = [
|
||||
gdk_dep,
|
||||
gvdb_dep,
|
||||
libarchive_dep,
|
||||
+ libgranite_dep,
|
||||
libhandy_dep
|
||||
]
|
||||
|
@ -1,12 +0,0 @@
|
||||
diff --git a/src/resources/gtk/action-bar-start.ui b/src/resources/gtk/action-bar-start.ui
|
||||
index e604b9601f..2bfe244d53 100644
|
||||
--- a/src/resources/gtk/action-bar-start.ui
|
||||
+++ b/src/resources/gtk/action-bar-start.ui
|
||||
@@ -7,7 +7,6 @@
|
||||
<property name="visible">True</property>
|
||||
<property name="orientation">horizontal</property>
|
||||
<style>
|
||||
- <class name="linked"/>
|
||||
<class name="navigation-box"/>
|
||||
</style>
|
||||
<child>
|
@ -2,14 +2,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "gnome-shell-extension-EasyScreenCast";
|
||||
version = "unstable-2020-11-25";
|
||||
version = "1.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
# To make it work with gnome 3.38, using effectively: https://github.com/EasyScreenCast/EasyScreenCast/pull/276
|
||||
owner = "Ian2020";
|
||||
owner = "EasyScreenCast";
|
||||
repo = "EasyScreenCast";
|
||||
rev = "b1ab4a999bc7110ecbf68b5fe42c37fa67d7cb0d";
|
||||
sha256 = "s9b0ITKUzgG6XOd1bK7i3mGxfc+T+UHrTZhBp0Ff8zQ=";
|
||||
rev = version;
|
||||
sha256 = "sha256-+lh/hqYC9+DUvLE016KuAY4Ybw8KrqEEG7WG4pUbg2k=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -91,5 +91,15 @@
|
||||
"wireguard-indicator@gregos.me",
|
||||
"wireguard-indicator@atareao.es"
|
||||
]
|
||||
},
|
||||
"41": {
|
||||
"applications-menu": [
|
||||
"apps-menu@gnome-shell-extensions.gcampax.github.com",
|
||||
"Applications_Menu@rmy.pobox.com"
|
||||
],
|
||||
"floating-dock": [
|
||||
"floatingDock@sun.wxg@gmail.com",
|
||||
"floating-dock@nandoferreira_prof@hotmail.com"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -59,8 +59,9 @@ in rec {
|
||||
|
||||
gnome38Extensions = mapUuidNames (produceExtensionsList "38");
|
||||
gnome40Extensions = mapUuidNames (produceExtensionsList "40");
|
||||
gnome41Extensions = mapUuidNames (produceExtensionsList "41");
|
||||
|
||||
gnomeExtensions = lib.trivial.pipe gnome40Extensions [
|
||||
gnomeExtensions = lib.trivial.pipe (gnome40Extensions // gnome41Extensions) [
|
||||
# Apply some custom patches for automatically packaged extensions
|
||||
(callPackage ./extensionOverrides.nix {})
|
||||
# Add all manually packaged extensions
|
||||
|
@ -3,10 +3,21 @@
|
||||
# - Every item from ./collisions.json (for the respective Shell version) should have an entry in here
|
||||
# - Set the value to `null` for filtering (duplicate or unmaintained extensions)
|
||||
# - Sort the entries in order of appearance in the collisions.json
|
||||
# - Make a separate section for each GNOME version. Collisions will come back eventually
|
||||
# as the extensions are updated.
|
||||
{
|
||||
"apps-menu@gnome-shell-extensions.gcampax.github.com" = "applications-menu";
|
||||
"Applications_Menu@rmy.pobox.com" = "frippery-applications-menu";
|
||||
|
||||
"floatingDock@sun.wxg@gmail.com" = "floating-dock-2";
|
||||
"floating-dock@nandoferreira_prof@hotmail.com" = "floating-dock";
|
||||
|
||||
# ############################################################################
|
||||
# These are conflicts for older extensions (i.e. they don't support the latest GNOME version).
|
||||
# Make sure to move them up once they are updated
|
||||
|
||||
# ####### GNOME 40 #######
|
||||
|
||||
"workspace-indicator@gnome-shell-extensions.gcampax.github.com" = "workspace-indicator";
|
||||
"horizontal-workspace-indicator@tty2.io" = "workspace-indicator-2";
|
||||
|
||||
@ -38,23 +49,14 @@
|
||||
"extension-list@tu.berry" = "extension-list";
|
||||
"screen-lock@garciabaameiro.com" = "screen-lock"; # Don't know why they got 'extension-list' as slug
|
||||
|
||||
"floatingDock@sun.wxg@gmail.com" = "floating-dock-2";
|
||||
"floating-dock@nandoferreira_prof@hotmail.com" = "floating-dock";
|
||||
|
||||
# ############################################################################
|
||||
# These are conflicts for 3.38 extensions. They will very probably come back
|
||||
# once more of them support 40.
|
||||
# ####### GNOME 3.38 #######
|
||||
|
||||
# See https://github.com/pbxqdown/gnome-shell-extension-transparent-window/issues/12#issuecomment-800765381
|
||||
#"transparent-window@pbxqdown.github.com" = "transparent-window";
|
||||
#"transparentwindows.mdirshad07" = null;
|
||||
|
||||
#"floatingDock@sun.wxg@gmail.com" = "floating-dock";
|
||||
#"floating-dock@nandoferreira_prof@hotmail.com" = "floating-dock-2";
|
||||
"transparent-window@pbxqdown.github.com" = "transparent-window";
|
||||
"transparentwindows.mdirshad07" = null;
|
||||
|
||||
# That extension is broken because of https://github.com/NixOS/nixpkgs/issues/118612
|
||||
#"flypie@schneegans.github.com" = null;
|
||||
|
||||
"flypie@schneegans.github.com" = null;
|
||||
|
||||
# ############################################################################
|
||||
# Overrides for extensions that were manually packaged in the past but are gradually
|
||||
|
File diff suppressed because one or more lines are too long
@ -17,6 +17,7 @@ import base64
|
||||
supported_versions = {
|
||||
"38": "3.38",
|
||||
"40": "40",
|
||||
"41": "41",
|
||||
}
|
||||
|
||||
|
||||
|
@ -30,13 +30,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "appcenter";
|
||||
version = "3.8.0";
|
||||
version = "3.8.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "elementary";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "07lkdpnjj9pxbq8h794qjiidvnysvzx0132w98r1wg9k7ca170bj";
|
||||
sha256 = "sha256-d7DGyAC8itBxTfuabDPN16W4S4d42s5UPp8AusZfy5k=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -1,6 +1,6 @@
|
||||
From b1e09653d755ca6ffd03a1e3e67750e6bcc2bc6f Mon Sep 17 00:00:00 2001
|
||||
From c1916699cd388cc8d9968127e43ba955471623bf Mon Sep 17 00:00:00 2001
|
||||
From: Bobby Rong <rjl931189261@126.com>
|
||||
Date: Wed, 22 Sep 2021 11:54:48 +0800
|
||||
Date: Wed, 27 Oct 2021 09:33:15 +0800
|
||||
Subject: [PATCH 2/2] Drop homepage banner
|
||||
|
||||
---
|
||||
@ -8,7 +8,7 @@ Subject: [PATCH 2/2] Drop homepage banner
|
||||
1 file changed, 1 insertion(+), 180 deletions(-)
|
||||
|
||||
diff --git a/src/Views/Homepage.vala b/src/Views/Homepage.vala
|
||||
index 576fc02c..80a1d221 100644
|
||||
index 52cb36cc..80a1d221 100644
|
||||
--- a/src/Views/Homepage.vala
|
||||
+++ b/src/Views/Homepage.vala
|
||||
@@ -31,67 +31,12 @@ public class AppCenter.Homepage : AbstractView {
|
||||
@ -193,7 +193,7 @@ index 576fc02c..80a1d221 100644
|
||||
- }
|
||||
- }
|
||||
-
|
||||
- if (!installed && !(package in packages_in_banner) && !package.is_explicit) {
|
||||
- if (!installed && !(package in packages_in_banner)) {
|
||||
- var package_row = new AppCenter.Widgets.ListPackageRowGrid (package);
|
||||
- recently_updated_carousel.add (package_row);
|
||||
- }
|
||||
|
@ -21,7 +21,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "elementary-calculator";
|
||||
version = "1.7.0";
|
||||
version = "1.7.1";
|
||||
|
||||
repoName = "calculator";
|
||||
|
||||
@ -29,7 +29,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "elementary";
|
||||
repo = repoName;
|
||||
rev = version;
|
||||
sha256 = "1kl2iximcmbk8inklb2xav7dp08lp5pn9xxa59327zw13gdy8fkf";
|
||||
sha256 = "sha256-GoQFWhEhUBVLYL1vsIIBMT8pKc0dK/ploiGfUtJAJQU=";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
|
@ -28,7 +28,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "elementary-calendar";
|
||||
version = "6.0.2";
|
||||
version = "6.0.3";
|
||||
|
||||
repoName = "calendar";
|
||||
|
||||
@ -36,13 +36,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "elementary";
|
||||
repo = repoName;
|
||||
rev = version;
|
||||
sha256 = "16xp8gfgpyz9xpjsxm6jlk4skkknj65g0q4x0qvw9sg9f1p6a514";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = "pantheon.${pname}";
|
||||
};
|
||||
sha256 = "sha256-+RQUiJLuCIbmcbtsOCfF9HYFrxtldZMbg2vg/a/IOaY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -78,6 +72,12 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs meson/post_install.py
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = "pantheon.${pname}";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Desktop calendar app designed for elementary OS";
|
||||
homepage = "https://github.com/elementary/calendar";
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "elementary-camera";
|
||||
version = "6.0.0";
|
||||
version = "6.0.1";
|
||||
|
||||
repoName = "camera";
|
||||
|
||||
@ -33,13 +33,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "elementary";
|
||||
repo = repoName;
|
||||
rev = version;
|
||||
sha256 = "1z5c6pkc7psglxwzby5idsdxvplpi28ckjxrwdngnr22knfdcgag";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = "pantheon.${pname}";
|
||||
};
|
||||
sha256 = "sha256-OdBinryF6XTcvtY4A1wdDVazjf/VritEGF97ts6d4RY=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -75,6 +69,12 @@ stdenv.mkDerivation rec {
|
||||
patchShebangs meson/post_install.py
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
updateScript = nix-update-script {
|
||||
attrPath = "pantheon.${pname}";
|
||||
};
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Camera app designed for elementary OS";
|
||||
homepage = "https://github.com/elementary/camera";
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user