select template type

This commit is contained in:
Dmitriy Kholkin 2020-08-10 00:51:23 +04:00
parent 6980dd922b
commit 7039e397b2
Signed by: AtaraxiaDev
GPG Key ID: FD266B810DF48DF2
2 changed files with 23 additions and 14 deletions

View File

@ -5,6 +5,7 @@ This is a fork of [lukebfox/base16-nix](https://github.com/lukebfox/base16-nix)
Differences: Differences:
- Returns support for obtaining color values from the color scheme - Returns support for obtaining color values from the color scheme
- Added possibility to select a template type (`'default'`, `'color'`, etc)
- Removed unused files - Removed unused files
## Usage ## Usage
@ -34,10 +35,11 @@ home.user.${user} = { config, pkgs, lib }: {
enable = true; enable = true;
scheme = "solarized"; scheme = "solarized";
variant = "solarized-dark"; variant = "solarized-dark";
defaultTemplateType = "default";
# Add extra variables for inclusion in custom templates # Add extra variables for inclusion in custom templates
extraParams = { extraParams = {
fontName = mkDefault "Roboto"; fontName = "Roboto Mono";
fontSize = mkDefault "12"; fontSize = "12";
}; };
}; };
@ -45,17 +47,19 @@ home.user.${user} = { config, pkgs, lib }: {
############################### ###############################
programs.bash.initExtra = '' programs.bash.initExtra = ''
source ${config.base16.templateFile "shell"} source ${config.lib.base16.templateFile { name = "shell"; };}
''; '';
home.file.".vim/colors/mycolorscheme.vim".source = programs.rofi = {
config.base16.templateFile "vim"; enable = true;
theme = "${config.lib.base16.templateFile { name = "rofi"; type = "color"; };}";
};
# 2. Template strings directly into other home-manager configuration # 2. Template strings directly into other home-manager configuration
#################################################################### ####################################################################
services.dunst = { services.dunst = {
enable = true; enable = true;
settings = with config.base16.theme; settings = with config.lib.base16.theme;
{ {
global = { global = {
geometry = "600x1-800+-3"; geometry = "600x1-800+-3";

View File

@ -14,15 +14,14 @@ let
mkTheme = scheme: variant: mkTheme = scheme: variant:
"${pkgs.fetchgit (schemes."${scheme}")}/${variant}.yaml"; "${pkgs.fetchgit (schemes."${scheme}")}/${variant}.yaml";
# Source file for a given base16 template. Use the colors-only template # Source file for a given base16 template.
# if one exists, as I generally prefer to do my own customisations.
# Returns the nix store path of the file. # Returns the nix store path of the file.
mkTemplate = name: mkTemplate = name: type:
let let
templateDir = "${pkgs.fetchgit (templates."${name}")}/templates"; templateDir = "${pkgs.fetchgit (templates."${name}")}/templates";
in in
if pathExists (templateDir + "/colors.mustache") if pathExists (templateDir + "/${type}.mustache")
then templateDir + "/colors.mustache" then templateDir + "/${type}.mustache"
else templateDir + "/default.mustache"; else templateDir + "/default.mustache";
# The theme yaml files only supply 16 hex values, but the templates take # The theme yaml files only supply 16 hex values, but the templates take
@ -44,11 +43,11 @@ let
# Mustache engine. Applies any theme to any template, providing they are # Mustache engine. Applies any theme to any template, providing they are
# included in the local json source files. # included in the local json source files.
mustache = scheme: variant: name: mustache = scheme: variant: name: type:
pkgs.stdenv.mkDerivation { pkgs.stdenv.mkDerivation {
name = "${name}-base16-${variant}"; name = "${name}-base16-${variant}";
data = preprocess (mkTheme scheme variant); data = preprocess (mkTheme scheme variant);
src = mkTemplate name; src = mkTemplate name type;
phases = [ "buildPhase" ]; phases = [ "buildPhase" ];
buildPhase ="${pkgs.mustache-go}/bin/mustache $data $src > $out"; buildPhase ="${pkgs.mustache-go}/bin/mustache $data $src > $out";
allowSubstitutes = false; # will never be in cache allowSubstitutes = false; # will never be in cache
@ -73,9 +72,15 @@ in
type = types.attrsOf types.str; type = types.attrsOf types.str;
default = {}; default = {};
}; };
themes.base16.defaultTemplateType = mkOption {
type = types.str;
default = "default";
example = "colors";
};
}; };
config = { config = {
lib.base16.theme = schemeJSON cfg.scheme cfg.variant // cfg.extraParams; lib.base16.theme = schemeJSON cfg.scheme cfg.variant // cfg.extraParams;
lib.base16.templateFile = mustache cfg.scheme cfg.variant; lib.base16.templateFile = { name, type ? cfg.defaultTemplateType, ... }:
mustache cfg.scheme cfg.variant name type;
}; };
} }