base16-nix/README.md
2021-09-27 22:35:31 +03:00

173 lines
4.2 KiB
Markdown

# Base16 themes for home manager
This is a fork of [lukebfox/base16-nix](https://github.com/lukebfox/base16-nix)
Differences:
- Returns support for obtaining color values from the color scheme
- Added possibility to select a template type (`'default'`, `'color'`, etc)
- Added possibility to use custom schemes by importing local files or remote repository
- Removed unused files
## Usage
import this flake in your 'flake.nix':
```nix
inputs.base16.url = "github:alukardbf/base16-nix";
```
then, in any home-manager configuration:
```nix
home.user.${user} = { config, pkgs, lib }: {
imports = [ base16.hmModule ];
};
```
```nix
{ pkgs, lib, config, ...}:
{
config = {
# Choose your theme
themes.base16 = {
enable = true;
scheme = "solarized";
variant = "solarized-dark";
defaultTemplateType = "default";
# Add extra variables for inclusion in custom templates
extraParams = {
fontName = "Roboto Mono";
fontSize = "12";
};
};
# 1. Use pre-provided templates
###############################
programs.bash.initExtra = ''
source ${config.lib.base16.templateFile { name = "shell"; }}
'';
programs.rofi = {
enable = true;
theme = "${config.lib.base16.templateFile { name = "rofi"; type = "colors"; }}";
};
# 2. Template strings directly into other home-manager configuration
####################################################################
services.dunst = {
enable = true;
settings = with config.lib.base16.theme;
{
global = {
geometry = "600x1-800+-3";
icon_path =
config.services.dunst.settings.global.icon_folders;
alignment = "right";
font = "${fontName} ${fontSize}";
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}";
};
};
};
};
}
```
You can also use local schemes:
```nix
{ pkgs, lib, config, ...}:
{
config = {
# Choose your theme
themes.base16 = {
enable = true;
customScheme = {
enable = true;
path = ./base16-custom-scheme.yaml;
};
};
};
}
```
Or use an imported color scheme:
For example, import scheme repository into yours 'flake.nix'
```nix
inputs.base16-horizon-scheme = {
url = github:michael-ball/base16-horizon-scheme;
flake = false;
};
```
```nix
{ pkgs, lib, config, inputs, ...}:
{
config = {
# Choose your theme
themes.base16 = {
enable = true;
customScheme = {
enable = true;
path = "${inputs.base16-horizon-scheme}/horizon-dark.yaml";
};
};
# The template will be generated from the local scheme
programs.rofi = {
enable = true;
theme = "${config.lib.base16.templateFile { name = "rofi"; }}";
};
};
}
```
## Reloading
Changing themes involves switching the theme definition 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 occasionally restarting applications has been enough.
You are unlikely to achieve a complete switch without logging out and logging back
in again.
Also, if you use home-manager as a module in the system configuration, the switch should be done with the command `nixos-rebuild switch`.
## Updating Sources
If you're using nix flakes:
- Fork this repository
- `cd` into repository dir
- Enter `nix develop` and then run `update-base16` OR
- Enter `nix run .`
- Commit and push new files
If you're **not** using nix flakes:
- `cd` into repository dir
- Run `update_sources.sh`
## Todo
Improve the source code.