base16-nix/README.md

118 lines
3.5 KiB
Markdown
Raw Normal View History

2019-02-17 10:29:11 +00:00
# Base16 themes for home manager
This is a messy, personal set of scripts for managing colour schemes within
hame manager. I am yet to share it because there are some unprincipled
components likely to break (e.g. using `sed` to read yaml files), and because
the build functions it introduces use sizable external dependencies.
I have found aspects of this very nice to use, and have tried to clean it up
enough to be suitable for others to adapt. YMMV however.
## Usage
N.b. this example roughly reflects y usage, but I haven't tried to use it
directly, so there may be typos / bugs
```nix
{pkgs, lib, config, ...}:
{
imports = [ ./base16.nix ];
2019-02-17 10:32:56 +00:00
config = {
2019-02-17 10:29:11 +00:00
# Choose your themee
themes.base16 = {
enable = true;
scheme = "solarized";
variant = "solarized-dark";
# Add extra variables for inclusion in custom templates
extraParams = {
fontname = mkDefault "Inconsolata LGC for Powerline";
headerfontname = mkDefault "Cabin";
bodysize = mkDefault "10";
headersize = mkDefault "12";
xdpi= mkDefault ''
Xft.hintstyle: hintfull
'';
};
};
# 1. Use pre-provided templates
###############################
programs.bash.initExtra = ''
source ${config.lib.base16.base16template "shell"}
'';
home.file.".vim/colors/mycolorscheme.vim".source =
config.lib.base16.base16template "vim";
# 2. Use your own templates
###########################
home.file.".Xresources".source = config.lib.base16.template {
src = ./examples/Xresources;
};
home.file.".xmonad/xmobarrc".source = config.lib.base16.template {
src = ./examples/xmobarrc;
};
# 3. Template strings directly into other home-manager configuration
####################################################################
services.dunst = {
enable = true;
settings = with config.lib.base16.theme;
{
global = {
geometry = "600x1-800+-3";
font = "${headerfontname} ${headersize}";
icon_path =
config.services.dunst.settings.global.icon_folders;
alignment = "right";
frame_width = 0;
separator_height = 0;
sort = true;
};
urgency_low = {
background = "#${base01-hex}";
foreground = "#${base03-hex}";
};
urgency_normal = {
background = "#${base01-hex}";
foreground = "#${base05-hex}";
};
urgency_critical = {
msg_urgency = "CRITICAL";
background = "#${base01-hex}";
foreground = "#${base08-hex}";
};
};
};
};
}
```
## Reloading
Changing themes involves switching the theme definitoin and typing
`home-manager switch`. There is no attempt in general to force programs to
reload, and not all are able to reload their configs, although I have found
that reloading xmonad and occasionally restarting applications has been
enough.
You are unlikely to achieve a complet switch without logging out and logging back
in again.
## Todo
Provide better support for custom schemes (currently this assumes you'll
want to use something in the base16 repositories, but there is no reason
for this).
## Updating Sources
`cd` into the directory in which the templates.yaml and schemes.yaml are
located, and run update_sources.sh