1
0
mirror of https://github.com/kmein/niveum synced 2026-03-16 18:21:07 +01:00
Files
niveum/modules/constants.nix
2019-06-17 19:10:42 +02:00

105 lines
3.1 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
let
colourScheme = config.niveum.colours;
my-types.hexColour = types.strMatching "#[0-9A-Fa-f]{6}";
my-types.colourPair = types.submodule {
options = {
dark = mkOption { type = my-types.hexColour; };
bright = mkOption { type = my-types.hexColour; };
};
};
my-types.theme = types.submodule {
options = {
name = mkOption { type = types.str; };
package = mkOption { type = types.package; };
};
};
my-types.font = types.submodule {
options = {
name = mkOption { type = types.str; };
size = mkOption { type = types.ints.positive; };
};
};
my-types.colourTheme = types.submodule {
options = {
black = mkOption { type = my-types.colourPair; };
red = mkOption { type = my-types.colourPair; };
green = mkOption { type = my-types.colourPair; };
yellow = mkOption { type = my-types.colourPair; };
blue = mkOption { type = my-types.colourPair; };
magenta = mkOption { type = my-types.colourPair; };
cyan = mkOption { type = my-types.colourPair; };
white = mkOption { type = my-types.colourPair; };
background = mkOption { type = my-types.hexColour; };
foreground = mkOption { type = my-types.hexColour; };
cursor = mkOption { type = my-types.hexColour; };
};
};
in {
options.niveum = {
applications = {
terminal = mkOption { type = types.str; };
browser = mkOption { type = types.str; };
fileManager = mkOption { type = types.str; };
};
colours = mkOption { type = my-types.colourTheme; };
colourPalette = mkOption {
type = types.listOf my-types.hexColour;
default = with config.niveum.colours; [
black.dark
red.dark
green.dark
yellow.dark
blue.dark
magenta.dark
cyan.dark
white.dark
black.bright
red.bright
green.bright
yellow.bright
blue.bright
magenta.bright
cyan.bright
white.bright
];
};
networkInterfaces.wireless = mkOption { type = types.str; };
promptColours =
let colours16 = types.enum [ "black" "red" "green" "yellow" "blue" "magenta" "cyan" "white" ];
in {
success = mkOption { type = colours16; default = "green"; };
failure = mkOption { type = colours16; default = "red"; };
};
fonts = {
terminal = mkOption { type = my-types.font; };
ui = mkOption { type = my-types.font; };
};
user = {
github = mkOption { type = types.str; };
name = mkOption { type = types.str; };
email = mkOption { type = types.strMatching ".+@.+\\..+"; };
};
ignore = mkOption {
type = types.listOf types.str;
default = [ "*~" ".stack-work/" "__pycache__/" ".mypy_cache/" "*.py[co]" "*.o" "*.hi" "*.aux" "*.bbl" "*.bcf" "*.blg" "*.fdb_latexmk" "*.fls" "*.out" "*.run.xml" "*.toc" "*.bbl" "*.class" "*.dyn_hi" "*.dyn_o" "dist/" ];
};
theme = {
gtk = mkOption { type = my-types.theme; };
icon = mkOption { type = my-types.theme; };
cursor = mkOption { type = my-types.theme; };
};
};
}