···132132 Nextcloud supports [server-side encryption (SSE)](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_configuration.html).
133133 This is not an end-to-end encryption, but can be used to encrypt files that will be persisted
134134 to external storage such as S3. Please note that this won't work anymore when using OpenSSL 3
135135- for PHP's openssl extension because this is implemented using the legacy cipher RC4.
135135+ for PHP's openssl extension and **Nextcloud 25 or older** because this is implemented using the
136136+ legacy cipher RC4. For Nextcloud26 this isn't relevant anymore, because Nextcloud has an RC4 implementation
137137+ written in native PHP and thus doesn't need `ext-openssl` for that anymore.
136138 If [](#opt-system.stateVersion) is *above* `22.05`,
137139 this is disabled by default. To turn it on again and for further information please refer to
138140 [](#opt-services.nextcloud.enableBrokenCiphersForSSE).
+5-1
nixos/modules/services/web-apps/nextcloud.nix
···204204 package = mkOption {
205205 type = types.package;
206206 description = lib.mdDoc "Which package to use for the Nextcloud instance.";
207207- relatedPackages = [ "nextcloud24" "nextcloud25" "nextcloud26" ];
207207+ relatedPackages = [ "nextcloud25" "nextcloud26" ];
208208 };
209209 phpPackage = mkOption {
210210 type = types.package;
···712712 See <https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/encryption_configuration.html#disabling-encryption> on how to achieve this.
713713714714 For more context, here is the implementing pull request: https://github.com/NixOS/nixpkgs/pull/198470
715715+ '')
716716+ ++ (optional (cfg.enableBrokenCiphersForSSE && versionAtLeast cfg.package.version "26") ''
717717+ Nextcloud26 supports RC4 without requiring legacy OpenSSL, so
718718+ `services.nextcloud.enableBrokenCiphersForSSE` can be set to `false`.
715719 '');
716720717721 services.nextcloud.package = with pkgs;
···55555656 };
57575858+ selectPartitionTableLayout = { useEFIBoot, useDefaultFilesystems }:
5959+ if useDefaultFilesystems then
6060+ if useEFIBoot then "efi" else "legacy"
6161+ else "none";
6262+5863 driveCmdline = idx: { file, driveExtraOpts, deviceExtraOpts, ... }:
5964 let
6065 drvId = "drive${toString idx}";
···98103 addDeviceNames =
99104 imap1 (idx: drive: drive // { device = driveDeviceName idx; });
100105101101-102106 # Shell script to start the VM.
103107 startVM =
104108 ''
···111115 NIX_DISK_IMAGE=$(readlink -f "''${NIX_DISK_IMAGE:-${toString config.virtualisation.diskImage}}") || test -z "$NIX_DISK_IMAGE"
112116113117 if test -n "$NIX_DISK_IMAGE" && ! test -e "$NIX_DISK_IMAGE"; then
114114- ${qemu}/bin/qemu-img create -f qcow2 "$NIX_DISK_IMAGE" \
115115- ${toString config.virtualisation.diskSize}M
118118+ echo "Disk image do not exist, creating the virtualisation disk image..."
119119+ # If we are using a bootloader and default filesystems layout.
120120+ # We have to reuse the system image layout as a backing image format (CoW)
121121+ # So we can write on the top of it.
122122+123123+ # If we are not using the default FS layout, potentially, we are interested into
124124+ # performing operations in postDeviceCommands or at early boot on the raw device.
125125+ # We can still boot through QEMU direct kernel boot feature.
126126+127127+ # CoW prevent size to be attributed to an image.
128128+ # FIXME: raise this issue to upstream.
129129+ ${qemu}/bin/qemu-img create \
130130+ ${concatStringsSep " \\\n" ([ "-f qcow2" ]
131131+ ++ optional (cfg.useBootLoader && cfg.useDefaultFilesystems) "-F qcow2 -b ${systemImage}/nixos.qcow2"
132132+ ++ optional (!(cfg.useBootLoader && cfg.useDefaultFilesystems)) "-o size=${toString config.virtualisation.diskSize}M"
133133+ ++ [ "$NIX_DISK_IMAGE" ])}
134134+ echo "Virtualisation disk image created."
116135 fi
117136118137 # Create a directory for storing temporary data of the running VM.
···152171153172 ${lib.optionalString cfg.useBootLoader
154173 ''
155155- if ${if !cfg.persistBootDevice then "true" else "! test -e $TMPDIR/disk.img"}; then
156156- # Create a writable copy/snapshot of the boot disk.
157157- # A writable boot disk can be booted from automatically.
158158- ${qemu}/bin/qemu-img create -f qcow2 -F qcow2 -b ${bootDisk}/disk.img "$TMPDIR/disk.img"
159159- fi
160160-161161- NIX_EFI_VARS=$(readlink -f "''${NIX_EFI_VARS:-${cfg.efiVars}}")
174174+ NIX_EFI_VARS=$(readlink -f "''${NIX_EFI_VARS:-${config.system.name}-efi-vars.fd}")
162175163176 ${lib.optionalString cfg.useEFIBoot
164177 ''
165178 # VM needs writable EFI vars
166179 if ! test -e "$NIX_EFI_VARS"; then
167167- cp ${bootDisk}/efi-vars.fd "$NIX_EFI_VARS"
180180+ cp ${systemImage}/efi-vars.fd "$NIX_EFI_VARS"
168181 chmod 0644 "$NIX_EFI_VARS"
169182 fi
170183 ''}
···200213201214 regInfo = pkgs.closureInfo { rootPaths = config.virtualisation.additionalPaths; };
202215203203-204204- # Generate a hard disk image containing a /boot partition and GRUB
205205- # in the MBR. Used when the `useBootLoader' option is set.
206206- # Uses `runInLinuxVM` to create the image in a throwaway VM.
207207- # See note [Disk layout with `useBootLoader`].
208208- # FIXME: use nixos/lib/make-disk-image.nix.
209209- bootDisk =
210210- pkgs.vmTools.runInLinuxVM (
211211- pkgs.runCommand "nixos-boot-disk"
212212- { preVM =
213213- ''
214214- mkdir $out
215215- diskImage=$out/disk.img
216216- ${qemu}/bin/qemu-img create -f qcow2 $diskImage "120M"
217217- ${lib.optionalString cfg.useEFIBoot ''
218218- efiVars=$out/efi-vars.fd
219219- cp ${cfg.efi.variables} $efiVars
220220- chmod 0644 $efiVars
221221- ''}
222222- '';
223223- buildInputs = [ pkgs.util-linux ];
224224- QEMU_OPTS = "-nographic -serial stdio -monitor none"
225225- + lib.optionalString cfg.useEFIBoot (
226226- " -drive if=pflash,format=raw,unit=0,readonly=on,file=${cfg.efi.firmware}"
227227- + " -drive if=pflash,format=raw,unit=1,file=$efiVars");
228228- }
229229- ''
230230- # Create a /boot EFI partition with 120M and arbitrary but fixed GUIDs for reproducibility
231231- ${pkgs.gptfdisk}/bin/sgdisk \
232232- --set-alignment=1 --new=1:34:2047 --change-name=1:BIOSBootPartition --typecode=1:ef02 \
233233- --set-alignment=512 --largest-new=2 --change-name=2:EFISystem --typecode=2:ef00 \
234234- --attributes=1:set:1 \
235235- --attributes=2:set:2 \
236236- --disk-guid=97FD5997-D90B-4AA3-8D16-C1723AEA73C1 \
237237- --partition-guid=1:1C06F03B-704E-4657-B9CD-681A087A2FDC \
238238- --partition-guid=2:970C694F-AFD0-4B99-B750-CDB7A329AB6F \
239239- --hybrid 2 \
240240- --recompute-chs /dev/vda
241241-242242- ${optionalString (config.boot.loader.grub.device != "/dev/vda")
243243- # In this throwaway VM, we only have the /dev/vda disk, but the
244244- # actual VM described by `config` (used by `switch-to-configuration`
245245- # below) may set `boot.loader.grub.device` to a different device
246246- # that's nonexistent in the throwaway VM.
247247- # Create a symlink for that device, so that the `grub-install`
248248- # by `switch-to-configuration` will hit /dev/vda anyway.
249249- ''
250250- ln -s /dev/vda ${config.boot.loader.grub.device}
251251- ''
252252- }
253253-254254- ${pkgs.dosfstools}/bin/mkfs.fat -F16 /dev/vda2
255255- export MTOOLS_SKIP_CHECK=1
256256- ${pkgs.mtools}/bin/mlabel -i /dev/vda2 ::boot
257257-258258- # Mount /boot; load necessary modules first.
259259- ${pkgs.kmod}/bin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_cp437.ko.xz || true
260260- ${pkgs.kmod}/bin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_iso8859-1.ko.xz || true
261261- ${pkgs.kmod}/bin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/fat.ko.xz || true
262262- ${pkgs.kmod}/bin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/vfat.ko.xz || true
263263- ${pkgs.kmod}/bin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/efivarfs/efivarfs.ko.xz || true
264264- mkdir /boot
265265- mount /dev/vda2 /boot
266266-267267- ${optionalString config.boot.loader.efi.canTouchEfiVariables ''
268268- mount -t efivarfs efivarfs /sys/firmware/efi/efivars
269269- ''}
270270-271271- # This is needed for GRUB 0.97, which doesn't know about virtio devices.
272272- mkdir /boot/grub
273273- echo '(hd0) /dev/vda' > /boot/grub/device.map
274274-275275- # This is needed for systemd-boot to find ESP, and udev is not available here to create this
276276- mkdir -p /dev/block
277277- ln -s /dev/vda2 /dev/block/254:2
278278-279279- # Set up system profile (normally done by nixos-rebuild / nix-env --set)
280280- mkdir -p /nix/var/nix/profiles
281281- ln -s ${config.system.build.toplevel} /nix/var/nix/profiles/system-1-link
282282- ln -s /nix/var/nix/profiles/system-1-link /nix/var/nix/profiles/system
283283-284284- # Install bootloader
285285- touch /etc/NIXOS
286286- export NIXOS_INSTALL_BOOTLOADER=1
287287- ${config.system.build.toplevel}/bin/switch-to-configuration boot
288288-289289- umount /boot
290290- '' # */
291291- );
216216+ # System image is akin to a complete NixOS install with
217217+ # a boot partition and root partition.
218218+ systemImage = import ../../lib/make-disk-image.nix {
219219+ inherit pkgs config lib;
220220+ additionalPaths = [ regInfo ];
221221+ format = "qcow2";
222222+ onlyNixStore = false;
223223+ partitionTableType = selectPartitionTableLayout { inherit (cfg) useDefaultFilesystems useEFIBoot; };
224224+ # Bootloader should be installed on the system image only if we are booting through bootloaders.
225225+ # Though, if a user is not using our default filesystems, it is possible to not have any ESP
226226+ # or a strange partition table that's incompatible with GRUB configuration.
227227+ # As a consequence, this may lead to disk image creation failures.
228228+ # To avoid this, we prefer to let the user find out about how to install the bootloader on its ESP/disk.
229229+ # Usually, this can be through building your own disk image.
230230+ # TODO: If a user is interested into a more fine grained heuristic for `installBootLoader`
231231+ # by examining the actual contents of `cfg.fileSystems`, please send a PR.
232232+ installBootLoader = cfg.useBootLoader && cfg.useDefaultFilesystems;
233233+ touchEFIVars = cfg.useEFIBoot;
234234+ diskSize = "auto";
235235+ additionalSpace = "0M";
236236+ copyChannel = false;
237237+ OVMF = cfg.efi.OVMF;
238238+ };
292239293240 storeImage = import ../../lib/make-disk-image.nix {
294241 inherit pkgs config lib;
···297244 onlyNixStore = true;
298245 partitionTableType = "none";
299246 installBootLoader = false;
247247+ touchEFIVars = false;
300248 diskSize = "auto";
301249 additionalSpace = "0M";
302250 copyChannel = false;
303251 };
304252253253+ bootConfiguration =
254254+ if cfg.useDefaultFilesystems
255255+ then
256256+ if cfg.useBootLoader
257257+ then
258258+ if cfg.useEFIBoot then "efi_bootloading_with_default_fs"
259259+ else "legacy_bootloading_with_default_fs"
260260+ else
261261+ "direct_boot_with_default_fs"
262262+ else
263263+ "custom";
264264+ suggestedRootDevice = {
265265+ "efi_bootloading_with_default_fs" = "${cfg.bootLoaderDevice}2";
266266+ "legacy_bootloading_with_default_fs" = "${cfg.bootLoaderDevice}1";
267267+ "direct_boot_with_default_fs" = cfg.bootLoaderDevice;
268268+ # This will enforce a NixOS module type checking error
269269+ # to ask explicitly the user to set a rootDevice.
270270+ # As it will look like `rootDevice = lib.mkDefault null;` after
271271+ # all "computations".
272272+ "custom" = null;
273273+ }.${bootConfiguration};
305274in
306275307276{
308277 imports = [
309278 ../profiles/qemu-guest.nix
310279 (mkRenamedOptionModule [ "virtualisation" "pathsInNixDB" ] [ "virtualisation" "additionalPaths" ])
280280+ (mkRemovedOptionModule [ "virtualisation" "bootDevice" ] "This option was renamed to `virtualisation.rootDevice`, as it was incorrectly named and misleading. Take the time to review what you want to do and look at the new options like `virtualisation.{bootLoaderDevice, bootPartition}`, open an issue in case of issues.")
281281+ (mkRemovedOptionModule [ "virtualisation" "efiVars" ] "This option was removed, it is possible to provide a template UEFI variable with `virtualisation.efi.variables` ; if this option is important to you, open an issue")
282282+ (mkRemovedOptionModule [ "virtualisation" "persistBootDevice" ] "Boot device is always persisted if you use a bootloader through the root disk image ; if this does not work for your usecase, please examine carefully what `virtualisation.{bootDevice, rootDevice, bootPartition}` options offer you and open an issue explaining your need.`")
311283 ];
312284313285 options = {
···362334 '';
363335 };
364336365365- virtualisation.bootDevice =
337337+ virtualisation.bootLoaderDevice =
366338 mkOption {
367339 type = types.path;
340340+ default = lookupDriveDeviceName "root" cfg.qemu.drives;
341341+ defaultText = literalExpression ''lookupDriveDeviceName "root" cfg.qemu.drives'';
368342 example = "/dev/vda";
369343 description =
370344 lib.mdDoc ''
371371- The disk to be used for the root filesystem.
345345+ The disk to be used for the boot filesystem.
346346+ By default, it is the same disk as the root filesystem.
347347+ '';
348348+ };
349349+350350+ virtualisation.bootPartition =
351351+ mkOption {
352352+ type = types.nullOr types.path;
353353+ default = if cfg.useEFIBoot then "${cfg.bootLoaderDevice}1" else null;
354354+ defaultText = literalExpression ''if cfg.useEFIBoot then "''${cfg.bootLoaderDevice}1" else null'';
355355+ example = "/dev/vda1";
356356+ description =
357357+ lib.mdDoc ''
358358+ The boot partition to be used to mount /boot filesystem.
359359+ In legacy boots, this should be null.
360360+ By default, in EFI boot, it is the first partition of the boot device.
372361 '';
373362 };
374363375375- virtualisation.persistBootDevice =
364364+ virtualisation.rootDevice =
376365 mkOption {
377377- type = types.bool;
378378- default = false;
366366+ type = types.nullOr types.path;
367367+ example = "/dev/vda2";
379368 description =
380369 lib.mdDoc ''
381381- If useBootLoader is specified, whether to recreate the boot device
382382- on each instantiaton or allow it to persist.
383383- '';
370370+ The disk or partition to be used for the root filesystem.
371371+ By default (read the source code for more details):
372372+373373+ - under EFI with a bootloader: 2nd partition of the boot disk
374374+ - in legacy boot with a bootloader: 1st partition of the boot disk
375375+ - in direct boot (i.e. without a bootloader): whole disk
376376+377377+ In case you are not using a default boot device or a default filesystem, you have to set explicitly your root device.
378378+ '';
384379 };
385380386381 virtualisation.emptyDiskImages =
···749744 };
750745751746 virtualisation.efi = {
747747+ OVMF = mkOption {
748748+ type = types.package;
749749+ default = (pkgs.OVMF.override {
750750+ secureBoot = cfg.useSecureBoot;
751751+ }).fd;
752752+ defaultText = ''(pkgs.OVMF.override {
753753+ secureBoot = cfg.useSecureBoot;
754754+ }).fd'';
755755+ description =
756756+ lib.mdDoc "OVMF firmware package, defaults to OVMF configured with secure boot if needed.";
757757+ };
758758+752759 firmware = mkOption {
753760 type = types.path;
754754- default = pkgs.OVMF.firmware;
755755- defaultText = literalExpression "pkgs.OVMF.firmware";
761761+ default = cfg.efi.OVMF.firmware;
762762+ defaultText = literalExpression "cfg.efi.OVMF.firmware";
756763 description =
757764 lib.mdDoc ''
758765 Firmware binary for EFI implementation, defaults to OVMF.
···761768762769 variables = mkOption {
763770 type = types.path;
764764- default = pkgs.OVMF.variables;
765765- defaultText = literalExpression "pkgs.OVMF.variables";
771771+ default = cfg.efi.OVMF.variables;
772772+ defaultText = literalExpression "cfg.efi.OVMF.variables";
766773 description =
767774 lib.mdDoc ''
768775 Platform-specific flash binary for EFI variables, implementation-dependent to the EFI firmware.
···786793 '';
787794 };
788795789789- virtualisation.efiVars =
796796+ virtualisation.useSecureBoot =
790797 mkOption {
791791- type = types.str;
792792- default = "./${config.system.name}-efi-vars.fd";
793793- defaultText = literalExpression ''"./''${config.system.name}-efi-vars.fd"'';
798798+ type = types.bool;
799799+ default = false;
794800 description =
795801 lib.mdDoc ''
796796- Path to nvram image containing UEFI variables. The will be created
797797- on startup if it does not exist.
802802+ Enable Secure Boot support in the EFI firmware.
798803 '';
799804 };
805805+800806801807 virtualisation.bios =
802808 mkOption {
···853859 ${opt.writableStore} = false;
854860 '';
855861856856- # Note [Disk layout with `useBootLoader`]
857857- #
858858- # If `useBootLoader = true`, we configure 2 drives:
859859- # `/dev/?da` for the root disk, and `/dev/?db` for the boot disk
860860- # which has the `/boot` partition and the boot loader.
861861- # Concretely:
862862- #
863863- # * The second drive's image `disk.img` is created in `bootDisk = ...`
864864- # using a throwaway VM. Note that there the disk is always `/dev/vda`,
865865- # even though in the final VM it will be at `/dev/*b`.
866866- # * The disks are attached in `virtualisation.qemu.drives`.
867867- # Their order makes them appear as devices `a`, `b`, etc.
868868- # * `fileSystems."/boot"` is adjusted to be on device `b`.
869869- # * The disk.img is recreated each time the VM is booted unless
870870- # virtualisation.persistBootDevice is set.
871871-872872- # If `useBootLoader`, GRUB goes to the second disk, see
873873- # note [Disk layout with `useBootLoader`].
874874- boot.loader.grub.device = mkVMOverride (
875875- if cfg.useBootLoader
876876- then driveDeviceName 2 # second disk
877877- else cfg.bootDevice
878878- );
862862+ # In UEFI boot, we use a EFI-only partition table layout, thus GRUB will fail when trying to install
863863+ # legacy and UEFI. In order to avoid this, we have to put "nodev" to force UEFI-only installs.
864864+ # Otherwise, we set the proper bootloader device for this.
865865+ # FIXME: make a sense of this mess wrt to multiple ESP present in the system, probably use boot.efiSysMountpoint?
866866+ boot.loader.grub.device = mkVMOverride (if cfg.useEFIBoot then "nodev" else cfg.bootLoaderDevice);
879867 boot.loader.grub.gfxmodeBios = with cfg.resolution; "${toString x}x${toString y}";
868868+ virtualisation.rootDevice = mkDefault suggestedRootDevice;
880869881870 boot.initrd.kernelModules = optionals (cfg.useNixStoreImage && !cfg.writableStore) [ "erofs" ];
882871···890879 ''
891880 # If the disk image appears to be empty, run mke2fs to
892881 # initialise.
893893- FSTYPE=$(blkid -o value -s TYPE ${cfg.bootDevice} || true)
894894- PARTTYPE=$(blkid -o value -s PTTYPE ${cfg.bootDevice} || true)
882882+ FSTYPE=$(blkid -o value -s TYPE ${cfg.rootDevice} || true)
883883+ PARTTYPE=$(blkid -o value -s PTTYPE ${cfg.rootDevice} || true)
895884 if test -z "$FSTYPE" -a -z "$PARTTYPE"; then
896896- mke2fs -t ext4 ${cfg.bootDevice}
885885+ mke2fs -t ext4 ${cfg.rootDevice}
897886 fi
898887 '';
899888···938927 boot.initrd.availableKernelModules =
939928 optional cfg.writableStore "overlay"
940929 ++ optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx";
941941-942942- virtualisation.bootDevice = mkDefault (driveDeviceName 1);
943930944931 virtualisation.additionalPaths = [ config.system.build.toplevel ];
945932···997984 ])
998985 (mkIf cfg.useEFIBoot [
999986 "-drive if=pflash,format=raw,unit=0,readonly=on,file=${cfg.efi.firmware}"
10001000- "-drive if=pflash,format=raw,unit=1,file=$NIX_EFI_VARS"
987987+ "-drive if=pflash,format=raw,unit=1,readonly=off,file=$NIX_EFI_VARS"
1001988 ])
1002989 (mkIf (cfg.bios != null) [
1003990 "-bios ${cfg.bios}/bios.bin"
···10131000 file = ''"$NIX_DISK_IMAGE"'';
10141001 driveExtraOpts.cache = "writeback";
10151002 driveExtraOpts.werror = "report";
10031003+ deviceExtraOpts.bootindex = "1";
10161004 }])
10171005 (mkIf cfg.useNixStoreImage [{
10181006 name = "nix-store";
10191007 file = ''"$TMPDIR"/store.img'';
10201020- deviceExtraOpts.bootindex = if cfg.useBootLoader then "3" else "2";
10081008+ deviceExtraOpts.bootindex = "2";
10211009 driveExtraOpts.format = if cfg.writableStore then "qcow2" else "raw";
10221010 }])
10231023- (mkIf cfg.useBootLoader [
10241024- # The order of this list determines the device names, see
10251025- # note [Disk layout with `useBootLoader`].
10261026- {
10271027- name = "boot";
10281028- file = ''"$TMPDIR"/disk.img'';
10291029- driveExtraOpts.media = "disk";
10301030- deviceExtraOpts.bootindex = "1";
10311031- }
10321032- ])
10331011 (imap0 (idx: _: {
10341012 file = "$(pwd)/empty${toString idx}.qcow2";
10351013 driveExtraOpts.werror = "report";
···10651043 device = "tmpfs";
10661044 fsType = "tmpfs";
10671045 } else {
10681068- device = cfg.bootDevice;
10461046+ device = cfg.rootDevice;
10691047 fsType = "ext4";
10701048 autoFormat = true;
10711049 });
···10861064 options = [ "mode=0755" ];
10871065 neededForBoot = true;
10881066 };
10891089- # see note [Disk layout with `useBootLoader`]
10901090- "/boot" = lib.mkIf cfg.useBootLoader {
10911091- device = "${lookupDriveDeviceName "boot" cfg.qemu.drives}2"; # 2 for e.g. `vdb2`, as created in `bootDisk`
10671067+ "/boot" = lib.mkIf (cfg.useBootLoader && cfg.bootPartition != null) {
10681068+ device = cfg.bootPartition; # 1 for e.g. `vda1`, as created in `systemImage`
10921069 fsType = "vfat";
10931070 noCheck = true; # fsck fails on a r/o filesystem
10941071 };
+2-2
nixos/tests/bootspec.nix
···108108 machine.start()
109109 machine.wait_for_unit("multi-user.target")
110110111111- machine.succeed("test -e /run/current-system/bootspec/boot.json")
111111+ machine.succeed("test -e /run/current-system/boot.json")
112112113113- bootspec = json.loads(machine.succeed("jq -r '.v1' /run/current-system/bootspec/boot.json"))
113113+ bootspec = json.loads(machine.succeed("jq -r '.v1' /run/current-system/boot.json"))
114114115115 assert all(key in bootspec for key in ('initrd', 'initrdSecrets')), "Bootspec should contain initrd or initrdSecrets field when initrd is enabled"
116116 '';
+1-1
nixos/tests/hibernate.nix
···6363 # Small root disk for installer
6464 512
6565 ];
6666- virtualisation.bootDevice = "/dev/vdb";
6666+ virtualisation.rootDevice = "/dev/vdb";
6767 };
6868 };
6969
···316316 # installer. This ensures the target disk (/dev/vda) is
317317 # the same during and after installation.
318318 virtualisation.emptyDiskImages = [ 512 ];
319319- virtualisation.bootDevice =
319319+ virtualisation.rootDevice =
320320 if grubVersion == 1 then "/dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive2" else "/dev/vdb";
321321+ virtualisation.bootLoaderDevice = "/dev/vda";
321322 virtualisation.qemu.diskInterface =
322323 if grubVersion == 1 then "scsi" else "virtio";
323324
+4-4
nixos/tests/luks.nix
···1818 boot-luks.configuration = {
1919 boot.initrd.luks.devices = lib.mkVMOverride {
2020 # We have two disks and only type one password - key reuse is in place
2121- cryptroot.device = "/dev/vdc";
2222- cryptroot2.device = "/dev/vdd";
2121+ cryptroot.device = "/dev/vdb";
2222+ cryptroot2.device = "/dev/vdc";
2323 };
2424- virtualisation.bootDevice = "/dev/mapper/cryptroot";
2424+ virtualisation.rootDevice = "/dev/mapper/cryptroot";
2525 };
2626 boot-luks-custom-keymap.configuration = lib.mkMerge [
2727 boot-luks.configuration
···3737 testScript = ''
3838 # Create encrypted volume
3939 machine.wait_for_unit("multi-user.target")
4040+ machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdb -")
4041 machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdc -")
4141- machine.succeed("echo -n supersecret | cryptsetup luksFormat -q --iter-time=1 /dev/vdd -")
42424343 # Boot from the encrypted disk
4444 machine.succeed("bootctl set-default nixos-generation-1-specialisation-boot-luks.conf")
···130130 # Non-zero wait status: 139
131131 rm t/0601_Dialog_Scan.t
132132133133+ # Disable a test which failed due to convert returning an exit value of 1
134134+ # convert: negative or zero image size `/build/KL5kTVnNCi/YfgegFM53e.pnm' @ error/resize.c/ResizeImage/3743.
135135+ # *** unhandled exception in callback:
136136+ # *** "convert" unexpectedly returned exit value 1 at t/357_unpaper_rtl.t line 63.
137137+ rm t/357_unpaper_rtl.t
138138+133139 xvfb-run -s '-screen 0 800x600x24' \
134140 make test
135141 '';
···4747# Those pieces of software we entirely ignore upstream's handling of, and just
4848# make sure they're in the path if desired.
4949let
5050- k3sVersion = "1.26.3+k3s1"; # k3s git tag
5151- k3sCommit = "01ea3ff27be0b04f945179171cec5a8e11a14f7b"; # k3s git commit at the above version
5252- k3sRepoSha256 = "1wpciikmr4l2nw92i3wlz301vxjiyz8rlzkn8jhzcaiifykc565s";
5353- k3sVendorSha256 = "sha256-1HFLj3zSHV7RvA0fsQ/dPzwnkSRqE9TXXDA4m8OhwZE=";
5050+ k3sVersion = "1.26.4+k3s1"; # k3s git tag
5151+ k3sCommit = "8d0255af07e95b841952563253d27b0d10bd72f0"; # k3s git commit at the above version
5252+ k3sRepoSha256 = "0qlszdnlsvj3hzx2p0wl3zhaw908w8a62z6vlf2g69a3c75f55cs";
5353+ k3sVendorSha256 = "sha256-JXTsZYtTspu/pWMRSS2BcegktawBJ6BK7YEKbz1J/ao=";
54545555 # nix generated by update.sh
5656 # Based on the traefik charts here: https://github.com/k3s-io/k3s/blob/d71ab6317e22dd34673faa307a412a37a16767f6/scripts/download#L29-L32
···11{ stdenv
22, lib
33-, buildFHSEnv
33+, buildFHSEnvChroot
44, fetchurl
55, gsettings-desktop-schemas
66, makeDesktopItem
77, makeWrapper
88+, opensc
89, writeTextDir
910, configText ? ""
1011}:
···5354 # This library causes the program to core-dump occasionally. Use ours instead.
5455 rm -r $out/lib/vmware/view/crtbora
55565757+ # This opensc library is required to support smartcard authentication during the
5858+ # initial connection to Horizon.
5959+ mkdir $out/lib/vmware/view/pkcs11
6060+ ln -s ${opensc}/lib/pkcs11/opensc-pkcs11.so $out/lib/vmware/view/pkcs11/libopenscpkcs11.so
6161+5662 ${lib.concatMapStrings wrapBinCommands bins}
5763 '';
5864 };
59656060- vmwareFHSUserEnv = name: buildFHSEnv {
6666+ vmwareFHSUserEnv = name: buildFHSEnvChroot {
6167 inherit name;
62686369 runScript = "${vmwareHorizonClientFiles}/bin/${name}_wrapper";
+10-15
pkgs/applications/radio/uhd/default.nix
···1111# requires numpy
1212, enablePythonApi ? false
1313, python3
1414+, buildPackages
1415, enableExamples ? false
1516, enableUtils ? false
1616-, enableSim ? false
1717, libusb1
1818, enableDpdk ? false
1919, dpdk
···3434let
3535 onOffBool = b: if b then "ON" else "OFF";
3636 inherit (lib) optionals;
3737+ # Later used in pythonEnv generation. Python + mako are always required for the build itself but not necessary for runtime.
3838+ pythonEnvArg = (ps: with ps; [ mako ]
3939+ ++ optionals (enablePythonApi) [ numpy setuptools ]
4040+ ++ optionals (enableUtils) [ requests six ]
4141+ );
3742in
38433944stdenv.mkDerivation rec {
···8489 ++ [ (lib.optionalString stdenv.isAarch32 "-DCMAKE_CXX_FLAGS=-Wno-psabi") ]
8590 ;
86918787- # Python + mako are always required for the build itself but not necessary for runtime.
8888- pythonEnv = python3.withPackages (ps: with ps; [ mako ]
8989- ++ optionals (enablePythonApi) [ numpy setuptools ]
9090- ++ optionals (enableUtils) [ requests six ]
9191- );
9292+ pythonEnv = python3.withPackages pythonEnvArg;
92939394 nativeBuildInputs = [
9495 cmake
9596 pkg-config
9696- python3
9797- ]
9898- # If both enableLibuhd_Python_api and enableUtils are off, we don't need
9999- # pythonEnv in buildInputs as it's a 'build' dependency and not a runtime
100100- # dependency
101101- ++ optionals (!enablePythonApi && !enableUtils) [ pythonEnv ]
102102- ;
9797+ # Present both here and in buildInputs for cross compilation.
9898+ (buildPackages.python3.withPackages pythonEnvArg)
9999+ ];
103100 buildInputs = [
104101 boost
105102 libusb1
···122119 patches = [
123120 # Disable tests that fail in the sandbox
124121 ./no-adapter-tests.patch
125125- ] ++ lib.optionals stdenv.isAarch32 [
126126- ./neon.patch
127122 ];
128123129124 postPhases = [ "installFirmware" "removeInstalledTests" ]
-19
pkgs/applications/radio/uhd/neon.patch
···11-Description: When building for armhf, enable NEON
22- NEON is part of the armhf baseline, so this will always be enabled on
33- armhf.
44-Author: Paul Tagliamonte <paultag@debian.org>
55-Bug-Debian: https://bugs.debian.org/873608
66-Origin: vendor
77-Last-Update: 2017-08-29
88-99---- uhd-3.10.2.0.orig/host/lib/convert/CMakeLists.txt
1010-+++ uhd-3.10.2.0/host/lib/convert/CMakeLists.txt
1111-@@ -67,6 +67,8 @@ IF(HAVE_ARM_NEON_H AND (${CMAKE_SIZEOF_V
1212- ${CMAKE_CURRENT_SOURCE_DIR}/convert_with_neon.cpp
1313- ${CMAKE_CURRENT_SOURCE_DIR}/convert_neon.S
1414- )
1515-+
1616-+ SET ( CMAKE_CXX_FLAGS "-mfpu=neon" )
1717- ENDIF()
1818-1919- ########################################################################
···3939 };
4040 };
4141in {
4242- nextcloud24 = generic {
4343- version = "24.0.11";
4444- sha256 = "sha256-ipsg4rulhRnatEW9VwUJLvOEtX5ZiK7MXK3AU8Q9qIo=";
4545- };
4242+ nextcloud24 = throw ''
4343+ Nextcloud v24 has been removed from `nixpkgs` as the support for is dropped
4444+ by upstream in 2023-04. Please upgrade to at least Nextcloud v25 by declaring
4545+4646+ services.nextcloud.package = pkgs.nextcloud25;
4747+4848+ in your NixOS config.
4949+5050+ WARNING: if you were on Nextcloud 23 you have to upgrade to Nextcloud 24
5151+ first on 22.11 because Nextcloud doesn't support upgrades across multiple major versions!
5252+ '';
46534754 nextcloud25 = generic {
4848- version = "25.0.5";
4949- sha256 = "sha256-xtxjLYPGK9V0GvUzXcE7awzeYQZNPNmlHuDmtHeMqaU=";
5555+ version = "25.0.6";
5656+ sha256 = "sha256-fYtO3CZ5oNpaIs+S+emMrxqYNlck0AC43fxdiomsjDg=";
5057 };
51585259 nextcloud26 = generic {
5353- version = "26.0.0";
5454- sha256 = "sha256-8WMVA2Ou6TZuy1zVJZv2dW7U8HPOp4tfpRXK2noNDD0=";
6060+ version = "26.0.1";
6161+ sha256 = "sha256-b5xqEkjXyK9K1HPXOkJWX2rautRTHFz6V7w0l7K2T0g=";
5562 };
56635764 # tip: get the sha with:
-242
pkgs/servers/nextcloud/packages/24.json
···11-{
22- "bookmarks": {
33- "sha256": "1jkbwzig4xd042jcbdbdh4whkpxb87f7ba0c89c78bdgcqzjv1a3",
44- "url": "https://github.com/nextcloud/bookmarks/releases/download/v11.0.4/bookmarks-11.0.4.tar.gz",
55- "version": "11.0.4",
66- "description": "- 📂 Sort bookmarks into folders\n- 🏷 Add tags and personal notes\n- 🔍 Full-text search\n- 📲 Synchronize with all your browsers and devices\n- 👪 Share bookmarks with other users and publicly\n- ☠ Find broken links\n- ⚛ Generate RSS feeds of your collections\n- 📔 Read archived versions of your links in case they are depublished\n- 💬 Create new bookmarks directly from within Nextcloud Talk\n- 💼 Built-in Dashboard widgets for frequent and recent links\n\nRequirements:\n - PHP v7.4+\n - PHP extensions:\n - intl: *\n - mbstring: *\n - when using MySQL, use at least v8.0",
77- "homepage": "https://github.com/nextcloud/bookmarks",
88- "licenses": [
99- "agpl"
1010- ]
1111- },
1212- "calendar": {
1313- "sha256": "0zzq556727yryxa0zas6agm6azl1898gbjx4wnl8d8m9hczf6xr2",
1414- "url": "https://github.com/nextcloud-releases/calendar/releases/download/v3.5.7/calendar-v3.5.7.tar.gz",
1515- "version": "3.5.7",
1616- "description": "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
1717- "homepage": "https://github.com/nextcloud/calendar/",
1818- "licenses": [
1919- "agpl"
2020- ]
2121- },
2222- "contacts": {
2323- "sha256": "1r0z0ldywzaw7a87hlsbn1f9pxqndqpxxa6khn70yh02cjrzh03m",
2424- "url": "https://github.com/nextcloud-releases/contacts/releases/download/v4.2.5/contacts-v4.2.5.tar.gz",
2525- "version": "4.2.5",
2626- "description": "The Nextcloud contacts app is a user interface for Nextcloud's CardDAV server. Easily sync contacts from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Mail and Calendar – more to come.\n* 🎉 **Never forget a birthday!** You can sync birthdays and other recurring events with your Nextcloud Calendar.\n* 👥 **Sharing of Adressbooks!** You want to share your contacts with your friends or coworkers? No problem!\n* 🙈 **We’re not reinventing the wheel!** Based on the great and open SabreDAV library.",
2727- "homepage": "https://github.com/nextcloud/contacts#readme",
2828- "licenses": [
2929- "agpl"
3030- ]
3131- },
3232- "deck": {
3333- "sha256": "1q21vpq9fv6p9harn96fq7cn68qixw3d08s9yf25mnxzpynrwv50",
3434- "url": "https://github.com/nextcloud-releases/deck/releases/download/v1.7.3/deck-v1.7.3.tar.gz",
3535- "version": "1.7.3",
3636- "description": "Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.\n\n\n- 📥 Add your tasks to cards and put them in order\n- 📄 Write down additional notes in Markdown\n- 🔖 Assign labels for even better organization\n- 👥 Share with your team, friends or family\n- 📎 Attach files and embed them in your Markdown description\n- 💬 Discuss with your team using comments\n- ⚡ Keep track of changes in the activity stream\n- 🚀 Get your project organized",
3737- "homepage": "https://github.com/nextcloud/deck",
3838- "licenses": [
3939- "agpl"
4040- ]
4141- },
4242- "files_markdown": {
4343- "sha256": "1dhl83vxk6aznakmvbcx52gl8slhy6jz1vqwiv8nwfjh75aczzxy",
4444- "url": "https://github.com/icewind1991/files_markdown/releases/download/v2.3.6/files_markdown.tar.gz",
4545- "version": "2.3.6",
4646- "description": "Markdown Editor extends the Nextcloud text editor with a live preview for markdown files.\n\nA full list of features can be found [in the README](https://github.com/icewind1991/files_markdown)",
4747- "homepage": "https://github.com/icewind1991/files_markdown",
4848- "licenses": [
4949- "agpl"
5050- ]
5151- },
5252- "files_texteditor": {
5353- "sha256": "0rmk14iw34pd81snp3lm01k07wm5j2nh9spcd4j0m43l20b7kxss",
5454- "url": "https://github.com/nextcloud-releases/files_texteditor/releases/download/v2.15.0/files_texteditor.tar.gz",
5555- "version": "2.15.0",
5656- "description": "This application enables Nextcloud users to open, save and edit text files in the web browser. If enabled, an entry called \"Text file\" in the \"New\" button menu at the top of the web browser appears. When clicked, a new text file opens in the browser and the file can be saved into the current Nextcloud directory. Further, when a text file is clicked in the web browser, it will be opened and editable. If the privileges allow, a user can also edit shared files and save these changes back into the web browser.\nMore information is available in the text editor documentation.",
5757- "homepage": "https://github.com/nextcloud/files_texteditor",
5858- "licenses": [
5959- "agpl"
6060- ]
6161- },
6262- "forms": {
6363- "sha256": "1payxppd2j0n67kcswb3dkk2a467fahwakxs7wqsfqgqgr9mcbl4",
6464- "url": "https://github.com/nextcloud/forms/releases/download/v2.5.2/forms.tar.gz",
6565- "version": "2.5.2",
6666- "description": "**Simple surveys and questionnaires, self-hosted!**\n\n- **📝 Simple design:** No mass of options, only the essentials. Works well on mobile of course.\n- **📊 View & export results:** Results are visualized and can also be exported as CSV in the same format used by Google Forms.\n- **🔒 Data under your control!** Unlike in Google Forms, Typeform, Doodle and others, the survey info and responses are kept private on your instance.\n- **🧑💻 Connect to your software:** Easily integrate Forms into your service with our full-fledged [REST-API](https://github.com/nextcloud/forms/blob/main/docs/API.md).\n- **🙋 Get involved!** We have lots of stuff planned like more question types, collaboration on forms, [and much more](https://github.com/nextcloud/forms/milestones)!",
6767- "homepage": "https://github.com/nextcloud/forms",
6868- "licenses": [
6969- "agpl"
7070- ]
7171- },
7272- "groupfolders": {
7373- "sha256": "09lz63n9i040lndzmpm6rdlpviaa8m9skpjw98m18miamdmqbf0d",
7474- "url": "https://github.com/nextcloud-releases/groupfolders/releases/download/v12.0.3/groupfolders-v12.0.3.tar.gz",
7575- "version": "12.0.3",
7676- "description": "Admin configured folders shared with everyone in a group.\n\nFolders can be configured from *Group folders* in the admin settings.\n\nAfter a folder is created, the admin can give access to the folder to one or more groups, control their write/sharing permissions and assign a quota for the folder.\n\nNote: Encrypting the contents of group folders is currently not supported.",
7777- "homepage": "https://github.com/nextcloud/groupfolders",
7878- "licenses": [
7979- "agpl"
8080- ]
8181- },
8282- "impersonate": {
8383- "sha256": "1kjibw5rigij51j6vjmx7ykrk61lg98syp7kkr0fzgwzvxrdniah",
8484- "url": "https://github.com/nextcloud-releases/impersonate/releases/download/v1.11.1/impersonate-v1.11.1.tar.gz",
8585- "version": "1.11.1",
8686- "description": "By installing the impersonate app of your Nextcloud you enable administrators to impersonate other users on the Nextcloud server. This is especially useful for debugging issues reported by users.\n\nTo impersonate a user an administrator has to simply follow the following four steps:\n\n1. Login as administrator to Nextcloud.\n2. Open users administration interface.\n3. Select the impersonate button on the affected user.\n4. Confirm the impersonation.\n\nThe administrator is then logged-in as the user, to switch back to the regular user account they simply have to press the logout button.\n\n**Note:**\n\n- This app is not compatible with instances that have encryption enabled.\n- While impersonate actions are logged note that actions performed impersonated will be logged as the impersonated user.\n- Impersonating a user is only possible after their first login.",
8787- "homepage": "https://github.com/nextcloud/impersonate",
8888- "licenses": [
8989- "agpl"
9090- ]
9191- },
9292- "keeweb": {
9393- "sha256": "19wzp588p3a87bi7ajn2r8jmsjjzzc1g8bkpwkidv66gi87gv9sr",
9494- "url": "https://github.com/jhass/nextcloud-keeweb/releases/download/v0.6.12/keeweb-0.6.12.tar.gz",
9595- "version": "0.6.12",
9696- "description": "Open Keepass stores inside Nextcloud with Keeweb just by clicking on an *.kdbx file in your Nextcloud.",
9797- "homepage": "https://github.com/jhass/nextcloud-keeweb",
9898- "licenses": [
9999- "agpl"
100100- ]
101101- },
102102- "mail": {
103103- "sha256": "1a697wf2lq596dk04acd6qpmx9immh6v8npj0kf43m31kc3hm0rs",
104104- "url": "https://github.com/nextcloud-releases/mail/releases/download/v1.15.3/mail-v1.15.3.tar.gz",
105105- "version": "1.15.3",
106106- "description": "**💌 A mail app for Nextcloud**\n\n- **🚀 Integration with other Nextcloud apps!** Currently Contacts, Calendar & Files – more to come.\n- **📥 Multiple mail accounts!** Personal and company account? No problem, and a nice unified inbox. Connect any IMAP account.\n- **🔒 Send & receive encrypted mails!** Using the great [Mailvelope](https://mailvelope.com) browser extension.\n- **🙈 We’re not reinventing the wheel!** Based on the great [Horde](https://horde.org) libraries.\n- **📬 Want to host your own mail server?** We do not have to reimplement this as you could set up [Mail-in-a-Box](https://mailinabox.email)!",
107107- "homepage": "https://github.com/nextcloud/mail#readme",
108108- "licenses": [
109109- "agpl"
110110- ]
111111- },
112112- "news": {
113113- "sha256": "1zyn6rs24f5dsb4z65dzx2mdkw8gy8n3adk9dgyyd4cjjhhixhsm",
114114- "url": "https://github.com/nextcloud/news/releases/download/21.2.0-beta3/news.tar.gz",
115115- "version": "21.2.0-beta3",
116116- "description": "📰 A RSS/Atom Feed reader App for Nextcloud\n\n- 📲 Synchronize your feeds with multiple mobile or desktop [clients](https://nextcloud.github.io/news/clients/)\n- 🔄 Automatic updates of your news feeds\n- 🆓 Free and open source under AGPLv3, no ads or premium functions\n\n**System Cron is currently required for this app to work**\n\nRequirements can be found [here](https://nextcloud.github.io/news/install/#dependencies)\n\nThe Changelog is available [here](https://github.com/nextcloud/news/blob/master/CHANGELOG.md)\n\nCreate a [bug report](https://github.com/nextcloud/news/issues/new/choose)\n\nCreate a [feature request](https://github.com/nextcloud/news/discussions/new)\n\nReport a [feed issue](https://github.com/nextcloud/news/discussions/new)",
117117- "homepage": "https://github.com/nextcloud/news",
118118- "licenses": [
119119- "agpl"
120120- ]
121121- },
122122- "notes": {
123123- "sha256": "0b88xsznfi31la7iyj4b7j1qlb8wvrmq49z9dgdrwja3r81mxnsr",
124124- "url": "https://github.com/nextcloud/notes/releases/download/v4.5.1/notes.tar.gz",
125125- "version": "4.5.1",
126126- "description": "The Notes app is a distraction free notes taking app for [Nextcloud](https://www.nextcloud.com/). It provides categories for better organization and supports formatting using [Markdown](https://en.wikipedia.org/wiki/Markdown) syntax. Notes are saved as files in your Nextcloud, so you can view and edit them with every Nextcloud client. Furthermore, a separate [REST API](https://github.com/nextcloud/notes/blob/master/docs/api/README.md) allows for an easy integration into third-party apps (currently, there are notes apps for [Android](https://github.com/nextcloud/notes-android), [iOS](https://github.com/nextcloud/notes-ios) and the [console](https://git.danielmoch.com/nncli/about) which allow convenient access to your Nextcloud notes). Further features include marking notes as favorites.",
127127- "homepage": "https://github.com/nextcloud/notes",
128128- "licenses": [
129129- "agpl"
130130- ]
131131- },
132132- "notify_push": {
133133- "sha256": "1fz6wi5nb4c2w33vp9ry2mk4lmv7aa3axyfxzldf5w4glfzaymzw",
134134- "url": "https://github.com/nextcloud-releases/notify_push/releases/download/v0.6.2/notify_push-v0.6.2.tar.gz",
135135- "version": "0.6.2",
136136- "description": "Push update support for desktop app.\n\nOnce the app is installed, the push binary needs to be setup. You can either use the setup wizard with `occ notify_push:setup` or see the [README](http://github.com/nextcloud/notify_push) for detailed setup instructions",
137137- "homepage": "",
138138- "licenses": [
139139- "agpl"
140140- ]
141141- },
142142- "onlyoffice": {
143143- "sha256": "0hscbm7jcnxyg7ib0g16b0sw8nz7rl6qzx90qmki5knhzrf6hf1j",
144144- "url": "https://github.com/ONLYOFFICE/onlyoffice-nextcloud/releases/download/v7.7.0/onlyoffice.tar.gz",
145145- "version": "7.7.0",
146146- "description": "ONLYOFFICE connector allows you to view, edit and collaborate on text documents, spreadsheets and presentations within Nextcloud using ONLYOFFICE Docs. This will create a new Edit in ONLYOFFICE action within the document library for Office documents. This allows multiple users to co-author documents in real time from the familiar web interface and save the changes back to your file storage.",
147147- "homepage": "https://www.onlyoffice.com",
148148- "licenses": [
149149- "apache"
150150- ]
151151- },
152152- "polls": {
153153- "sha256": "0qdm0hnljkv0df1s929awyjj1gsp3d6xv9llr52cxv66kkfx086y",
154154- "url": "https://github.com/nextcloud/polls/releases/download/v3.8.4/polls.tar.gz",
155155- "version": "3.8.4",
156156- "description": "A polls app, similar to Doodle/Dudle with the possibility to restrict access (members, certain groups/users, hidden and public).",
157157- "homepage": "https://github.com/nextcloud/polls",
158158- "licenses": [
159159- "agpl"
160160- ]
161161- },
162162- "previewgenerator": {
163163- "sha256": "0vwlx3z80i12f9hm0qrm014a0wybjk2j5is7vyn9wcizhr6mpzjv",
164164- "url": "https://github.com/nextcloud-releases/previewgenerator/releases/download/v5.2.2/previewgenerator-v5.2.2.tar.gz",
165165- "version": "5.2.2",
166166- "description": "The Preview Generator app allows admins to pre-generate previews. The app listens to edit events and stores this information. Once a cron job is triggered it will generate start preview generation. This means that you can better utilize your system by pre-generating previews when your system is normally idle and thus putting less load on your machine when the requests are actually served.\n\nThe app does not replace on demand preview generation so if a preview is requested before it is pre-generated it will still be shown.\nThe first time you install this app, before using a cron job, you properly want to generate all previews via:\n**./occ preview:generate-all -vvv**\n\n**Important**: To enable pre-generation of previews you must add **php /var/www/nextcloud/occ preview:pre-generate** to a system cron job that runs at times of your choosing.",
167167- "homepage": "https://github.com/nextcloud/previewgenerator",
168168- "licenses": [
169169- "agpl"
170170- ]
171171- },
172172- "registration": {
173173- "sha256": "0m45limwsk8a86fqjxj2w1753hd2vc5icpv0wcbwrlr0mxxdc46f",
174174- "url": "https://github.com/nextcloud-releases/registration/releases/download/v1.5.0/registration-v1.5.0.tar.gz",
175175- "version": "1.5.0",
176176- "description": "User registration\n\nThis app allows users to register a new account.\n\n# Features\n\n- Add users to a given group\n- Allow-list with email domains (including wildcard) to register with\n- Administrator will be notified via email for new user creation or require approval\n- Supports Nextcloud's Client Login Flow v1 and v2 - allowing registration in the mobile Apps and Desktop clients\n\n# Web form registration flow\n\n1. User enters their email address\n2. Verification link is sent to the email address\n3. User clicks on the verification link\n4. User is lead to a form where they can choose their username and password\n5. New account is created and is logged in automatically",
177177- "homepage": "https://github.com/nextcloud/registration",
178178- "licenses": [
179179- "agpl"
180180- ]
181181- },
182182- "spreed": {
183183- "sha256": "1r2n312kxx6ymlwrvqsj230x4zsg6im4xrss04zagiflvfljr5da",
184184- "url": "https://github.com/nextcloud-releases/spreed/releases/download/v14.0.10/spreed-v14.0.10.tar.gz",
185185- "version": "14.0.10",
186186- "description": "Chat, video & audio-conferencing using WebRTC\n\n* 💬 **Chat integration!** Nextcloud Talk comes with a simple text chat. Allowing you to share files from your Nextcloud and mentioning other participants.\n* 👥 **Private, group, public and password protected calls!** Just invite somebody, a whole group or send a public link to invite to a call.\n* 💻 **Screen sharing!** Share your screen with participants of your call. You just need to use Firefox version 66 (or newer), latest Edge or Chrome 72 (or newer, also possible using Chrome 49 with this [Chrome extension](https://chrome.google.com/webstore/detail/screensharing-for-nextclo/kepnpjhambipllfmgmbapncekcmabkol)).\n* 🚀 **Integration with other Nextcloud apps** like Files, Contacts and Deck. More to come.\n\nAnd in the works for the [coming versions](https://github.com/nextcloud/spreed/milestones/):\n* ✋ [Federated calls](https://github.com/nextcloud/spreed/issues/21), to call people on other Nextclouds",
187187- "homepage": "https://github.com/nextcloud/spreed",
188188- "licenses": [
189189- "agpl"
190190- ]
191191- },
192192- "tasks": {
193193- "sha256": "0jm13d6nm7cfsw27yfiq1il9xjlh0qrq8xby2yz9dmggn7lk1dx5",
194194- "url": "https://github.com/nextcloud/tasks/releases/download/v0.14.5/tasks.tar.gz",
195195- "version": "0.14.5",
196196- "description": "Once enabled, a new Tasks menu will appear in your Nextcloud apps menu. From there you can add and delete tasks, edit their title, description, start and due dates and mark them as important. Tasks can be shared between users. Tasks can be synchronized using CalDav (each task list is linked to an Nextcloud calendar, to sync it to your local client: Thunderbird, Evolution, KDE Kontact, iCal … - just add the calendar as a remote calendar in your client). You can download your tasks as ICS files using the download button for each calendar.",
197197- "homepage": "https://github.com/nextcloud/tasks/",
198198- "licenses": [
199199- "agpl"
200200- ]
201201- },
202202- "twofactor_nextcloud_notification": {
203203- "sha256": "1zdx7khsa22k6g9zhcxrgr1mykl16064z0scr5jbgq5ms3hh2q9w",
204204- "url": "https://github.com/nextcloud-releases/twofactor_nextcloud_notification/releases/download/v3.4.0/twofactor_nextcloud_notification-v3.4.0.tar.gz",
205205- "version": "3.4.0",
206206- "description": "Allows using any of your logged in devices as second factor",
207207- "homepage": "https://github.com/nextcloud/twofactor_nextcloud_notification",
208208- "licenses": [
209209- "agpl"
210210- ]
211211- },
212212- "twofactor_totp": {
213213- "sha256": "189cwq78dqanqxhsl69dahdkh230zhz2r285lvf0b7pg0sxcs0yc",
214214- "url": "https://github.com/nextcloud-releases/twofactor_totp/releases/download/v6.4.1/twofactor_totp-v6.4.1.tar.gz",
215215- "version": "6.4.1",
216216- "description": "A Two-Factor-Auth Provider for TOTP (RFC 6238)",
217217- "homepage": "https://github.com/nextcloud/twofactor_totp#readme",
218218- "licenses": [
219219- "agpl"
220220- ]
221221- },
222222- "twofactor_webauthn": {
223223- "sha256": "10f6dm9cxljicmfk9l4ncg6r7c1jy1pvm0b5kvz35q9jgniq0hcs",
224224- "url": "https://github.com/nextcloud-releases/twofactor_webauthn/releases/download/v0.3.3/twofactor_webauthn-v0.3.3.tar.gz",
225225- "version": "0.3.3",
226226- "description": "A two-factor provider for WebAuthn devices",
227227- "homepage": "https://github.com/nextcloud/twofactor_webauthn#readme",
228228- "licenses": [
229229- "agpl"
230230- ]
231231- },
232232- "unsplash": {
233233- "sha256": "1xlqpzry2qq0msrq8alg0mywlhjh09m3z5glh4rgwmh3p5b0777c",
234234- "url": "https://github.com/nextcloud/unsplash/releases/download/v2.0.1/unsplash.tar.gz",
235235- "version": "2.0.1",
236236- "description": "Show a new random featured nature photo in your nextcloud. Now with choosable motives!",
237237- "homepage": "https://github.com/nextcloud/unsplash/",
238238- "licenses": [
239239- "agpl"
240240- ]
241241- }
242242-}