aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMario Rodas <marsam@users.noreply.github.com>2020-08-22 04:20:00 -0500
committerRobert Helgesson <robert@rycee.net>2020-08-26 00:21:01 +0200
commita79d31fcfd156c4feda6c19d8490b16edb7c1c75 (patch)
tree2183c4daa44172e4fdba4aaca86294a9854e4d07
parent0869e237007aa48f458c9d9ba9080280565a7160 (diff)
mcfly: add module
PR #1452
-rw-r--r--.github/CODEOWNERS2
-rw-r--r--modules/misc/news.nix7
-rw-r--r--modules/modules.nix1
-rw-r--r--modules/programs/mcfly.nix77
4 files changed, 87 insertions, 0 deletions
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index bf1be1a20f3..5aa1f6c4e19 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -71,6 +71,8 @@
/modules/programs/matplotlib.nix @rprospero
+/modules/programs/mcfly.nix @marsam
+
/modules/programs/mpv.nix @tadeokondrak
/modules/programs/ne.nix @cwyc
diff --git a/modules/misc/news.nix b/modules/misc/news.nix
index 94ce35bd3fc..bdbd589a501 100644
--- a/modules/misc/news.nix
+++ b/modules/misc/news.nix
@@ -1635,6 +1635,13 @@ in
A new module is available: 'services.kanshi'
'';
}
+
+ {
+ time = "2020-08-25T22:14:01+00:00";
+ message = ''
+ A new module is available: 'programs.mcfly'
+ '';
+ }
];
};
}
diff --git a/modules/modules.nix b/modules/modules.nix
index fa9c7f38cb7..bae51d69297 100644
--- a/modules/modules.nix
+++ b/modules/modules.nix
@@ -86,6 +86,7 @@ let
(loadModule ./programs/man.nix { })
(loadModule ./programs/matplotlib.nix { })
(loadModule ./programs/mbsync.nix { })
+ (loadModule ./programs/mcfly.nix { })
(loadModule ./programs/mercurial.nix { })
(loadModule ./programs/mpv.nix { })
(loadModule ./programs/msmtp.nix { })
diff --git a/modules/programs/mcfly.nix b/modules/programs/mcfly.nix
new file mode 100644
index 00000000000..bf2b0f6ed8f
--- /dev/null
+++ b/modules/programs/mcfly.nix
@@ -0,0 +1,77 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+let
+
+ cfg = config.programs.mcfly;
+
+in {
+ meta.maintainers = [ maintainers.marsam ];
+
+ options.programs.mcfly = {
+ enable = mkEnableOption "mcfly";
+
+ keyScheme = mkOption {
+ type = types.enum [ "emacs" "vim" ];
+ default = "emacs";
+ description = ''
+ Key scheme to use.
+ '';
+ };
+
+ enableLightTheme = mkOption {
+ default = false;
+ type = types.bool;
+ description = ''
+ Whether to enable light mode theme.
+ '';
+ };
+
+ enableBashIntegration = mkOption {
+ default = true;
+ type = types.bool;
+ description = ''
+ Whether to enable Bash integration.
+ '';
+ };
+
+ enableZshIntegration = mkOption {
+ default = true;
+ type = types.bool;
+ description = ''
+ Whether to enable Zsh integration.
+ '';
+ };
+
+ enableFishIntegration = mkOption {
+ default = true;
+ type = types.bool;
+ description = ''
+ Whether to enable Fish integration.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable (mkMerge [
+ {
+ home.packages = [ pkgs.mcfly ];
+
+ programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
+ source "${pkgs.mcfly}/share/mcfly/mcfly.bash"
+ '';
+
+ programs.zsh.initExtra = mkIf cfg.enableZshIntegration ''
+ source "${pkgs.mcfly}/share/mcfly/mcfly.zsh"
+ '';
+
+ programs.fish.shellInit = mkIf cfg.enableFishIntegration ''
+ source "${pkgs.mcfly}/share/mcfly/mcfly.fish"
+ mcfly_key_bindings
+ '';
+
+ home.sessionVariables.MCFLY_KEY_SCHEME = cfg.keyScheme;
+ }
+
+ (mkIf cfg.enableLightTheme { home.sessionVariables.MCFLY_LIGHT = "TRUE"; })
+ ]);
+}