at 24.11-pre 1.0 kB view raw
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}