Skip to content

Commit

Permalink
feat: Global enable and style options
Browse files Browse the repository at this point in the history
  • Loading branch information
mrjones2014 committed May 23, 2024
1 parent bf46b84 commit 028318b
Show file tree
Hide file tree
Showing 15 changed files with 127 additions and 112 deletions.
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,6 @@
};

outputs = inputs@{ self, ... }: {
homeManagerModules.default = import ./modules inputs;
hmModules.default = import ./modules inputs;
};
}
19 changes: 0 additions & 19 deletions modules/bat.nix

This file was deleted.

13 changes: 0 additions & 13 deletions modules/default.nix

This file was deleted.

19 changes: 0 additions & 19 deletions modules/delta.nix

This file was deleted.

4 changes: 2 additions & 2 deletions modules/global.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
inputs:
{ config, lib, ... }: {
{ lib, ... }: {
options.tokyonight = {
enable = lib.mkEnableOpt "Tokyonight globally";
style = lib.mkOption {
type = lib.types.enum [ "storm" "night" "moon" "day" ];
default = "night";
Expand Down
12 changes: 12 additions & 0 deletions modules/lib/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{ lib, config, ... }: {
mkTokyonightOpt = name: {
enable = lib.mkEnableOpt "Tokyonight theme" // {
default = config.tokyonight.enable;
};
style = lib.mkOption {
type = lib.types.enum [ "storm" "night" "moon" "day" ];
default = config.tokyonight.style;
description = "Set the tokyonight colorscheme style variant to use.";
};
};
}
20 changes: 20 additions & 0 deletions modules/lib/mkImports.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# this imports all files in a directory (besides default.nix)
# with our modified arguments
{ lib, pkgs, inputs, ... }@args:
dir:
let
# instead of letting `evalModules` pass arguments to each file
# in our list, we import them directly
applyImports = file: _:
import "${dir}/${file}" (args // {
lib =
lib.extend (final: _: { ctp = import ./. (args // { lib = final; }); });

defaultSources = import ../../.sources;
});
in lib.pipe dir [
builtins.readDir
builtins.attrNames
(lib.remove "default.nix")
(map applyImports)
]
41 changes: 0 additions & 41 deletions modules/neovim.nix

This file was deleted.

18 changes: 18 additions & 0 deletions modules/programs/bat.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{ inputs, config, lib, ... }:
let cfg = config.programs.bat.tokyonight;
in {
options.programs.bat.tokyonight = {
enable = lib.mkEnableOption "tokyonight colorscheme";
};
config = lib.mkMerge [
(lib.mkIf cfg.enable {
programs.bat = {
config.theme = "tokyonight_${cfg.style}";
themes.${"tokyonight_${cfg.style}"} = {
src = "${inputs.tokyonight}/extras/sublime/";
file = "tokyonight_${cfg.style}.tmTheme";
};
};
})
];
}
3 changes: 3 additions & 0 deletions modules/programs/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
inputs: args: {
imports = import ../lib/mkImports.nix (args // { inherit inputs; }) ./.;
}
17 changes: 17 additions & 0 deletions modules/programs/delta.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{ inputs, config, lib, ... }:
let cfg = config.programs.git.delta.tokyonight;
in {
options.programs.git.delta.tokyonight =
lib.mkTokyonightOpt "tokyonight git delta";
config = lib.mkMerge [
(lib.mkIf cfg.enable {
programs.git = {
includes = [{
path =
"${inputs.tokyonight}/extras/delta/tokyonight_${cfg.style}.gitconfig";
}];
delta.options.features = "tokyonight_${cfg.style}";
};
})
];
}
9 changes: 4 additions & 5 deletions modules/fish.nix → modules/programs/fish.nix
Original file line number Diff line number Diff line change
@@ -1,14 +1,13 @@
inputs:
{ config, lib, ... }:
let inherit (config.tokyonight) style;
{ inputs, config, lib, ... }:
let cfg = config.programs.fish.tokyonight;
in {
options.programs.fish.tokyonight = {
enable = lib.mkEnableOption "tokyonight colorscheme";
};
config = lib.mkMerge [
(lib.mkIf config.programs.fish.tokyonight.enable {
(lib.mkIf cfg.enable {
programs.fish.interactiveShellInit = builtins.readFile
"${inputs.tokyonight}/extras/fish/tokyonight_${style}.fish";
"${inputs.tokyonight}/extras/fish/tokyonight_${cfg.style}.fish";
})
];
}
13 changes: 6 additions & 7 deletions modules/fzf.nix → modules/programs/fzf.nix
Original file line number Diff line number Diff line change
@@ -1,20 +1,19 @@
inputs:
{ config, lib, ... }:
let inherit (config.tokyonight) style;
{ inputs, config, lib, ... }:
let cfg = config.programs.fzf.tokyonight;
in {
options.programs.fzf.tokyonight = {
enable = lib.mkEnableOption "tokyonight colorscheme";
};
config = lib.mkMerge [
(lib.mkIf config.programs.fzf.tokyonight.enable {
(lib.mkIf cfg.enable {
programs = {
# these are .zsh files, but the syntax is compatible
fish.interactiveShellInit = builtins.readFile
"${inputs.tokyonight}/extras/fzf/tokyonight_${style}.zsh";
"${inputs.tokyonight}/extras/fzf/tokyonight_${cfg.style}.zsh";
bash.initExtra = builtins.readFile
"${inputs.tokyonight}/extras/fzf/tokyonight_${style}.zsh";
"${inputs.tokyonight}/extras/fzf/tokyonight_${cfg.style}.zsh";
zsh.initExtra = builtins.readFile
"${inputs.tokyonight}/extras/fzf/tokyonight_${style}.zsh";
"${inputs.tokyonight}/extras/fzf/tokyonight_${cfg.style}.zsh";
};
})
];
Expand Down
40 changes: 40 additions & 0 deletions modules/programs/neovim.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{ config, lib, pkgs, ... }:
let cfg = config.programs.neovim.tokyonight;
in {
options.programs.neovim.tokyonight = (lib.mkTokyonightOpt "tokyonight neovim")
// {
extraLua = lib.mkOption {
type = lib.types.lines;
default = ''
require('tokyonight').setup({
style = "${cfg.style}"
})
'';
example = ''
require('tokyonight').setup({
-- if you use this option, you must
-- set the style property yourself
-- e.g.
style = "night",
})
'';
description =
"Configure tokyonight.nvim yourself; see https://github.com/folke/tokyonight.nvim?#%EF%B8%8F-configuration for options.";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.enable {
programs.neovim = {
plugins = [ pkgs.vimPlugins.tokyonight-nvim ];
extraLuaConfig = ''
${if builtins.hasAttr "extraLua"
config.programs.neovim.tokyonight then
config.programs.neovim.tokyonight.extraLua
else
""}
vim.cmd.colorscheme("tokyonight-${cfg.style}")
'';
};
})
];
}
9 changes: 4 additions & 5 deletions modules/rofi.nix → modules/programs/rofi.nix
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
inputs:
{ config, lib, ... }:
let inherit (config.tokyonight) style;
{ inputs, config, lib, ... }:
let cfg = config.programs.rofi.tokyonight;
in {
options.programs.rofi.tokyonight = {
enable = lib.mkEnableOption "tokyonight colorscheme";
Expand All @@ -12,11 +11,11 @@ in {
};
};
config = lib.mkMerge [
(lib.mkIf config.programs.rofi.tokyonight.enable {
(lib.mkIf cfg.enable {
programs.rofi = {
theme = {
"@theme" = builtins.path {
name = "tokyonight-${style}.rasi";
name = "tokyonight-${cfg.style}.rasi";
path = "${inputs.tokyonight-rofi}/tokyonight${
if config.programs.rofi.tokyonight.variant != "default" then
"_${config.programs.rofi.tokyonight.variant}"
Expand Down

0 comments on commit 028318b

Please sign in to comment.