mirror of
https://github.com/nix-community/home-manager
synced 2024-11-10 07:04:17 +00:00
parent
3aa479d551
commit
d04e52b0c0
7 changed files with 103 additions and 0 deletions
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
|
@ -178,6 +178,8 @@
|
||||||
|
|
||||||
/modules/programs/starship.nix @marsam
|
/modules/programs/starship.nix @marsam
|
||||||
|
|
||||||
|
/modules/programs/terminator.nix @chisui
|
||||||
|
|
||||||
/modules/programs/texlive.nix @rycee
|
/modules/programs/texlive.nix @rycee
|
||||||
|
|
||||||
/modules/programs/topgrade.nix @msfjarvis
|
/modules/programs/topgrade.nix @msfjarvis
|
||||||
|
|
|
@ -25,6 +25,12 @@
|
||||||
github = "cwyc";
|
github = "cwyc";
|
||||||
githubId = 16950437;
|
githubId = 16950437;
|
||||||
};
|
};
|
||||||
|
chisui = {
|
||||||
|
name = "Philipp Dargel";
|
||||||
|
email = "chisui@users.noreply.github.com";
|
||||||
|
github = "chisui";
|
||||||
|
githubId = 4526429;
|
||||||
|
};
|
||||||
olmokramer = {
|
olmokramer = {
|
||||||
name = "Olmo Kramer";
|
name = "Olmo Kramer";
|
||||||
email = "olmokramer@users.noreply.github.com";
|
email = "olmokramer@users.noreply.github.com";
|
||||||
|
|
|
@ -137,6 +137,7 @@ let
|
||||||
(loadModule ./programs/termite.nix { })
|
(loadModule ./programs/termite.nix { })
|
||||||
(loadModule ./programs/texlive.nix { })
|
(loadModule ./programs/texlive.nix { })
|
||||||
(loadModule ./programs/tmux.nix { })
|
(loadModule ./programs/tmux.nix { })
|
||||||
|
(loadModule ./programs/terminator.nix { condition = hostPlatform.isLinux; })
|
||||||
(loadModule ./programs/topgrade.nix { })
|
(loadModule ./programs/topgrade.nix { })
|
||||||
(loadModule ./programs/urxvt.nix { })
|
(loadModule ./programs/urxvt.nix { })
|
||||||
(loadModule ./programs/vim.nix { })
|
(loadModule ./programs/vim.nix { })
|
||||||
|
|
70
modules/programs/terminator.nix
Normal file
70
modules/programs/terminator.nix
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.programs.terminator;
|
||||||
|
|
||||||
|
toValue = val:
|
||||||
|
if val == null then
|
||||||
|
"None"
|
||||||
|
else if val == true then
|
||||||
|
"True"
|
||||||
|
else if val == false then
|
||||||
|
"False"
|
||||||
|
else
|
||||||
|
''"${toString val}"'';
|
||||||
|
|
||||||
|
toConfigObject = let
|
||||||
|
toKey = depth: key:
|
||||||
|
if depth == 0 then key else toKey (depth - 1) "[${key}]";
|
||||||
|
toConfigObjectLevel = depth: obj:
|
||||||
|
flatten (mapAttrsToList (key: val:
|
||||||
|
if isAttrs val then
|
||||||
|
[ (toKey depth key) ] ++ toConfigObjectLevel (depth + 1) val
|
||||||
|
else
|
||||||
|
[ "${key} = ${toValue val}" ]) obj);
|
||||||
|
in obj: concatStringsSep "\n" (toConfigObjectLevel 1 obj);
|
||||||
|
|
||||||
|
in {
|
||||||
|
meta.maintainers = [ maintainers.chisui ];
|
||||||
|
|
||||||
|
options.programs.terminator = {
|
||||||
|
enable = mkEnableOption "terminator, a tiling terminal emulator";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.terminator;
|
||||||
|
example = literalExample "pkgs.terminator";
|
||||||
|
description = "terminator package to install.";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkOption {
|
||||||
|
default = { };
|
||||||
|
description = ''
|
||||||
|
configuration for terminator.
|
||||||
|
</para><para>
|
||||||
|
For a list of all possible options refer to the
|
||||||
|
<citerefentry>
|
||||||
|
<refentrytitle>terminator_config</refentrytitle>
|
||||||
|
<manvolnum>5</manvolnum>
|
||||||
|
</citerefentry>
|
||||||
|
man page.
|
||||||
|
'';
|
||||||
|
type = types.attrsOf types.anything;
|
||||||
|
example = literalExample ''
|
||||||
|
{
|
||||||
|
global_config.borderless = true;
|
||||||
|
profiles.default.background_color = "#002b36";
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
xdg.configFile."terminator/config" =
|
||||||
|
mkIf (cfg.config != { }) { text = toConfigObject cfg.config; };
|
||||||
|
};
|
||||||
|
}
|
|
@ -108,6 +108,7 @@ import nmt {
|
||||||
./modules/programs/rbw
|
./modules/programs/rbw
|
||||||
./modules/programs/rofi
|
./modules/programs/rofi
|
||||||
./modules/programs/rofi-pass
|
./modules/programs/rofi-pass
|
||||||
|
./modules/programs/terminator
|
||||||
./modules/programs/waybar
|
./modules/programs/waybar
|
||||||
./modules/services/barrier
|
./modules/services/barrier
|
||||||
./modules/services/dropbox
|
./modules/services/dropbox
|
||||||
|
|
22
tests/modules/programs/terminator/config-file.nix
Normal file
22
tests/modules/programs/terminator/config-file.nix
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
{ config, lib, pkgs, ... }: {
|
||||||
|
config = {
|
||||||
|
programs.terminator = {
|
||||||
|
enable = true;
|
||||||
|
config = {
|
||||||
|
global_config.borderless = true;
|
||||||
|
profiles.default.background_color = "#002b36";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileContent home-files/.config/terminator/config ${
|
||||||
|
pkgs.writeText "expected" ''
|
||||||
|
[global_config]
|
||||||
|
borderless = True
|
||||||
|
[profiles]
|
||||||
|
[[default]]
|
||||||
|
background_color = "#002b36"''
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
1
tests/modules/programs/terminator/default.nix
Normal file
1
tests/modules/programs/terminator/default.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ terminator-config-file = ./config-file.nix; }
|
Loading…
Reference in a new issue