diff --git a/flake.lock b/flake.lock index b3bd7ec..e128d1d 100755 --- a/flake.lock +++ b/flake.lock @@ -117,11 +117,11 @@ ] }, "locked": { - "lastModified": 1714043624, - "narHash": "sha256-Xn2r0Jv95TswvPlvamCC46wwNo8ALjRCMBJbGykdhcM=", + "lastModified": 1715381426, + "narHash": "sha256-wPuqrAQGdv3ISs74nJfGb+Yprm23U/rFpcHFFNWgM94=", "owner": "nix-community", "repo": "home-manager", - "rev": "86853e31dc1b62c6eeed11c667e8cdd0285d4411", + "rev": "ab5542e9dbd13d0100f8baae2bc2d68af901f4b4", "type": "github" }, "original": { @@ -163,26 +163,26 @@ "hyprland": { "inputs": { "hyprcursor": "hyprcursor", - "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang", "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs", "systems": "systems", - "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1714248933, - "narHash": "sha256-hACvj8q0ucxslZmHf7j6bYlxVeDkJleAW+sCHGv4+2k=", - "owner": "hyprwm", - "repo": "Hyprland", - "rev": "2e763764bfdaee2039961c6c220b5d6af31712d4", - "type": "github" + "lastModified": 1715526061, + "narHash": "sha256-cVhbpdH8ln4ybFAG3yJFDTbKYTATok8cEkOM94IM0cU=", + "ref": "refs/heads/main", + "rev": "fd35b35000fa11ce540d944966ff17c71c31fd27", + "revCount": 4678, + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" }, "original": { - "owner": "hyprwm", - "repo": "Hyprland", - "type": "github" + "submodules": true, + "type": "git", + "url": "https://github.com/hyprwm/Hyprland" } }, "hyprland-plugins": { @@ -197,11 +197,11 @@ ] }, "locked": { - "lastModified": 1714219583, - "narHash": "sha256-s6yf/bsAum3sAXSxB5gDCHQoLMn5Skl9EWL8nvsXzog=", + "lastModified": 1715172513, + "narHash": "sha256-TjQ74AGpEgNx/+sM0VKnPAOlYEG22FUJ9+RwDDP/hoA=", "owner": "hyprwm", "repo": "hyprland-plugins", - "rev": "97e9d252ffec654cdc69a2cea8b63a172795706b", + "rev": "dcbdc9a08d1df753d6799bab823486f1fff5b8e6", "type": "github" }, "original": { @@ -214,10 +214,12 @@ "inputs": { "nixpkgs": [ "hyprland", + "xdph", "nixpkgs" ], "systems": [ "hyprland", + "xdph", "systems" ] }, @@ -272,11 +274,11 @@ ] }, "locked": { - "lastModified": 1714171579, - "narHash": "sha256-eaWDIvt8ufUKKz3Lc2a3PyemLJG1m9RYlF+HP3hWbaw=", + "lastModified": 1715287423, + "narHash": "sha256-B7AJIjOyWgVMKhu7DlOnWa0VprdhywUVHuB/j+EwSxM=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "126dad854f22fe30e6b82cd21808e76903d90ac5", + "rev": "e2fc1c0eb8b392110588f478cce644348ead7271", "type": "github" }, "original": { @@ -312,11 +314,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1714076141, - "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "lastModified": 1715087517, + "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29", "type": "github" }, "original": { @@ -344,11 +346,11 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1714076141, - "narHash": "sha256-Drmja/f5MRHZCskS6mvzFqxEaZMeciScCTFxWVLqWEY=", + "lastModified": 1715447595, + "narHash": "sha256-VsVAUQOj/cS1LCOmMjAGeRksXIAdPnFIjCQ0XLkCsT0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7bb2ccd8cdc44c91edba16c48d2c8f331fb3d856", + "rev": "062ca2a9370a27a35c524dc82d540e6e9824b652", "type": "github" }, "original": { @@ -359,11 +361,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1714556388, - "narHash": "sha256-Mxp8hX2gH30HoIQ+INvWY5P0sKBli8BmiGzZcKVD6co=", + "lastModified": 1682741954, + "narHash": "sha256-RPZxzRu8XU0YD2WeYUFYzJy5yAvWUsxkuK+zWw+6WVk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c10b1bb002e7414ecf7c9d9e5f7ebaeaeae32c92", + "rev": "373e9eb4c42b2fc0611d794de5ea715a35d72393", "type": "github" }, "original": { @@ -375,11 +377,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1713995372, - "narHash": "sha256-fFE3M0vCoiSwCX02z8VF58jXFRj9enYUSTqjyHAjrds=", + "lastModified": 1715395895, + "narHash": "sha256-DreMqi6+qa21ffLQqhMQL2XRUkAGt3N7iVB5FhJKie4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dd37924974b9202f8226ed5d74a252a9785aedf8", + "rev": "71bae31b7dbc335528ca7e96f479ec93462323ff", "type": "github" }, "original": { @@ -484,29 +486,9 @@ "type": "github" } }, - "wlroots": { - "flake": false, - "locked": { - "lastModified": 1713731601, - "narHash": "sha256-bdcKdtLkusvv85DNuJsajZLFeq7bXp+x5AGP1Sd4wD8=", - "owner": "hyprwm", - "repo": "wlroots-hyprland", - "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "wlroots-hyprland", - "rev": "5c1d51c5a2793480f5b6c4341ad0797052aec2ea", - "type": "github" - } - }, "xdph": { "inputs": { - "hyprland-protocols": [ - "hyprland", - "hyprland-protocols" - ], + "hyprland-protocols": "hyprland-protocols", "hyprlang": [ "hyprland", "hyprlang" @@ -521,11 +503,11 @@ ] }, "locked": { - "lastModified": 1713724432, - "narHash": "sha256-dtU1y4oj/0Y42oauzm93ucFg1AoqETnQ21bmXTIUng0=", + "lastModified": 1714662532, + "narHash": "sha256-Pj2xGSYhapYbXL7sk7TTlOtCZcTfPQoL3fPbZeg7L4Y=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "9ace6f969ce495185df34cc6254fb9d297765478", + "rev": "1f228ba2f1f254195c0b571302b37482861abee3", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index f828093..b000dea 100755 --- a/flake.nix +++ b/flake.nix @@ -9,8 +9,9 @@ inputs.nixpkgs.follows = "nixpkgs"; }; - hyprland ={ - url = "github:hyprwm/Hyprland"; + hyprland = { + url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; + # url = "github:hyprwm/Hyprland"; # inputs.nixpkgs.follows = "nixpkgs"; }; hyprland-plugins = { @@ -75,35 +76,38 @@ }; secrets = import ./secrets/passwords-and-certificates.nix; - + rice = rec { lib = import ./nxlib/ricelib.nix { lib = nixpkgs.lib; }; transparency = 0.9; rounding = 0; gap-size = 0; border-width = 2; - color = rec { - background = "#000000"; - foreground = white; - border = red; - accent = magenta; - black = "#111111"; # "#000000" "#000000" - bright-black = "#444444"; # "#231a40" "#231a40" - blue = "#4411ff"; # "#9d00ff" "#432d59" - bright-blue = "#9977ff"; # "#c76eff" "#593380" - cyan = "#00ffff"; # "#00ddff" "#00ff00" - bright-cyan = "#88ffff"; # "#33f9ff" "#b08ae6" - green = "#00ff00"; # "#0048ff" "#9045e6" - bright-green = "#88ff88"; # "#1166ff" "#a366ff" - magenta = "#ff00ff"; # "#B21889" "#a82ee6" - bright-magenta = "#ff88ff"; # "#ff75f6" "#bb66cc" - red = "#ff0044"; # "#ff0044" "#f29df2" - bright-red = "#ff4499"; # "#ff4576" "#4595e6" - white = "#dddddd"; # "#939599" "#40dfff" - bright-white = "#ffffff"; # "#ffffff" "#4136d9" - yellow = "#ff4400"; # "#ff4000" "#7e5ce6" - bright-yellow = "#ff8844"; # "#ff8454" "#a886bf" - }; + color = + let + dark = (-0.3); + bright = (0.3); + alter = let f = rice.lib.alter-luminace-hex; in color-name: color-value: { base = color-value; dark = f color-value dark; bright = f color-value bright; }; + ccolor = builtins.mapAttrs alter { + black = "#000000"; + grey = "#666666"; + white = "#dddddd"; + blue = "#4411ff"; + cyan = "#00ffff"; + green = "#00ff00"; + magenta = "#ff00ff"; + red = "#ff0044"; + yellow = "#ff4400"; + }; + xcolor = with ccolor; { + background = black.base; + foreground = white.base; + border = red.base; + border2 = blue.base; + accent = magenta.base; + tertiary = blue.base; + }; + in ccolor // xcolor; font = { code = { name = "JetBrainsMono-NF"; @@ -121,72 +125,73 @@ in { nixosConfigurations = { - NxXPS = let - host = "NxXPS"; - in - nixpkgs.lib.nixosSystem { - inherit system; - modules = [ ./configuration.nix ]; - specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; - }; + NxXPS = + let + host = "NxXPS"; + in + nixpkgs.lib.nixosSystem { + inherit system; + modules = [ ./configuration.nix ]; + specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; + }; NxNORTH = let host = "NxNORTH"; in nixpkgs.lib.nixosSystem { inherit system; modules = [ ./configuration.nix ]; specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; }; - NxACE = - let - host = "NxACE"; - nvidia.enable = false; - in - nixpkgs.lib.nixosSystem { - inherit system; - modules = [ ./configuration.nix ]; - specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; - }; + NxACE = + let + host = "NxACE"; + nvidia.enable = false; + in + nixpkgs.lib.nixosSystem { + inherit system; + modules = [ ./configuration.nix ]; + specialArgs = { inherit inputs user host pkgs-unstable allowed secrets rice nvidia; }; + }; }; homeConfigurations = { "${user}@NxXPS" = let host = "NxXPS"; in home-manager.lib.homeManagerConfiguration { inherit pkgs; - modules = [ + modules = [ ./home.nix - ]; + ]; extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; }; "${user}@NxNORTH" = let host = "NxNORTH"; in home-manager.lib.homeManagerConfiguration { inherit pkgs; - modules = [ + modules = [ ./home.nix - ]; + ]; extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; }; - "${user}@NxACE" = - let - host = "NxACE"; - nvidia.enable = false; - in - home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = [ - ./home.nix - ]; - extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; - }; - "tv@NxACE" = - let - host = "NxACE"; - user = "tv"; - nvidia.enable = pkgs.kib.mkForce false; - in - home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = [ - ./home.nix - ]; - extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; - }; + "${user}@NxACE" = + let + host = "NxACE"; + nvidia.enable = false; + in + home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + ./home.nix + ]; + extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; + }; + "tv@NxACE" = + let + host = "NxACE"; + user = "tv"; + nvidia.enable = pkgs.kib.mkForce false; + in + home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [ + ./home.nix + ]; + extraSpecialArgs = { inherit inputs system user host allowed secrets pkgs-unstable rice nvidia; }; + }; }; }; } diff --git a/home-modules/helix.nix b/home-modules/helix.nix index 17af65b..b8e510d 100644 --- a/home-modules/helix.nix +++ b/home-modules/helix.nix @@ -8,7 +8,7 @@ nil # nix language server python311Packages.python-lsp-server ]; - sessionVariables = { + sessionVariables = { EDITOR = "hx"; VISUAL = "hx"; }; @@ -16,6 +16,7 @@ programs.helix = { enable = true; settings = { + # theme = "base16_terminal"; theme = "base16"; editor = { cursor-shape = { @@ -27,11 +28,11 @@ color-modes = true; bufferline = "always"; file-picker.hidden = false; - middle-click-paste = false; + middle-click-paste = false; cursorline = true; indent-guides.render = true; lsp.display-inlay-hints = true; - statusline.center = ["position-percentage"]; + statusline.center = [ "position-percentage" ]; true-color = true; whitespace.characters = { newline = "↴"; @@ -44,46 +45,171 @@ }]; themes = { base16 = with rice.color; { - "ui.menu" = "none"; - "ui.menu.selected" = { modifiers = [ "reversed" ]; }; - "ui.linenr" = { fg = white; bg = black; }; - "ui.popup" = { modifiers = [ "reversed" ]; }; - "ui.linenr.selected" = { fg = white; bg = bright-black; modifiers = [ "bold" ]; }; - "ui.selection" = { fg = black; bg = blue; }; - "ui.selection.primary" = { modifiers = [ "reversed" ]; }; - "comment" = { fg = green; }; - "ui.statusline" = { fg = white; bg = red; }; - "ui.statusline.inactive" = { fg = black; bg = white; }; - "ui.help" = { fg = blue; bg = white; }; - "ui.cursor" = { modifiers = [ "reversed" ]; }; - "ui.virtual.indent-guide" = black; - "variable" = red; - "variable.builtin" = magenta; - "constant.numeric" = magenta; - "constant" = magenta; - "attributes" = yellow; - "type" = yellow; - "ui.cursor.match" = { fg = yellow; modifiers = [ "underlined" ]; }; - "string" = green; - "variable.other.member" = red; - "constant.character.escape" = cyan; - "function" = blue; - "constructor" = blue; - "special" = blue; - "keyword" = magenta; - "label" = magenta; - "namespace" = blue; - "diff.plus" = green; - "diff.delta" = yellow; - "diff.minus" = red; - "diagnostic" = { modifiers = [ "underlined" ]; }; - "ui.gutter" = { bg = black; }; - "info" = blue; - "hint" = blue; - "debug" = blue; - "warning" = yellow; - "error" = red; - }; + "attributes" = blue.base; + "comment" = { + "fg" = white.dark; + "modifiers" = [ "italic" ]; + }; + "constant" = cyan.base; + "constant.character.escape" = yellow.bright; + "constant.numeric" = blue.base; + "constructor" = magenta.base; + "debug" = yellow.dark; + "diagnostic.modifiers" = [ "underlined" ]; + "diff.delta" = blue.base; + "diff.minus" = red.base; + "diff.plus" = green.base; + "error" = red.base; + "function" = cyan.base; + "hint" = yellow.dark; + "info" = cyan.base; + "keyword" = cyan.bright; + "label" = cyan.bright; + "namespace" = cyan.bright; + "operator" = magenta.dark; + "special" = cyan.base; + "string" = green.base; + "type" = green.base; + "variable" = red.base; + "variableother.member" = green.base; + "warning" = blue.base; + + "markup.bold" = { + "fg" = green.base; + "modifiers" = [ "bold" ]; + }; + "markup.heading" = cyan.base; + "italic" = { + "fg" = cyan.bright; + "modifiers" = [ "italic" ]; + }; + "markup.linktext" = red.base; + "markup.linkurl" = { + "fg" = blue.base; + "modifiers" = [ "underlined" ]; + }; + "markup.list" = red.base; + "markup.quote" = magenta.base; + "markup.raw" = green.base; + "markup.strikethrough" = { + "modifiers" = [ "crossed_out" ]; + }; + + "diagnostic.hint" = { + "underline" = { style = "curl"; }; + }; + "diagnostic.info" = { + "underline" = { style = "curl"; }; + }; + "diagnostic.warning" = { + "underline" = { style = "curl"; }; + }; + "diagnostic.error" = { + "underline" = { style = "curl"; }; + }; + + "ui.background" = { + "bg" = background; + }; + "ui.bufferline" = { + "fg" = magenta.base; + "bg" = background; + }; + "ui.bufferline.active" = { + "fg" = background; + "bg" = magenta.dark; + "modifiers" = [ "bold" ]; + }; + "ui.cursor" = { + "fg" = white.base; + "modifiers" = [ "reversed" ]; + }; + "ui.cursor.insert" = { + "fg" = green.base; + "modifiers" = [ "reversed" ]; + }; + "ui.cursorline.primary" = { + "bg" = black.bright; + }; + "ui.cursor.match" = { + "fg" = green.base; + "modifiers" = [ "reversed" ]; + }; + "ui.cursor.select" = { + "fg" = green.base; + "modifiers" = [ "reversed" ]; + }; + "ui.gutter" = { + "bg" = black.bright; + }; + "ui.help" = { + "fg" = cyan.base; + "bg" = background; + }; + "ui.linenr" = { + "fg" = yellow.dark; + "bg" = black.bright; + }; + "ui.linenr.selected" = { + "fg" = blue.dark; + "bg" = background; + "modifiers" = [ "bold" ]; + }; + "ui.menu" = { + "fg" = magenta.dark; + "bg" = background; + }; + "ui.menu.scroll" = { + "fg" = yellow.dark; + "bg" = background; + }; + "ui.menu.selected" = { + "fg" = red.dark; + "bg" = blue.dark; + }; + "ui.popup" = { + "bg" = grey.dark; + }; + "ui.selection" = { + "bg" = grey.base; + }; + "ui.selection.primary" = { + "bg" = grey.base; + }; + "ui.statusline" = { + "fg" = blue.bright; + }; + "ui.statusline.inactive" = { + "fg" = yellow.bright; + "bg" = red.dark; + }; + "ui.statusline.insert" = { + "fg" = green.bright; + "bg" = green.dark; + }; + "ui.statusline.normal" = { + "fg" = yellow.bright; + "bg" = yellow.dark; + }; + "ui.statusline.select" = { + "fg" = cyan.bright; + "bg" = cyan.dark; + }; + "ui.text" = magenta.dark; + "ui.text.focus" = magenta.dark; + "ui.virtual.indent-guide" = { + "fg" = grey.dark; + }; + "ui.virtual.inlay-hint" = { + "fg" = grey.dark; + }; + "ui.virtual.ruler" = { + "bg" = background; + }; + "ui.window" = { + "bg" = background; + }; + }; }; }; } diff --git a/home-modules/hyprland-autoname-workspaces.nix b/home-modules/hyprland-autoname-workspaces.nix index e45b34e..ada79da 100755 --- a/home-modules/hyprland-autoname-workspaces.nix +++ b/home-modules/hyprland-autoname-workspaces.nix @@ -1,8 +1,8 @@ -{ config, pkgs, lib, system, user, allowed, secrets, ... }: +{ config, pkgs, pkgs-unstable, lib, system, user, allowed, secrets, ... }: lib.mkIf (user != "tv") { home.packages = [ - pkgs.hyprland-autoname-workspaces + pkgs-unstable.hyprland-autoname-workspaces ]; home.file.".config/hyprland-autoname-workspaces/config.toml".text = '' diff --git a/home-modules/hyprland.nix b/home-modules/hyprland.nix index d67dd5a..0db2de3 100755 --- a/home-modules/hyprland.nix +++ b/home-modules/hyprland.nix @@ -11,7 +11,7 @@ let scale = "1.0"; }; second = { - name = "DP-1"; + name = "DP-3"; resolution = "1920x1080"; position = "1920x0"; scale = "1.0"; @@ -59,7 +59,7 @@ lib.mkIf (user != "tv") xwayland.enable = true; systemd.enable = true; plugins = [ - inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo + # inputs.hyprland-plugins.packages.${pkgs.system}.hyprexpo # inputs.hyprfocus.packages.${pkgs.system}.hyprfocus # inputs.hycov.packages.${pkgs.system}.hycov # inputs.Hyprspace.packages.${pkgs.system}.Hyprspace @@ -144,10 +144,10 @@ lib.mkIf (user != "tv") gaps_in = builtins.div rice.gap-size 2; gaps_out = rice.gap-size; border_size = rice.border-width; - "col.active_border" = "rgba(${rice.lib.nohash rice.color.red}ff) rgba(${rice.lib.nohash rice.color.blue}ff) 90deg"; - "col.inactive_border" = "rgba(${rice.lib.nohash rice.color.black}ff) rgba(${rice.lib.nohash rice.color.blue}ff) 90deg"; + "col.active_border" = "rgba(${rice.lib.nohash rice.color.red.base}ff) rgba(${rice.lib.nohash rice.color.blue.base}ff) 90deg"; + "col.inactive_border" = "rgba(${rice.lib.nohash rice.color.black.base}ff) rgba(${rice.lib.nohash rice.color.blue.base}ff) 90deg"; - cursor_inactive_timeout = 10; + # cursor_inactive_timeout = 10; layout = "dwindle"; # layout = "master"; @@ -160,8 +160,8 @@ lib.mkIf (user != "tv") shadow_range = "20"; shadow_offset = "0 0"; shadow_render_power = "4"; - "col.shadow" = "rgba(${rice.lib.nohash rice.color.red}ff)"; - "col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black}ff)"; + "col.shadow" = "rgba(${rice.lib.nohash rice.color.red.base}ff)"; + "col.shadow_inactive" = "rgba(${rice.lib.nohash rice.color.black.base}ff)"; active_opacity = "1.0"; inactive_opacity = "1.0"; @@ -241,7 +241,7 @@ lib.mkIf (user != "tv") windowrulev2 = [ "opacity ${transparency},class:^(com.chatterino.*)$" "opacity ${transparency},class:^(chatterino)$" - "bordercolor rgba(${rice.lib.nohash rice.color.bright-magenta}ff), pinned:1" + "bordercolor rgba(${rice.lib.nohash rice.color.magenta.bright}ff), pinned:1" ]; windowrule = [ @@ -354,7 +354,7 @@ lib.mkIf (user != "tv") #bind = SUPER, TAB, hycov:toggleoverview # "SUPER, TAB, overview:toggle" - "SUPER, TAB, hyprexpo:expo, toggle" + # "SUPER, TAB, hyprexpo:expo, toggle" "ALT, TAB, focuscurrentorlast" "SUPER, Q, killactive" "SUPER, W, exec, waybar_mode set '󰈹 '" @@ -767,7 +767,7 @@ lib.mkIf (user != "tv") hyprexpo { columns = 5 gap_size = ${builtins.toString rice.gap-size} - bg_col = rgb(${rice.lib.nohash rice.color.background}) + bg_col = rgb(${builtins.substring 1 6 rice.color.background}) workspace_method = first 10 # [center/first] [workspace] e.g. first 1 or center m+1 enable_gesture = false # laptop touchpad, 4 fingers diff --git a/home-modules/kitty.nix b/home-modules/kitty.nix index cee332a..5e230d2 100755 --- a/home-modules/kitty.nix +++ b/home-modules/kitty.nix @@ -15,22 +15,22 @@ lib.mkIf (user != "tv") background = rice.color.background; foreground = rice.color.foreground; cursor = rice.color.foreground; - color0 = rice.color.black; - color8 = rice.color.bright-black; - color1 = rice.color.red; - color9 = rice.color.bright-red; - color2 = rice.color.green; - color10 = rice.color.bright-green; - color3 = rice.color.yellow; - color11 = rice.color.bright-yellow; - color4 = rice.color.blue; - color12 = rice.color.bright-blue; - color5 = rice.color.magenta; - color13 = rice.color.bright-magenta; - color6 = rice.color.cyan; - color14 = rice.color.bright-cyan; - color7 = rice.color.white; - color15 = rice.color.bright-white; + color0 = rice.color.black.base; + color8 = rice.color.black.bright; + color1 = rice.color.red.base; + color9 = rice.color.red.bright; + color2 = rice.color.green.base; + color10 = rice.color.green.bright; + color3 = rice.color.yellow.base; + color11 = rice.color.yellow.bright; + color4 = rice.color.blue.base; + color12 = rice.color.blue.bright; + color5 = rice.color.magenta.base; + color13 = rice.color.magenta.bright; + color6 = rice.color.cyan.base; + color14 = rice.color.cyan.bright; + color7 = rice.color.white.base; + color15 = rice.color.white.bright; background_opacity = builtins.toString rice.transparency; transparency = true; scroll_multiplier = 9; diff --git a/home-modules/nixvim.nix b/home-modules/nixvim.nix index 5aad9de..308abda 100755 --- a/home-modules/nixvim.nix +++ b/home-modules/nixvim.nix @@ -56,21 +56,21 @@ # customColorScheme = { # base00 = rice.color.background; - # base01 = rice.color.bright-black; - # base02 = rice.color.blue; - # base03 = rice.color.bright-blue; - # base04 = rice.color.cyan; - # base05 = rice.color.bright-cyan; - # base06 = rice.color.green; - # base07 = rice.color.bright-green; - # base08 = rice.color.magenta; - # base09 = rice.color.bright-magenta; - # base0A = rice.color.red; - # base0B = rice.color.bright-red; - # base0C = rice.color.white; - # base0D = rice.color.bright-white; - # base0E = rice.color.yellow; - # base0F = rice.color.bright-yellow; + # base01 = rice.color.black.bright; + # base02 = rice.color.blue.base; + # base03 = rice.color.blue.bright; + # base04 = rice.color.cyan.base; + # base05 = rice.color.cyan.bright; + # base06 = rice.color.green.base; + # base07 = rice.color.green.bright; + # base08 = rice.color.magenta.base; + # base09 = rice.color.magenta.bright; + # base0A = rice.color.red.base; + # base0B = rice.color.red.bright; + # base0C = rice.color.white.base; + # base0D = rice.color.white.bright; + # base0E = rice.color.yellow.base; + # base0F = rice.color.yellow.bright; # }; # }; opts = { diff --git a/home-modules/nvim.nix b/home-modules/nvim.nix index b8b99f9..8f3fd0b 100755 --- a/home-modules/nvim.nix +++ b/home-modules/nvim.nix @@ -78,21 +78,21 @@ lib.mkIf (user != "tv") -- Colorscheme require('base16-colorscheme').setup({ base00 = '${rice.color.background}', - base01 = '${rice.color.bright-black}', - base02 = '${rice.color.blue}', - base03 = '${rice.color.bright-blue}', - base04 = '${rice.color.cyan}', - base05 = '${rice.color.bright-cyan}', - base06 = '${rice.color.green}', - base07 = '${rice.color.bright-green}', - base08 = '${rice.color.magenta}', - base09 = '${rice.color.bright-magenta}', - base0A = '${rice.color.red}', - base0B = '${rice.color.bright-red}', + base01 = '${rice.color.black.bright}', + base02 = '${rice.color.blue.base}', + base03 = '${rice.color.blue.bright}', + base04 = '${rice.color.cyan.base}', + base05 = '${rice.color.cyan.bright}', + base06 = '${rice.color.green.base}', + base07 = '${rice.color.green.bright}', + base08 = '${rice.color.magenta.base}', + base09 = '${rice.color.magenta.bright}', + base0A = '${rice.color.red.base}', + base0B = '${rice.color.red.bright}', base0C = '${rice.color.foreground}', - base0D = '${rice.color.bright-white}', - base0E = '${rice.color.yellow}', - base0F = '${rice.color.bright-yellow}', + base0D = '${rice.color.white.bright}', + base0E = '${rice.color.yellow.base}', + base0F = '${rice.color.yellow.bright}', }) require('base16-colorscheme').with_config({ telescope = true, diff --git a/home-modules/nx-gcal-event.nix b/home-modules/nx-gcal-event.nix index 6c27acb..bc8f583 100755 --- a/home-modules/nx-gcal-event.nix +++ b/home-modules/nx-gcal-event.nix @@ -195,10 +195,12 @@ lib.mkIf (user != "tv") lookup() def reauthenicate(): - os.remove(PICKLE_PATH) - os.remove(TOKEN_PATH) - os.system('notify-send --app-name="nx_gcal_event" "Deleted Token"') - lookup() + try: + os.remove(PICKLE_PATH) + os.remove(TOKEN_PATH) + os.system('notify-send --app-name="nx_gcal_event" "Deleted Token"') + exept: + lookup() def print_help(): print("Usage: nx_gcal_event [lookup|force-lookup|reauthenicate|help]") diff --git a/home-modules/rofi.nix b/home-modules/rofi.nix index 6b10223..574e699 100755 --- a/home-modules/rofi.nix +++ b/home-modules/rofi.nix @@ -29,7 +29,7 @@ lib.mkIf (user != "tv") background-color: ${rice.color.background}${trdr}; border: ${builtins.toString rice.border-width}px; border-radius: ${builtins.toString rice.rounding}; - border-color: ${rice.color.blue}; + border-color: ${rice.color.blue.base}; } #mainbox { border: 0; @@ -57,8 +57,8 @@ lib.mkIf (user != "tv") } #element.normal.normal { background-color: ${rice.color.background}${trdr}; text-color: ${rice.color.foreground}; } - #element.selected.normal { background-color: ${rice.color.blue}${trdr}; text-color: ${rice.color.background}; } - #element.alternate.normal { background-color: ${rice.color.black}${trdr}; text-color: ${rice.color.foreground}; } + #element.selected.normal { background-color: ${rice.color.blue.base}${trdr}; text-color: ${rice.color.background}; } + #element.alternate.normal { background-color: ${rice.color.black.base}${trdr}; text-color: ${rice.color.foreground}; } #scrollbar { @@ -76,7 +76,7 @@ lib.mkIf (user != "tv") #inputbar { spacing: 0; text-color: ${rice.color.background}; - background-color: ${rice.color.red}${trdr}; + background-color: ${rice.color.red.base}${trdr}; padding: 0; children: [ prompt,textbox-prompt-colon,entry,case-indicator ]; } diff --git a/home-modules/waybar.nix b/home-modules/waybar.nix index 6bc2421..a54fdc6 100755 --- a/home-modules/waybar.nix +++ b/home-modules/waybar.nix @@ -1,12 +1,10 @@ -{ config, lib, pkgs, user, rice, ... }: +{ config, lib, pkgs, pkgs-unstable, user, rice, ... }: let sep = " "; in lib.mkIf (user != "tv") { home.packages = with pkgs; [ - waybar - (pkgs.writeShellScriptBin "waybar_mode" '' #!/usr/bin/env bash print_help() { @@ -50,10 +48,11 @@ lib.mkIf (user != "tv") fi '') - ]; + ] ++ [ pkgs-unstable.waybar ]; programs.waybar = { enable = true; + package = pkgs-unstable.waybar; settings = { bar = { height = 20; @@ -176,7 +175,7 @@ lib.mkIf (user != "tv") transition-duration: 2s; padding: 7px 10px; padding-top: 0.1em; - /* border: ${builtins.toString rice.border-width}px solid rgb(${rice.lib.hex-to-rgb-comma-string rice.color.blue}); */ + /* border: ${builtins.toString rice.border-width}px solid rgb(${rice.lib.hex-to-rgb-comma-string rice.color.blue.base}); */ /* margin: ${builtins.toString rice.gap-size}px; */ border-radius: ${builtins.toString rice.rounding}px; @@ -199,51 +198,51 @@ lib.mkIf (user != "tv") padding: 0px 3px; margin-top: 0.3em; border-radius: ${builtins.toString rice.rounding}px; - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.bright-cyan}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.cyan.bright}); } #workspaces button { - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.bright-black}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.grey.base}); margin-left: 10px; margin-right: 10px; border-radius: ${builtins.toString rice.rounding}px; } #workspaces button.active { - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.bright-cyan}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.cyan.bright}); } #workspaces button:hover { color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.background}); - background-color: rgba(${rice.lib.hex-to-rgb-comma-string rice.color.bright-cyan},${builtins.toString rice.transparency}); + background-color: rgba(${rice.lib.hex-to-rgb-comma-string rice.color.cyan.bright},${builtins.toString rice.transparency}); } #workspaces button.urgent { - background-color: rgba(${rice.lib.hex-to-rgb-comma-string rice.color.magenta},${builtins.toString rice.transparency}); + background-color: rgba(${rice.lib.hex-to-rgb-comma-string rice.color.magenta.base},${builtins.toString rice.transparency}); } #custom-mode { - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.red}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.red.base}); } #window, #custom-ctimeremaining { font-family: ${rice.font.base.name}, ${rice.font.code.name2}; - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.blue}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.blue.base}); } #wireplumber.muted { - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.blue}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.blue.base}); } #battery.warning:not(.charging) { - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.green});; + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.green.base});; } #battery.critical { - color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.red});; - background: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.bright-red}); + color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.red.dark});; + background: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.red.bright}); } - #battery.charging { color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.green}); } + #battery.charging { color: rgb(${rice.lib.hex-to-rgb-comma-string rice.color.green.base}); } ''; #battery.critical:not(.charging) { diff --git a/home-modules/wlogout.nix b/home-modules/wlogout.nix index e7d6201..21c0f61 100755 --- a/home-modules/wlogout.nix +++ b/home-modules/wlogout.nix @@ -25,11 +25,11 @@ lib.mkIf (user != "tv") } button:hover { - color: ${rice.color.blue} ; + color: ${rice.color.blue.base} ; } button:focus { - color: ${rice.color.blue} ; + color: ${rice.color.blue.base} ; } ''; diff --git a/home.nix b/home.nix index 374f19c..55aea86 100755 --- a/home.nix +++ b/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, pkgs-unstable, lib, system, inputs, host, user, allowed, secrets, ... }: +{ config, pkgs, pkgs-unstable, lib, system, inputs, host, user, rice, allowed, secrets, ... }: { imports = [ ./home-modules/vscode.nix @@ -23,7 +23,7 @@ ./home-modules/kitty.nix ./home-modules/fish.nix ./home-modules/starship.nix - ./home-modules/nvim.nix + # ./home-modules/nvim.nix ./home-modules/helix.nix ./home-modules/yazi.nix @@ -59,7 +59,7 @@ spicetify-cli obs-studio - waybar swww playerctl + swww playerctl imv mpv mediainfo exiftool ffmpeg pavucontrol fontpreview gtk2fontsel diff --git a/nxlib/ricelib.nix b/nxlib/ricelib.nix index 65d5753..f55aa18 100755 --- a/nxlib/ricelib.nix +++ b/nxlib/ricelib.nix @@ -1,14 +1,15 @@ { lib, ... }: -rec -{ - nohash = s: builtins.substring 1 7 s; +let + # takes in "ff0044" (no hash!) and returns { r = "ff", g = "00", b = "44" } + slice-hex = hex: with builtins; { r = substring 0 2 hex; g = substring 2 2 hex; b = substring 4 2 hex; }; - slice-hex = hex: { r = builtins.substring 0 2 hex; g = builtins.substring 2 2 hex; b = builtins.substring 4 5 hex; }; - - # https://github.com/bertof/nix-rice - rune-to-num = c: + # takes in "44" and returns 64 + drune-to-255 = drune: with builtins; (rune-to-num (substring 0 1 drune)) * 16 + (rune-to-num (substring 1 1 drune)); + num-to-drune = num: "${num-to-rune (num / 16)}${num-to-rune (num - ((num / 16) * 16))}"; + + # takes in "D" and returns 13 + rune-to-num = rune: # inspiration from https://github.com/bertof/nix-rice let - k = lib.strings.toUpper c; dict = { "0" = 0; "1" = 1; @@ -28,16 +29,13 @@ rec "F" = 15; }; in - assert(builtins.hasAttr k dict); - builtins.getAttr k dict; + assert(builtins.hasAttr (lib.strings.toUpper rune) dict); + builtins.getAttr (lib.strings.toUpper rune) dict; - drune-to-255 = hex: (rune-to-num (builtins.substring 0 1 hex)) * 15 + (rune-to-num (builtins.substring 1 2 hex)); - - hex-to-rgb-comma-string = hex: let color = (slice-hex (nohash hex)); in "${builtins.toString (drune-to-255 color.r)},${builtins.toString (drune-to-255 color.g)},${builtins.toString (drune-to-255 color.b)}"; - - num-to-rune = n: + # takes in 15 and returns "F" + num-to-rune = num: let - ns = builtins.toString n; + num-string = builtins.toString num; dict = { "0" = "0"; "1" = "1"; @@ -53,12 +51,46 @@ rec "11" = "B"; "12" = "C"; "13" = "D"; - "14" = "E"; + "14" = "E"; "15" = "F"; }; in - assert(builtins.hasAttr ns dict); - builtins.getAttr ns dict; + assert(builtins.hasAttr num-string dict); + builtins.getAttr num-string dict; - float-to-drune = f: "${num-to-rune (builtins.floor((255*f) / 16))}${num-to-rune (builtins.floor(255*f) - (builtins.floor((255 * f) / 16) * 16))}"; + # Keeps num between 0 and 255 + # Make sure to pass in an int not a float + cap-255 = num: (if (num>255) then 255 else if (num<0) then 0 else num); + + nohash = hex: with builtins; assert((stringLength hex) == 7); substring 1 6 hex; +in +{ + + ## USEFUL FUNCTIONS + # -------------------------------------------------------------------------------- + # takes in a string like "#ff0044" and returns "ff0044" symbol + inherit nohash; + + # -------------------------------------------------------------------------------- + # This takes in something like "#ff0044" and returns "255,0,64" + hex-to-rgb-comma-string = hex: + with (slice-hex (nohash hex)); + with builtins; + assert(isString hex); + "${toString (drune-to-255 r)},${toString (drune-to-255 g)},${toString (drune-to-255 b)}"; + + # -------------------------------------------------------------------------------- + # This is useful if you have a float (like a transparency value) and want a drune representation of it + # So 0.0 -> "00" and 1.0 -> "FF" + float-to-drune = f: with builtins; assert(isFloat f); "${num-to-rune (floor((255*f) / 16))}${num-to-rune (floor(255*f) - (floor((255*f) / 16) * 16))}"; + + # -------------------------------------------------------------------------------- + # Takes in hex and a float. 0.5 is +50% brightness and (-0.5) is -50% brightness. + # So "#ff0044": 0.3 -> "#ff0055" + alter-luminace-hex = hex: amount: + let + color-num = with (slice-hex (nohash hex)); { r = drune-to-255 r; g = drune-to-255 g; b = drune-to-255 b; }; + alter = num: (num-to-drune (cap-255 (builtins.floor (num * (1 + amount))))); + in + with color-num; "#${alter r}${alter g}${alter b}"; } \ No newline at end of file