about summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorNiklaus Giger <niklaus.giger@member.fsf.org>2022-03-12 19:27:17 +0100
committerNiklaus Giger <niklaus.giger@member.fsf.org>2022-04-30 13:18:40 +0200
commit87b4440a6001bb239a210e1c4a1fec2e95fdd1d6 (patch)
tree524d3c91cb7707f10d91ad7b62a605740d0e6d2f /nixos/modules/programs
parent458a8fee0d3071a44927b3be1f4c78cde3da2061 (diff)
nixos/k3b: init. Fixes #19154 missing permissions for k3b
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/k3b.nix52
1 files changed, 52 insertions, 0 deletions
diff --git a/nixos/modules/programs/k3b.nix b/nixos/modules/programs/k3b.nix
new file mode 100644
index 0000000000000..68a4d08f349c2
--- /dev/null
+++ b/nixos/modules/programs/k3b.nix
@@ -0,0 +1,52 @@
+{ config, pkgs, lib, ... }:
+
+with lib;
+
+{
+  # interface
+  options.programs.k3b = {
+    enable = mkOption {
+      type = types.bool;
+      default = false;
+      description = ''
+        Whether to enable k3b, the KDE disk burning application.
+
+        Additionally to installing <package>k3b</package> enabling this will
+        add <literal>setuid</literal> wrappers in <literal>/run/wrappers/bin</literal>
+        for both <package>cdrdao</package> and <package>cdrecord</package>. On first
+        run you must manually configure the path of <package>cdrdae</package> and
+        <package>cdrecord</package> to correspond to the appropriate paths under
+        <literal>/run/wrappers/bin</literal> in the "Setup External Programs" menu.
+      '';
+    };
+  };
+
+  # implementation
+  config = mkIf config.programs.k3b.enable {
+
+    environment.systemPackages = with pkgs; [
+      k3b
+      dvdplusrwtools
+      cdrdao
+      cdrkit
+    ];
+
+    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.cdrkit}/bin/cdrecord";
+      };
+    };
+
+  };
+}