mirror of
https://github.com/kittywitch/nixfiles.git
synced 2026-02-09 20:39:18 -08:00
76 lines
1.8 KiB
Nix
76 lines
1.8 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
lib,
|
|
std,
|
|
...
|
|
}: let
|
|
inherit (lib.options) mkOption;
|
|
inherit (lib.types) attrsOf str enum;
|
|
inherit (lib.modules) mkIf;
|
|
inherit (std) string set tuple list;
|
|
cfg = config.base16;
|
|
in {
|
|
options.base16 = {
|
|
palette = mkOption {
|
|
type = attrsOf str;
|
|
};
|
|
sass = {
|
|
variables = mkOption {
|
|
type = attrsOf str;
|
|
default =
|
|
cfg.palette
|
|
// {
|
|
term_font = "Iosevka";
|
|
font = "Iosevka";
|
|
font_size = "12px";
|
|
};
|
|
};
|
|
css_style = mkOption {
|
|
type = enum ["nested" "compressed" "compact" "expanded"];
|
|
default = "expanded";
|
|
};
|
|
};
|
|
};
|
|
config = mkIf (cfg.schemes != {}) {
|
|
base16 = {
|
|
palette = set.fromList (set.mapToValues (
|
|
k: v:
|
|
tuple.tuple2
|
|
k
|
|
"#${v.hex}"
|
|
)
|
|
(set.filter (n: _: string.hasPrefix "base" n)
|
|
cfg.defaultScheme));
|
|
};
|
|
|
|
lib.kittywitch.sassTemplate = {
|
|
name,
|
|
src,
|
|
}: let
|
|
variables = pkgs.writeText "base-variables.sass" ''
|
|
${(string.concatSep "\n" (set.mapToValues (var: con: "\$${var}: ${con}") cfg.sass.variables))}
|
|
'';
|
|
source =
|
|
pkgs.callPackage
|
|
({
|
|
sass,
|
|
stdenv,
|
|
}:
|
|
stdenv.mkDerivation {
|
|
inherit name src variables;
|
|
nativeBuildInputs = list.singleton pkgs.sass;
|
|
phases = ["buildPhase"];
|
|
buildPhase = ''
|
|
cat $variables $src > src-mut.sass
|
|
sass src-mut.sass $out --sourcemap=none --trace --style=${cfg.sass.css_style}
|
|
'';
|
|
})
|
|
{};
|
|
in {
|
|
inherit source;
|
|
text = builtins.readFile source;
|
|
};
|
|
_module.args = {inherit (config.lib) kittywitch;};
|
|
};
|
|
}
|