about summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeder Bergebakken Sundt <pbsds@hotmail.com>2023-12-02 15:56:45 +0100
committerGitHub <noreply@github.com>2023-12-02 15:56:45 +0100
commit1079eccc636ff7ae1f46f008847c8c93e8c8e628 (patch)
treec07ddf6c422071b1a8ac0cb1c6a17a2d2928d708
parentb1d8da6359cdac56608a7563e504f628f4cee897 (diff)
parentf12eabdcbe642884b37cb5d20dbf781f998061f7 (diff)
downloadnixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.tar
nixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.tar.gz
nixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.tar.bz2
nixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.tar.lz
nixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.tar.xz
nixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.tar.zst
nixlib-1079eccc636ff7ae1f46f008847c8c93e8c8e628.zip
Merge pull request #262133 from h7x4/cleanup-screen-module
nixos/screen: clean up module
-rw-r--r--nixos/doc/manual/release-notes/rl-2405.section.md2
-rw-r--r--nixos/modules/programs/screen.nix38
2 files changed, 24 insertions, 16 deletions
diff --git a/nixos/doc/manual/release-notes/rl-2405.section.md b/nixos/doc/manual/release-notes/rl-2405.section.md
index 729b52e09a16..a1bdb4321d9a 100644
--- a/nixos/doc/manual/release-notes/rl-2405.section.md
+++ b/nixos/doc/manual/release-notes/rl-2405.section.md
@@ -8,7 +8,7 @@ In addition to numerous new and upgraded packages, this release has the followin
 
 <!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
 
-- Create the first release note entry in this section!
+- `screen`'s module has been cleaned, and will now require you to set `programs.screen.enable` in order to populate `screenrc` and add the program to the environment.
 
 ## New Services {#sec-release-24.05-new-services}
 
diff --git a/nixos/modules/programs/screen.nix b/nixos/modules/programs/screen.nix
index 68de9e52d7be..41bfb5d7809a 100644
--- a/nixos/modules/programs/screen.nix
+++ b/nixos/modules/programs/screen.nix
@@ -1,33 +1,41 @@
 { config, lib, pkgs, ... }:
 
 let
-  inherit (lib) mkOption mkIf types;
   cfg = config.programs.screen;
 in
 
 {
-  ###### interface
-
   options = {
     programs.screen = {
+      enable = lib.mkEnableOption (lib.mdDoc "screen, a basic terminal multiplexer");
+
+      package = lib.mkPackageOptionMD pkgs "screen" { };
 
-      screenrc = mkOption {
-        default = "";
-        description = lib.mdDoc ''
-          The contents of /etc/screenrc file.
+      screenrc = lib.mkOption {
+        type = with lib.types; nullOr lines;
+        example = ''
+          defscrollback 10000
+          startup_message off
         '';
-        type = types.lines;
+        description = lib.mdDoc "The contents of {file}`/etc/screenrc` file";
       };
     };
   };
 
-  ###### implementation
-
-  config = mkIf (cfg.screenrc != "") {
-    environment.etc.screenrc.text = cfg.screenrc;
-
-    environment.systemPackages = [ pkgs.screen ];
+  config = {
+    # TODO: Added in 24.05, remove before 24.11
+    assertions = [
+      {
+        assertion = cfg.screenrc != null -> cfg.enable;
+        message = "`programs.screen.screenrc` has been configured, but `programs.screen.enable` is not true";
+      }
+    ];
+  } // lib.mkIf cfg.enable {
+    environment.etc.screenrc = {
+      enable = cfg.screenrc != null;
+      text = cfg.screenrc;
+    };
+    environment.systemPackages = [ cfg.package ];
     security.pam.services.screen = {};
   };
-
 }