diff --git a/nixos/doc/manual/release-notes/rl-2205.section.md b/nixos/doc/manual/release-notes/rl-2205.section.md index 486b5f542ff4..c21e36403161 100644 --- a/nixos/doc/manual/release-notes/rl-2205.section.md +++ b/nixos/doc/manual/release-notes/rl-2205.section.md @@ -101,7 +101,7 @@ In addition to numerous new and upgraded packages, this release has the followin - [InvoicePlane](https://invoiceplane.com), web application for managing and creating invoices. Available at [services.invoiceplane](#opt-services.invoiceplane.sites._name_.enable). -- [k3b](https://userbase.kde.org/K3b), the KDE disk burning application. Available as programs.k3b. +- [k3b](https://userbase.kde.org/K3b), the KDE disk burning application. Available as [programs.k3b](#opt-programs.k3b.enable). - [K40-Whisperer](https://www.scorchworks.com/K40whisperer/k40whisperer.html), a program to control cheap Chinese laser cutters. Available as [programs.k40-whisperer.enable](#opt-programs.k40-whisperer.enable). Users must add themselves to the `k40` group to be able to access the device. diff --git a/nixos/modules/programs/k3b.nix b/nixos/modules/programs/k3b.nix index 6e39f18b6794..1352c88111ec 100644 --- a/nixos/modules/programs/k3b.nix +++ b/nixos/modules/programs/k3b.nix @@ -1,11 +1,53 @@ -{ lib, ... }: +{ + config, + pkgs, + lib, + ... +}: { - imports = [ - (lib.mkRemovedOptionModule [ - "programs" - "k3b" - "enable" - ] "Please add kdePackages.k3b to environment.systemPackages instead") - ]; + options.programs.k3b = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = '' + Whether to enable k3b, the KDE disk burning application. + + Additionally to installing `k3b` enabling this will + add `setuid` wrappers in `/run/wrappers/bin` + for both `cdrdao` and `cdrecord`. On first + run you must manually configure the path of `cdrdae` and + `cdrecord` to correspond to the appropriate paths under + `/run/wrappers/bin` in the "Setup External Programs" menu. + ''; + }; + }; + + config = lib.mkIf config.programs.k3b.enable { + + environment.systemPackages = with pkgs; [ + kdePackages.k3b + dvdplusrwtools + cdrdao + cdrtools + ]; + + security.wrappers = { + cdrdao = { + setuid = true; + owner = "root"; + group = "cdrom"; + permissions = "u+wrx,g+x"; + source = "${pkgs.cdrdao}/bin/cdrdao"; + }; + cdrecord = { + setuid = true; + owner = "root"; + group = "cdrom"; + permissions = "u+wrx,g+x"; + source = "${pkgs.cdrtools}/bin/cdrecord"; + }; + }; + + }; }