1{ config, lib, pkgs, ... }:
2
3let
4 cfg = config.programs.screen;
5in
6
7{
8 options = {
9 programs.screen = {
10 enable = lib.mkEnableOption "screen, a basic terminal multiplexer";
11
12 package = lib.mkPackageOptionMD pkgs "screen" { };
13
14 screenrc = lib.mkOption {
15 type = lib.types.lines;
16 default = "";
17 example = ''
18 defscrollback 10000
19 startup_message off
20 '';
21 description = "The contents of {file}`/etc/screenrc` file";
22 };
23 };
24 };
25
26 config = lib.mkMerge [
27 {
28 # TODO: Added in 24.05, remove before 24.11
29 assertions = [
30 {
31 assertion = cfg.screenrc != "" -> cfg.enable;
32 message = "`programs.screen.screenrc` has been configured, but `programs.screen.enable` is not true";
33 }
34 ];
35 }
36 (lib.mkIf cfg.enable {
37 environment.etc.screenrc = {
38 text = cfg.screenrc;
39 };
40 environment.systemPackages = [ cfg.package ];
41 security.pam.services.screen = {};
42 })
43 ];
44}