Add helix theme switching

work
mat ess 2022-11-28 16:55:43 -05:00
parent 8574b348a1
commit 25e6aecd5c
7 changed files with 85 additions and 18 deletions

View File

@ -52,8 +52,8 @@
end end
end end
''; '';
environment.variables.SHELL = "${pkgs.fish}/bin/fish"; environment.variables.SHELL = "/run/current-system/sw/bin/fish";
environment.loginShell = "${pkgs.fish}/bin/fish"; environment.loginShell = "/run/current-system/sw/bin/fish";
# Install and setup ZSH to work with nix(-darwin) as well # Install and setup ZSH to work with nix(-darwin) as well
programs.zsh.enable = true; programs.zsh.enable = true;

View File

@ -287,6 +287,7 @@
files = import ./home/files.nix; files = import ./home/files.nix;
fish = import ./home/fish.nix; fish = import ./home/fish.nix;
git = import ./home/git.nix; git = import ./home/git.nix;
helix = import ./home/helix.nix;
kitty = import ./home/kitty.nix; kitty = import ./home/kitty.nix;
programs = import ./home/programs.nix; programs = import ./home/programs.nix;
starship = import ./home/starship.nix; starship = import ./home/starship.nix;
@ -298,8 +299,8 @@
darwin.fullCopies = true; darwin.fullCopies = true;
}; };
# modules # modules
# TODO: migrate to helix programs-kakoune-extras = import ./modules/home/programs/kakoune/extras.nix; # currently unused
# programs-kakoune-extras = import ./modules/home/programs/kakoune/extras.nix; programs-helix-extras = import ./modules/home/programs/helix/extras.nix;
programs-kitty-extras = import ./modules/home/programs/kitty/extras.nix; programs-kitty-extras = import ./modules/home/programs/kitty/extras.nix;
home-primary-user = { lib, ... }: { home-primary-user = { lib, ... }: {
options.home.primaryUser = options.home.primaryUser =

View File

@ -15,7 +15,7 @@
} }
]; ];
home.file."${config.xdg.configHome}/fish/fish_plugins".text = '' xdg.configFile."fish/fish_plugins".text = ''
jorgebucaran/autopair.fish jorgebucaran/autopair.fish
jorgebucaran/replay.fish jorgebucaran/replay.fish
jorgebucaran/getopts.fish jorgebucaran/getopts.fish

30
home/helix.nix Normal file
View File

@ -0,0 +1,30 @@
{ pkgs, ... }:
{
programs.helix.enable = true;
programs.helix.package = pkgs.helix-flake;
programs.helix.settings = {
editor.bufferline = "multiple";
editor.color-modes = true;
editor.indent-guides.render = true;
editor.indent-guides.skip-levels = 1;
editor.line-number = "relative";
editor.whitespace.render = {
space = "none";
tab = "all";
newline = "all";
};
};
programs.helix.extras.autoTheme = {
enable = true;
light = "rose_pine_dawn";
dark = "rose_pine";
};
home.sessionVariables = {
EDITOR = "hx";
};
}

View File

@ -5,9 +5,7 @@ let
in in
{ {
# Programs + packages with configuration --------------------------------------------------------------- {{{ # Programs + packages with configuration --------------------------------------------------------------- {{{
home.sessionVariables = { home.sessionVariables = lib.optionalAttrs pkgs.stdenv.isDarwin {
EDITOR = "hx";
} // lib.optionalAttrs pkgs.stdenv.isDarwin {
SSH_AUTH_SOCK = secretiveAuthSocket; SSH_AUTH_SOCK = secretiveAuthSocket;
}; };
programs = { programs = {
@ -26,14 +24,6 @@ in
enable = true; enable = true;
nix-direnv.enable = true; nix-direnv.enable = true;
}; };
helix = {
enable = true;
package = pkgs.helix-flake;
settings = {
theme = "rose_pine";
editor.indent-guides.render = true;
};
};
nix-index = { nix-index = {
enable = true; enable = true;
enableFishIntegration = true; enableFishIntegration = true;

View File

@ -0,0 +1,48 @@
{ config, lib, pkgs, ... }:
let
cfg = config.programs.helix;
inherit (cfg) extras;
tomlFormat = pkgs.formats.toml { };
inherit (lib) mkIf mkEnableOption mkOption types;
in
{
options.programs.helix.extras = {
autoTheme.enable = mkEnableOption "Automatically switch helix theme with night mode";
autoTheme.light = mkOption {
type = types.str;
description = "Light mode theme";
};
autoTheme.dark = mkOption {
type = types.str;
description = "Dark mode theme";
};
};
config = mkIf (cfg.enable && extras.autoTheme.enable) {
xdg.configFile = {
"helix/light.toml".source = tomlFormat.generate "helix-autotheme" (cfg.settings // { theme = extras.autoTheme.light; });
"helix/dark.toml".source = tomlFormat.generate "helix-autotheme" (cfg.settings // { theme = extras.autoTheme.dark; });
};
programs.fish.shellAbbrs = {
hxl = "${cfg.package} --config ${config.xdg.configHome}/helix/light.toml";
hxd = "${cfg.package} --config ${config.xdg.configHome}/helix/dark.toml";
};
programs.fish.functions = {
hx = {
description = "Helix invocation wrapper to automatically select the right theme";
body = ''
if is-dark-mode
hxd $argv
else
hxl $argv
end
'';
};
};
};
}

View File

@ -1,5 +1,3 @@
# TODO: migrate this to helix
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
with lib; with lib;