summaryrefslogtreecommitdiff
path: root/home-manager
diff options
context:
space:
mode:
authorJakub Trzeciak <jptrzy@gmail.com>2023-09-20 20:43:52 +0200
committerJakub Trzeciak <jptrzy@gmail.com>2023-09-20 20:43:52 +0200
commit5296090c63384e1c4ba3de95dd04763026da7b5c (patch)
treeafa8b1843802695b8ef52231989ed7ad3f6e5cd0 /home-manager
parenta9d588b7d03eef47ae29207ae79e1efef347f9a3 (diff)
downloadnixos-5296090c63384e1c4ba3de95dd04763026da7b5c.tar.gz
nixos-5296090c63384e1c4ba3de95dd04763026da7b5c.tar.bz2
nixos-5296090c63384e1c4ba3de95dd04763026da7b5c.zip
nix-colors
Diffstat (limited to 'home-manager')
-rw-r--r--home-manager/.Xresources42
-rw-r--r--home-manager/addons/alacritty.nix39
-rw-r--r--home-manager/addons/xresources.nix35
-rw-r--r--home-manager/home.nix67
-rw-r--r--home-manager/schemeFromYAML.nix64
5 files changed, 162 insertions, 85 deletions
diff --git a/home-manager/.Xresources b/home-manager/.Xresources
deleted file mode 100644
index 9bc01b0..0000000
--- a/home-manager/.Xresources
+++ /dev/null
@@ -1,42 +0,0 @@
-*.window.background: #181921
-*.window.foreground: #ba5ac9
-*.bar.background: #ba5ac9
-*.bar.foreground: #eceadd
-*.mark.foreground: #eceadd
-
-! special
-*.foreground: #eceadd
-*.background: #181921
-*.cursorColor: #eceadd
-
-! black
-*.color0: #090618
-*.color8: #413e53
-
-! red
-*.color1: #e32929
-*.color9: #d94545
-
-! green
-*.color2: #bdcc27
-*.color10: #bac455
-
-! yellow
-*.color3: #ff920d
-*.color11: #e59e46
-
-! blue
-*.color4: #1984db
-*.color12: #5a9dd4
-
-! magenta
-*.color5: #af18db
-*.color13: #ba5ac9
-
-! cyan
-*.color6: #55c8b9
-*.color14: #61b5aa
-
-! white
-*.color7: #9ca7b2
-*.color15: #f1f1f1
diff --git a/home-manager/addons/alacritty.nix b/home-manager/addons/alacritty.nix
new file mode 100644
index 0000000..8ae52f2
--- /dev/null
+++ b/home-manager/addons/alacritty.nix
@@ -0,0 +1,39 @@
+{ pkgs, config, ... }:
+
+{
+ home.file = {
+ ".config/alacritty/alacritty.yml".text = ''
+ font:
+ normal:
+ family: Neo Comic Mono
+ style: Regular
+ bold:
+ family: Neo Comic Mono
+ style: Bold
+ size: 12
+
+ colors:
+ primary:
+ background: '0x${config.colorScheme.colors.base00}'
+ foreground: '0x${config.colorScheme.colors.base05}'
+ normal:
+ black: '0x${config.colorScheme.colors.base01}'
+ red: '0x${config.colorScheme.colors.base08}'
+ green: '0x${config.colorScheme.colors.base0B}'
+ yellow: '0x${config.colorScheme.colors.base0A}'
+ blue: '0x${config.colorScheme.colors.base0D}'
+ magenta: '0x${config.colorScheme.colors.base0E}'
+ cyan: '0x${config.colorScheme.colors.base0C}'
+ white: '0x${config.colorScheme.colors.base06}'
+ bright:
+ black: '0x${config.colorScheme.colors.base02}'
+ red: '0x${config.colorScheme.colors.base12}'
+ green: '0x${config.colorScheme.colors.base14}'
+ yellow: '0x${config.colorScheme.colors.base13}'
+ blue: '0x${config.colorScheme.colors.base16}'
+ magenta: '0x${config.colorScheme.colors.base17}'
+ cyan: '0x${config.colorScheme.colors.base15}'
+ white: '0x${config.colorScheme.colors.base07}'
+ '';
+ };
+}
diff --git a/home-manager/addons/xresources.nix b/home-manager/addons/xresources.nix
new file mode 100644
index 0000000..9be35a1
--- /dev/null
+++ b/home-manager/addons/xresources.nix
@@ -0,0 +1,35 @@
+{ pkgs, config, ... }:
+
+{
+ home.file = {
+ ".config/Xresources".text = ''
+ *.window.background: #${config.colorScheme.colors.base00}
+ *.window.foreground: #${config.colorScheme.colors.base0E}
+ *.bar.background: #${config.colorScheme.colors.base02}
+ *.bar.foreground: #${config.colorScheme.colors.base05}
+ *.mark.foreground: #${config.colorScheme.colors.base0E}
+
+ *.foreground: #${config.colorScheme.colors.base05}
+ *.background: #${config.colorScheme.colors.base00}
+ *.cursorColor: #${config.colorScheme.colors.base05}
+
+ *.color00: #${config.colorScheme.colors.base01}
+ *.color01: #${config.colorScheme.colors.base08}
+ *.color02: #${config.colorScheme.colors.base0B}
+ *.color03: #${config.colorScheme.colors.base0A}
+ *.color04: #${config.colorScheme.colors.base0D}
+ *.color05: #${config.colorScheme.colors.base0E}
+ *.color06: #${config.colorScheme.colors.base0C}
+ *.color07: #${config.colorScheme.colors.base06}
+
+ *.color08: #${config.colorScheme.colors.base02}
+ *.color09: #${config.colorScheme.colors.base12}
+ *.color10: #${config.colorScheme.colors.base14}
+ *.color11: #${config.colorScheme.colors.base13}
+ *.color12: #${config.colorScheme.colors.base16}
+ *.color13: #${config.colorScheme.colors.base17}
+ *.color14: #${config.colorScheme.colors.base15}
+ *.color15: #${config.colorScheme.colors.base07}
+ '';
+ };
+}
diff --git a/home-manager/home.nix b/home-manager/home.nix
index b46d8ba..10f46be 100644
--- a/home-manager/home.nix
+++ b/home-manager/home.nix
@@ -1,11 +1,27 @@
-{ username, pkgs, lib, ... }:
-
+{ username, nix-colors, config, pkgs, lib, ... }:
let
nvim-spell-pl-utf8-dict = builtins.fetchurl {
url = "http://ftp.vim.org/vim/runtime/spell/pl.utf-8.spl";
sha256 = "1sg7hnjkvhilvh0sidjw5ciih0vdia9vas8vfrd9vxnk9ij51khl";
};
+
+ lux-scheme = builtins.fetchurl {
+ url = "https://git.jptrzy.xyz/lux-theme/plain/lux-theme.yaml?h=main";
+ };
+
+ nix-colors-lib = nix-colors.lib.contrib { inherit pkgs; };
+
+ schemeFromYaml = import ./schemeFromYAML.nix;
in {
+ imports = [
+ nix-colors.homeManagerModules.default
+ ./firefox.nix
+ ./addons/alacritty.nix
+ ./addons/xresources.nix
+ ];
+
+ colorScheme = schemeFromYaml "lux-scheme" (builtins.readFile lux-scheme);
+
home.username = "${username}";
home.homeDirectory = "/home/${username}";
@@ -45,41 +61,6 @@ in {
".config/nvim/spell/pl.utf-8.spl".source = nvim-spell-pl-utf8-dict;
".config/sx/sxrc".source = ./sxrc;
- ".config/Xresources".source = ./.Xresources;
-
- ".config/alacritty/alacritty.yml".text = ''
- font:
- normal:
- family: Neo Comic Mono
- style: Regular
- bold:
- family: Neo Comic Mono
- style: Bold
- size: 12
-
- colors:
- primary:
- background: '0x181921'
- foreground: '0xeceadd'
- normal:
- black: '0x090618'
- red: '0xe32929'
- green: '0xbdcc27'
- yellow: '0xff920d'
- blue: '0x1984db'
- magenta: '0xaf18db'
- cyan: '0x55c8b9'
- white: '0x9ca7b2'
- bright:
- black: '0x413e53'
- red: '0xd94545'
- green: '0xbac455'
- yellow: '0xe59e46'
- blue: '0x5a9dd4'
- magenta: '0xba5ac9'
- cyan: '0x61b5aa'
- white: '0xf1f1f1'
- '';
".local/share/gnupg/gpg-agent.conf".text = ''
debug-pinentry
@@ -107,13 +88,15 @@ in {
font.name = "Neo Comic Mono 12";
theme = {
- name = "Flat-Remix-GTK-Violet-Dark";
- package = pkgs.flat-remix-gtk;
+ name = "lux-scheme";
+ package = nix-colors-lib.gtkThemeFromScheme {
+ scheme = config.colorScheme;
+ };
};
iconTheme = {
- name = "Flat-Remix-Violet-Dark";
- package = pkgs.flat-remix-icon-theme;
+ name = "Adwaita";
+ package = pkgs.gnome.adwaita-icon-theme;
};
cursorTheme = {
@@ -176,6 +159,4 @@ in {
};
};
};
-
- imports = [ ./firefox.nix ];
}
diff --git a/home-manager/schemeFromYAML.nix b/home-manager/schemeFromYAML.nix
new file mode 100644
index 0000000..ead10c8
--- /dev/null
+++ b/home-manager/schemeFromYAML.nix
@@ -0,0 +1,64 @@
+# Based on https://raw.githubusercontent.com/Misterio77/nix-colors/b92df8f5eb1fa20d8e09810c03c9dc0d94ef2820/lib/core/schemeFromYAML.nix
+
+let
+ inherit (builtins)
+ elemAt filter listToAttrs substring replaceStrings stringLength genList;
+
+ # All of these are borrowed from nixpkgs
+ mapListToAttrs = f: l: listToAttrs (map f l);
+ escapeRegex = escape (stringToCharacters "\\[{()^$?*+|.");
+ addContextFrom = a: b: substring 0 0 a + b;
+ escape = list: replaceStrings list (map (c: "\\${c}") list);
+ range = first: last:
+ if first > last then [ ] else genList (n: first + n) (last - first + 1);
+ stringToCharacters = s:
+ map (p: substring p 1 s) (range 0 (stringLength s - 1));
+ splitString = _sep: _s:
+ let
+ sep = builtins.unsafeDiscardStringContext _sep;
+ s = builtins.unsafeDiscardStringContext _s;
+ splits = filter builtins.isString (builtins.split (escapeRegex sep) s);
+ in
+ map (v: addContextFrom _sep (addContextFrom _s v)) splits;
+ nameValuePair = name: value: { inherit name value; };
+
+ # From https://github.com/arcnmx/nixexprs
+ fromYAML = yaml:
+ let
+ stripLine = line: elemAt (builtins.match "(^[^#]*)($|#.*$)" line) 0;
+ usefulLine = line: builtins.match "[ \\t]*" line == null;
+ parseString = token:
+ let match = builtins.match ''([^"]+|"([^"]*)" *)'' token;
+ in if match == null then
+ throw ''YAML string parse failed: "${token}"''
+ else if elemAt match 1 != null then
+ elemAt match 1
+ else
+ elemAt match 0;
+ attrLine = line:
+ let match = builtins.match "([^ :]+): *(.*)" line;
+ in if match == null then
+ throw ''YAML parse failed: "${line}"''
+ else
+ nameValuePair (elemAt match 0) (parseString (elemAt match 1));
+ lines = splitString "\n" yaml;
+ lines' = map stripLine lines;
+ lines'' = filter usefulLine lines';
+ in
+ mapListToAttrs attrLine lines'';
+
+ convertScheme = slug: set: {
+ name = set.scheme;
+ inherit (set) author;
+ inherit slug;
+ colors = {
+ inherit (set)
+ base00 base01 base02 base03 base04 base05 base06 base07
+ base08 base09 base0A base0B base0C base0D base0E base0F
+ base10 base11 base12 base13 base14 base15 base16 base17;
+ };
+ };
+
+ schemeFromYAML = slug: content: convertScheme slug (fromYAML content);
+in
+schemeFromYAML
Software created with 💖