about summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorh7x4 <h7x4@nani.wtf>2023-10-19 20:26:01 +0200
committerh7x4 <h7x4@nani.wtf>2023-12-01 01:35:29 +0100
commitf12eabdcbe642884b37cb5d20dbf781f998061f7 (patch)
tree1606e79ae46f86e9d5c9bf7bab58aab5ffc1be45 /nixos/modules/programs
parent9b11307f42bb14d8f3ba50eb8bd80ab7dbbbec9f (diff)
downloadnixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.tar
nixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.tar.gz
nixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.tar.bz2
nixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.tar.lz
nixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.tar.xz
nixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.tar.zst
nixlib-f12eabdcbe642884b37cb5d20dbf781f998061f7.zip
nixos/screen: clean up
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/screen.nix38
1 files changed, 23 insertions, 15 deletions
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 = {};
   };
-
 }