1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 cfg = config.programs.nano;
10in
11
12{
13 options = {
14 programs.nano = {
15 enable = lib.mkEnableOption "nano, a small user-friendly console text editor" // {
16 default = true;
17 };
18
19 package = lib.mkPackageOption pkgs "nano" { };
20
21 nanorc = lib.mkOption {
22 type = lib.types.lines;
23 default = "";
24 description = ''
25 The system-wide nano configuration.
26 See {manpage}`nanorc(5)`.
27 '';
28 example = ''
29 set nowrap
30 set tabstospaces
31 set tabsize 2
32 '';
33 };
34
35 syntaxHighlight = lib.mkOption {
36 type = lib.types.bool;
37 default = true;
38 description = "Whether to enable syntax highlight for various languages.";
39 };
40 };
41 };
42
43 config = lib.mkIf cfg.enable {
44 environment = {
45 etc.nanorc.text =
46 (lib.optionalString cfg.syntaxHighlight ''
47 # load syntax highlighting files
48 include "${cfg.package}/share/nano/*.nanorc"
49 include "${cfg.package}/share/nano/extra/*.nanorc"
50 '')
51 + cfg.nanorc;
52 systemPackages = [ cfg.package ];
53 pathsToLink = [ "/share/nano" ];
54 };
55 };
56}