Implemented custom system for creating and distributing color schemes based on wallpapers, and also cycling through wallpapers.
nixfmt'd the codebase
This commit is contained in:
@@ -1,40 +1,51 @@
|
||||
{ pkgs, lib, self, config, ... }:
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
self,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
# This folder is for programs that do not have existing configuration modules in NixOS.
|
||||
# Basically a to-do list for stuff I need to write my own modules for.
|
||||
let
|
||||
# Extract color scheme from base_16 yaml file
|
||||
extractSchemeFromYaml = base16_scheme: let
|
||||
scheme_path = "${pkgs.base16-schemes}/share/themes/${base16_scheme}.yaml";
|
||||
scheme_string = builtins.readFile scheme_path;
|
||||
scheme_list = lib.splitString "\n" scheme_string; # Split into a list
|
||||
colors =
|
||||
lib.filter (line: builtins.match "^ *base[0-9A-F]{2}: .*" line != null) # Get raw hex values from scheme list
|
||||
scheme_list;
|
||||
parsed_scheme = lib.lists.foldl' (acc: line: # Initialize attribute set and begin folding values into it
|
||||
let
|
||||
splitLine = lib.splitString ": " line; # Split into keys (base00, base01, etc.) and values
|
||||
key = builtins.elemAt splitLine 0;
|
||||
value = builtins.elemAt splitLine 1;
|
||||
trimmedKey = lib.trim key; # Start cleaning values
|
||||
cleanValue_step1 = lib.splitString " " value;
|
||||
cleanValue_step2 = builtins.elemAt cleanValue_step1 0; # Get just the hex value, ignore comments etc.
|
||||
cleanValue_final =
|
||||
builtins.substring 1 (builtins.stringLength cleanValue_step2 - 2)
|
||||
cleanValue_step2;
|
||||
in acc // { "${trimmedKey}" = cleanValue_final; }) { } colors; # Accumulate keys/values into attribute set
|
||||
in parsed_scheme; # Return parsed color scheme
|
||||
extractSchemeFromYaml =
|
||||
base16_scheme:
|
||||
let
|
||||
scheme_path = "${pkgs.base16-schemes}/share/themes/${base16_scheme}.yaml";
|
||||
scheme_string = builtins.readFile scheme_path;
|
||||
scheme_list = lib.splitString "\n" scheme_string; # Split into a list
|
||||
colors =
|
||||
lib.filter (line: builtins.match "^ *base[0-9A-F]{2}: .*" line != null) # Get raw hex values from scheme list
|
||||
scheme_list;
|
||||
parsed_scheme = lib.lists.foldl' (
|
||||
acc: line: # Initialize attribute set and begin folding values into it
|
||||
let
|
||||
splitLine = lib.splitString ": " line; # Split into keys (base00, base01, etc.) and values
|
||||
key = builtins.elemAt splitLine 0;
|
||||
value = builtins.elemAt splitLine 1;
|
||||
trimmedKey = lib.trim key; # Start cleaning values
|
||||
cleanValue_step1 = lib.splitString " " value;
|
||||
cleanValue_step2 = builtins.elemAt cleanValue_step1 0; # Get just the hex value, ignore comments etc.
|
||||
cleanValue_final = builtins.substring 1 (
|
||||
builtins.stringLength cleanValue_step2 - 2
|
||||
) cleanValue_step2;
|
||||
in
|
||||
acc // { "${trimmedKey}" = cleanValue_final; }
|
||||
) { } colors; # Accumulate keys/values into attribute set
|
||||
in
|
||||
parsed_scheme; # Return parsed color scheme
|
||||
|
||||
ssh_scheme = extractSchemeFromYaml "atelier-cave" ;
|
||||
nix-shell_scheme = extractSchemeFromYaml "blueish";
|
||||
ssh_scheme = extractSchemeFromYaml "atelier-cave";
|
||||
nix-shell_scheme = extractSchemeFromYaml "blueish";
|
||||
def_scheme = config.lib.stylix.colors;
|
||||
|
||||
|
||||
# Custom theme for nix-shell
|
||||
in {
|
||||
in
|
||||
{
|
||||
options = {
|
||||
movOpts.homeFiles.enable =
|
||||
lib.mkEnableOption "enables declared custom files";
|
||||
movOpts.homeFiles.enable = lib.mkEnableOption "enables declared custom files";
|
||||
};
|
||||
config = {
|
||||
home.file = {
|
||||
|
||||
Reference in New Issue
Block a user