Compare commits

...
8 Commits
Author SHA1 Message Date
Chest 9a993644a3 Theme Eclipse desktop with Miku Frost palette and glass surfaces 2026-11-02 18:46:33 +01:00
Sweetbread 0e8a2de41b fixup! fixup! Update 2026-11-02 08:27:18 +03:00
Sweetbread 08680760dd Show frequency used apps first in walker 2026-11-01 20:44:03 +03:00
Sweetbread df76d4d1be Stylize walker 2026-11-01 20:32:01 +03:00
Sweetbread 7c403114ec Change monitor resolution for Eclipse 2026-11-01 16:53:06 +03:00
Sweetbread a2afca2d74 Switch timezone 2026-11-01 13:55:31 +03:00
Sweetbread ca361ec226 fixup! Update 2026-11-01 13:38:31 +03:00
Sweetbread f26e36bbb2 Update 2026-11-01 13:19:27 +03:00
11 changed files with 564 additions and 117 deletions

No files matched your search

Generated
+90 -81
View File
@@ -9,11 +9,11 @@
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1789138122,
"narHash": "sha256-mh+ZiGCtHAo0xIi1yaNjHsftfnlWz9JiYwHCyT16yIE=",
"lastModified": 1792853286,
"narHash": "sha256-l/Oh5k1NQqQuwh4gBF3VcmCF0WGiCT/LqfvY5huhOq4=",
"owner": "ezKEa",
"repo": "aagl-gtk-on-nix",
"rev": "d82d6d6f66caf4b63fb154e62fad83c627874127",
"rev": "e9a3b8fdb50a7d77a90c02c84e298c286310385b",
"type": "github"
},
"original": {
@@ -64,11 +64,11 @@
]
},
"locked": {
"lastModified": 1786464219,
"narHash": "sha256-WKqWL8r7CyTDYueTr2ffJ9ya50dellv6IR1JX5PghDY=",
"lastModified": 1791041429,
"narHash": "sha256-Y/Q4JtMo6nHB6XS1LPSfK7Y4AnuNl9jci/5sCps1MRc=",
"owner": "hyprwm",
"repo": "aquamarine",
"rev": "f3d1804205e8158c15595cdda1b566f93349ffae",
"rev": "52ea11f06dd492f34b3cc0b39a9c805beecafcff",
"type": "github"
},
"original": {
@@ -173,11 +173,11 @@
]
},
"locked": {
"lastModified": 1789770686,
"narHash": "sha256-uZkBR7yHdIKUFB5SZdfgh1qkGfI3XmYmI/lTiquxbck=",
"lastModified": 1792526520,
"narHash": "sha256-3hSJlv8mUVnZPMWK2+CM7a9O+nR6Z4mCh27NfLCmTPc=",
"owner": "nix-community",
"repo": "disko",
"rev": "725ea35e410ad83be4931d1bff7e090eacaf3563",
"rev": "cedd626e11b635470fa6f9fdb8ad79b0075dd7f9",
"type": "github"
},
"original": {
@@ -332,11 +332,11 @@
"rust-overlay": "rust-overlay_2"
},
"locked": {
"lastModified": 1790052168,
"narHash": "sha256-cfZ9EL0rRfoB7KnZRgRmk36YJhjfutqDjzew1lJYwEg=",
"lastModified": 1792684031,
"narHash": "sha256-wBjRHntxoxT+fo85i0rct/NWN/OG/Z6nVky/Efb2gjE=",
"owner": "mattwparas",
"repo": "helix",
"rev": "7915ec19939d8ae3ab4cfff278eaf23ae3784351",
"rev": "424add100eac9ca258d969b985a8ac370469ec05",
"type": "github"
},
"original": {
@@ -353,11 +353,11 @@
]
},
"locked": {
"lastModified": 1790292277,
"narHash": "sha256-z+knvdMItRrMonmG4RIsqKYIa/hwYUzKjotDTfC5DDc=",
"lastModified": 1793193205,
"narHash": "sha256-X6xa6sGA7RnJQuZGbFMC+K+KToWAlBDCCjJXfTwEPsw=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "4b9add8645d5e2b0f7de18f7a442d08fe2bdcc91",
"rev": "095fef2f265c3c0da4fe315efba8f8a04495ab34",
"type": "github"
},
"original": {
@@ -411,11 +411,11 @@
]
},
"locked": {
"lastModified": 1786464367,
"narHash": "sha256-k58p4wbzIXWyRWrW84pP8tD+iaZSSYiiM+fr0Auk4oU=",
"lastModified": 1791066858,
"narHash": "sha256-hLh6ALHrGpgYm8viWCo1pO+ErC22YDGdAvVPcfYsXA8=",
"owner": "hyprwm",
"repo": "hyprgraphics",
"rev": "7c895c44e3ca6d28ed68ddd80ec02b02b925e7fc",
"rev": "80c7d00f2236732853e390019ff8d79d17fa3612",
"type": "github"
},
"original": {
@@ -432,6 +432,7 @@
"hyprland-guiutils": "hyprland-guiutils",
"hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang",
"hyprtoolkit": "hyprtoolkit",
"hyprutils": "hyprutils",
"hyprwayland-scanner": "hyprwayland-scanner",
"hyprwire": "hyprwire",
@@ -441,16 +442,16 @@
"xdph": "xdph"
},
"locked": {
"lastModified": 1786555543,
"narHash": "sha256-sZWUA497m3OuyZqt1KUa5cPR43Zk1X/L3qZa64mIxDs=",
"lastModified": 1793183825,
"narHash": "sha256-MMn1clKPz3FyrFEq39OqXZ2SO3QBaOOFtAFVIcO+VvU=",
"owner": "hyprwm",
"repo": "Hyprland",
"rev": "1256bd180e7677aadd715e59351c09fb16e48efc",
"rev": "0aa6745f705f2c4b0a5004eb019ef76e5bbdb426",
"type": "github"
},
"original": {
"owner": "hyprwm",
"ref": "1256bd1",
"ref": "v0.57.0",
"repo": "Hyprland",
"type": "github"
}
@@ -469,7 +470,10 @@
"hyprland",
"hyprlang"
],
"hyprtoolkit": "hyprtoolkit",
"hyprtoolkit": [
"hyprland",
"hyprtoolkit"
],
"hyprutils": [
"hyprland",
"hyprutils"
@@ -488,11 +492,11 @@
]
},
"locked": {
"lastModified": 1786464504,
"narHash": "sha256-7sHwM86KILQyHDHDuE2SDBlQ2jvZ0EW3hY7sW009/cg=",
"lastModified": 1791805511,
"narHash": "sha256-p7R3xnbJf6MqvgWAmR86PkHUba97Fotm8RR16tYDF9I=",
"owner": "hyprwm",
"repo": "hyprland-guiutils",
"rev": "4c30cf3097ea963c0e250749ee0c59f8b08816d6",
"rev": "204f39d6c7a4aca7042587d4638e19cdeccf63bc",
"type": "github"
},
"original": {
@@ -518,11 +522,11 @@
]
},
"locked": {
"lastModified": 1790062321,
"narHash": "sha256-MKb+sbGuRyd+As1fNoxPNJRC6B+hLahvSPGuwPskOXw=",
"lastModified": 1792508453,
"narHash": "sha256-y+V5RFJcjnV1+ZzImkfiSJ97iDIflanjP2OR9lemvTs=",
"owner": "hyprwm",
"repo": "hyprland-plugins",
"rev": "b29b8293039490d0361e9f15289d361653d8aabf",
"rev": "d2427d4d15b36df40468f5a58bbd67cdba19835d",
"type": "github"
},
"original": {
@@ -543,11 +547,11 @@
]
},
"locked": {
"lastModified": 1772460177,
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
"lastModified": 1792149240,
"narHash": "sha256-g09dB6NCTzD4F6YgYrGXRhUfG52xwxUtlMAbHvv/1gE=",
"owner": "hyprwm",
"repo": "hyprland-protocols",
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
"rev": "044a434ec371f985655389bcef09286b1af3d77c",
"type": "github"
},
"original": {
@@ -589,46 +593,39 @@
"inputs": {
"aquamarine": [
"hyprland",
"hyprland-guiutils",
"aquamarine"
],
"hyprgraphics": [
"hyprland",
"hyprland-guiutils",
"hyprgraphics"
],
"hyprlang": [
"hyprland",
"hyprland-guiutils",
"hyprlang"
],
"hyprutils": [
"hyprland",
"hyprland-guiutils",
"hyprutils"
],
"hyprwayland-scanner": [
"hyprland",
"hyprland-guiutils",
"hyprwayland-scanner"
],
"nixpkgs": [
"hyprland",
"hyprland-guiutils",
"nixpkgs"
],
"systems": [
"hyprland",
"hyprland-guiutils",
"systems"
]
},
"locked": {
"lastModified": 1785930473,
"narHash": "sha256-DitTu625BhEYpZjtjxtGpjrEJwPwW+X/+jJvhSZNSJM=",
"lastModified": 1791849226,
"narHash": "sha256-q9Kgz/ZSo6ftVliPGQuRZYWYp3eK4vggO0IR6LcsWl0=",
"owner": "hyprwm",
"repo": "hyprtoolkit",
"rev": "af515b69dfbe366dc7873aa1475cb2f4db3ebad7",
"rev": "2907e0d1f8a3a540737a0e738acc40d48ad7ba0d",
"type": "github"
},
"original": {
@@ -649,11 +646,11 @@
]
},
"locked": {
"lastModified": 1786464080,
"narHash": "sha256-W1hxvumEM57yV+QwsZ4QdAHEqOkr7e4S8VAkLX60qDE=",
"lastModified": 1792673440,
"narHash": "sha256-7l2+xIZ7IU9r4h9ngSrGH7oQs8XZj0NR0V+96wkN8zk=",
"owner": "hyprwm",
"repo": "hyprutils",
"rev": "c157fe1e3092b980cc69315a6631f89aff09dcce",
"rev": "0d13d5a624eb093b600d1b2cbe448fb613c86424",
"type": "github"
},
"original": {
@@ -703,11 +700,11 @@
]
},
"locked": {
"lastModified": 1786464294,
"narHash": "sha256-ZQsZ2WvBdkboCIyh8LStDPdAIARmxzn0XMNxxoOhjPE=",
"lastModified": 1792081530,
"narHash": "sha256-SRs96bR3VbViiQ1vOhZOqy/HxczIWCoHaGKhncwr1js=",
"owner": "hyprwm",
"repo": "hyprwire",
"rev": "4ce7cd6b6128c1ac41caf23c58a30a26b327f9dd",
"rev": "a546e42d45e161682f729ebf52375bd4800d7041",
"type": "github"
},
"original": {
@@ -718,11 +715,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1786247143,
"narHash": "sha256-8S3Kcxs7D4UtxJxSJZz0m14CGhuW0MxfrIwJxeGWGnQ=",
"lastModified": 1792210252,
"narHash": "sha256-Mh0PUaIv4nFY+8wAGonaEh8iBzwsmdNlwjVHmFg1Biw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "279b4a8275f032c566576b3f181fa0f27197f588",
"rev": "09063bd1f2b36fd9fd793c36dfade7bd40a93dfc",
"type": "github"
},
"original": {
@@ -750,11 +747,11 @@
},
"nixpkgs-stable": {
"locked": {
"lastModified": 1790218706,
"narHash": "sha256-6e4Na3z008XpdVyOXgfasXIn1aN+z8AXFG+jXdQSyuI=",
"lastModified": 1793183032,
"narHash": "sha256-56mFMf8heLNfYhcgbrh4GpN5x+G9JOfTFXZC3n6w0qM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "c508844df6c28fa6dabc1b6af70f3ccbd65c5201",
"rev": "08d3a97586f6b6343b3b5e799980773629432610",
"type": "github"
},
"original": {
@@ -766,11 +763,11 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1790185690,
"narHash": "sha256-xJ+X4hBtOcAFGBOe5nAMyMUeF9foJBmIOu3NjBqBycU=",
"lastModified": 1793110635,
"narHash": "sha256-dhoW6VgFWlaodSY5jrBn+CF2FLmaUvDVgM7+C7T2+NM=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "4975466d324710c576dc11ad614684e6bd8cad8e",
"rev": "31ecbaca1bdefa45dffc409f0250bd8039ea0010",
"type": "github"
},
"original": {
@@ -814,11 +811,11 @@
]
},
"locked": {
"lastModified": 1784288435,
"narHash": "sha256-ReRHaLgr/uVqdD8afFSn+myXIfpHeOhP0yYe0TJqAA8=",
"lastModified": 1791909798,
"narHash": "sha256-VAhpCOmrun/KXimYfR8NM88bciKCui7CqHHhThSzgag=",
"owner": "cachix",
"repo": "git-hooks.nix",
"rev": "43b3c1ab9d40fb1dbb008f451988a91e375825e9",
"rev": "1ba1dbfe28738c9a71c266be6efa5b89e75491a9",
"type": "github"
},
"original": {
@@ -896,11 +893,11 @@
]
},
"locked": {
"lastModified": 1789543870,
"narHash": "sha256-45ikFmtfgBZgMePIm4GevJ9VjDSWO3PGQgOuuwHDpes=",
"lastModified": 1791013993,
"narHash": "sha256-BiFPwFsbFnZH5GfWbQFKYuQNg+67aNQCoRSRNTeJFQc=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "35ca0490d13a3d38c4602d0eb9600a30fa63a367",
"rev": "7470661ba2b51156048af08464b82020223dc942",
"type": "github"
},
"original": {
@@ -916,11 +913,11 @@
]
},
"locked": {
"lastModified": 1790247521,
"narHash": "sha256-TNfgoHsqsYYvaJImlWctfRkh4PseTagzegU1Dgdbehw=",
"lastModified": 1793052255,
"narHash": "sha256-Y/JIHTnMlOabDfyaSBubWGLDIVGihLEUuoMhFvQKaDo=",
"owner": "Mic92",
"repo": "sops-nix",
"rev": "2bd00bd9bb35fe6d114888c8f1c2e946c541dd8f",
"rev": "60182817ee048ac94b4c68ea76d5ef2e8aac730d",
"type": "github"
},
"original": {
@@ -949,11 +946,11 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1789937675,
"narHash": "sha256-/F9gQpAlPCxheQ9ht/5Fka2JEr/FfuOh9R7ySa9SAGc=",
"lastModified": 1792920263,
"narHash": "sha256-2pkE97wOXAYIn2/Nhs9y+iR0qVT+g/3UtukXdkywxXc=",
"owner": "danth",
"repo": "stylix",
"rev": "abff36bfab11cbdcd0723f41c1b0921e211be6ac",
"rev": "3e27b6c499e507df6e3bb8eca3614f5c95e28140",
"type": "github"
},
"original": {
@@ -1080,11 +1077,11 @@
]
},
"locked": {
"lastModified": 1790276835,
"narHash": "sha256-Y/bf7OmtwrEhdRDTkh4OVAEZX5ixL+io0W/UPJuto+g=",
"lastModified": 1793198875,
"narHash": "sha256-CZR26099bnlOWgLpMOPwdpmocSAGetbepjkP661qml4=",
"owner": "Alexays",
"repo": "Waybar",
"rev": "16843896794a9c595139318420f81f40e84f8c78",
"rev": "f6f73c81818b0a6753c1efb68e0fae2149eac028",
"type": "github"
},
"original": {
@@ -1095,6 +1092,14 @@
},
"xdph": {
"inputs": {
"aquamarine": [
"hyprland",
"aquamarine"
],
"hyprgraphics": [
"hyprland",
"hyprgraphics"
],
"hyprland-protocols": [
"hyprland",
"hyprland-protocols"
@@ -1103,6 +1108,10 @@
"hyprland",
"hyprlang"
],
"hyprtoolkit": [
"hyprland",
"hyprtoolkit"
],
"hyprutils": [
"hyprland",
"hyprutils"
@@ -1121,11 +1130,11 @@
]
},
"locked": {
"lastModified": 1786464334,
"narHash": "sha256-/TBQT5rhBB2Dm4HoZzhGDaCwYmRTs3W3DPhMXFWc/BU=",
"lastModified": 1791822904,
"narHash": "sha256-gsxPblA9YV+By4SxXWkj2HGGk7MKGxiNj/T9bU4q31U=",
"owner": "hyprwm",
"repo": "xdg-desktop-portal-hyprland",
"rev": "9f0e9ff02739cd538d39bd706422dc50e9ca60dd",
"rev": "0121b2e3f85c7ebf6280173f1054f7e5606262d1",
"type": "github"
},
"original": {
@@ -1143,11 +1152,11 @@
"rust-overlay": "rust-overlay_3"
},
"locked": {
"lastModified": 1790032246,
"narHash": "sha256-njp/fLXNAru7mTWbs0p/iHZDMRZE7jLxjsnQei10rNY=",
"lastModified": 1793195788,
"narHash": "sha256-S+4LGf9l8RDFqAJ87HUorHPVasfnnMTE/ysaj3SWIk8=",
"owner": "sxyazi",
"repo": "yazi",
"rev": "0ea4c5d9ef75d7165c2e3b4eb8d713fc11f26c96",
"rev": "ec4ce8f27d7a34045791606ebe83b0795defe4b6",
"type": "github"
},
"original": {
@@ -1159,11 +1168,11 @@
"yazi-plugins": {
"flake": false,
"locked": {
"lastModified": 1789736971,
"narHash": "sha256-O1yYAhsf7xMqUrTTSLac06WSxCvUQqedH3DWqGwn/Ok=",
"lastModified": 1793196370,
"narHash": "sha256-0nD3jSkUt7mcsfPnJ3yBwdJYRY6JVSxVAj4eXEgBWus=",
"owner": "yazi-rs",
"repo": "plugins",
"rev": "f703392df78b5fba5e8f9f1ad0b1cb6d3def9736",
"rev": "896fa5aec1db0163e2f65d07a130d064de53b0b2",
"type": "github"
},
"original": {
+1 -1
View File
@@ -45,7 +45,7 @@
};
hyprland = {
url = "github:hyprwm/Hyprland/1256bd1";
url = "github:hyprwm/Hyprland/v0.57.0";
# inputs.nixpkgs.follows = "nixpkgs";
};
+1
View File
@@ -24,6 +24,7 @@
];
nixpkgs.config.allowBroken = true;
time.timeZone = "Europe/Berlin";
programs.gamemode.enable = true;
services.printing.enable = true;
virtualisation.virtualbox.host.enable = true;
+18 -1
View File
@@ -8,10 +8,27 @@ let
};
in {
wayland.windowManager.hyprland.settings = {
# Keep the animated wallpaper visible through the panel's translucent surface.
layer_rule = [
{
match.namespace = "^waybar$";
blur = true;
# Blur the glass, but exclude its low-alpha CSS shadow from the mask.
ignore_alpha = 0.2;
xray = true;
}
{
match.namespace = "^walker$";
blur = true;
ignore_alpha = 0.08;
xray = true;
}
];
monitor = [
{
output = "DP-3";
mode = "1920x1080@165";
mode = "2560x1440@100";
position = "0x0";
scale = 1;
}
+1
View File
@@ -23,6 +23,7 @@
nix.settings.cores = 3;
nixpkgs.config.allowBroken = true;
time.timeZone = "Europe/Berlin";
programs.gamemode.enable = true;
hardware.bluetooth.enable = true;
host.laptop = true;
+8 -1
View File
@@ -1,4 +1,4 @@
{ pkgs, inputs, ... }: {
{ pkgs, inputs, lib, config, ... }: {
imports = [
./host/bluetooth.nix
./host/bootloader.nix
@@ -24,6 +24,13 @@
hyprland.package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
};
environment.systemPackages = [
inputs.hyprland.inputs.hyprland-guiutils.packages.${pkgs.stdenv.hostPlatform.system}.default
];
security.wrappers.Hyprland.source = lib.mkForce
"${config.programs.hyprland.package}/bin/.Hyprland-wrapped";
xdg.portal = {
enable = true;
xdgOpenUsePortal = true;
+12 -1
View File
@@ -1,6 +1,17 @@
{ inputs, pkgs, lib, config, ... }: let
helixSteel =
inputs.helix-steel.packages.${pkgs.system}.default.overrideAttrs (old: {
(inputs.helix-steel.packages.${pkgs.system}.default.override {
grammarOverlays = [
(_: prev: {
perl = prev.perl.overrideAttrs (old: {
postPatch = (old.postPatch or "") + ''
substituteInPlace src/bsearch.c --replace-fail 'void *bsearch(' 'void *tsp_bsearch('
substituteInPlace src/tsp_unicode.h --replace-fail 'return bsearch(' 'return tsp_bsearch('
'';
});
})
];
}).overrideAttrs (old: {
cargoBuildFlags = (old.cargoBuildFlags or []) ++ [
"--features"
"steel,git"
+179 -2
View File
@@ -1,16 +1,193 @@
{ lib, ... }:
let
{ config, lib, osConfig, ... }: let
hyprLua = import ./hyprland/lua.nix { inherit lib; };
colors = config.lib.stylix.colors.withHashtag;
accent = colors.${config.stylix.accent};
in {
services = {
walker = {
enable = true;
systemd.enable = true;
theme = {
name = "stylix";
# Follow Walker's default CSS structure so provider layouts keep their styling.
# https://github.com/abenz1267/walker/blob/master/resources/themes/default/style.css
style = ''
@define-color window_bg_color ${colors.base00};
@define-color surface_color ${colors.base01};
@define-color border_color ${colors.base03};
@define-color accent_bg_color ${accent};
@define-color theme_fg_color ${colors.base05};
@define-color error_bg_color ${colors.base08};
@define-color error_fg_color ${colors.base00};
* {
all: unset;
}
popover {
background: @surface_color;
border: 1px solid @border_color;
border-radius: 18px;
padding: 10px;
font-family: "${config.stylix.fonts.sansSerif.name}";
font-size: ${toString config.stylix.fonts.sizes.applications}pt;
}
.box-wrapper {
box-shadow:
0 19px 38px rgba(0, 0, 0, 0.3),
0 15px 12px rgba(0, 0, 0, 0.22);
background: @window_bg_color;
border: 1px solid @border_color;
border-radius: 20px;
padding: 20px;
font-family: "${config.stylix.fonts.sansSerif.name}";
font-size: ${toString config.stylix.fonts.sizes.applications}pt;
}
.normal-icons { -gtk-icon-size: 16px; }
.large-icons { -gtk-icon-size: 32px; }
scrollbar { opacity: 0; }
.search-container { border-radius: 10px; }
.input {
caret-color: @theme_fg_color;
background: @surface_color;
padding: 10px;
color: @theme_fg_color;
}
.input placeholder { opacity: 0.5; }
.input selection { background: ${colors.base02}; }
.preview-box,
.elephant-hint,
.placeholder,
.list { color: @theme_fg_color; }
.item-box {
border-radius: 10px;
padding: 10px;
}
.item-quick-activation {
background: alpha(@accent_bg_color, 0.25);
border-radius: 5px;
padding: 10px;
}
child:selected .item-box,
row:selected .item-box { background: alpha(@accent_bg_color, 0.25); }
.item-subtext {
font-size: 12px;
opacity: 0.5;
}
.providerlist .item-subtext {
font-size: unset;
opacity: 0.75;
}
.item-image-text { font-size: 28px; }
.preview {
border: 1px solid alpha(@accent_bg_color, 0.25);
border-radius: 10px;
color: @theme_fg_color;
}
.calc .item-text,
.symbols .item-image,
.todo.urgent { font-size: 24px; }
.todo.done .item-text-box { opacity: 0.25; }
.todo.active { font-weight: bold; }
.bluetooth.disconnected { opacity: 0.5; }
.preview .large-icons { -gtk-icon-size: 64px; }
.keybinds {
padding-top: 10px;
border-top: 1px solid @border_color;
font-size: 12px;
color: @theme_fg_color;
}
.keybind-button { opacity: 0.5; }
.keybind-button:hover { opacity: 0.75; }
.keybind-bind {
text-transform: lowercase;
opacity: 0.35;
}
.keybind-label {
padding: 2px 4px;
border-radius: 4px;
border: 1px solid @theme_fg_color;
}
.error {
padding: 10px;
background: @error_bg_color;
color: @error_fg_color;
}
:not(.calc).current { font-style: italic; }
.preview-content.archlinuxpkgs,
.preview-content.dnfpackages,
.preview-content.aptpackages {
font-family: "${config.stylix.fonts.monospace.name}";
}
'' + lib.optionalString (config.home.username == "chest" && osConfig.networking.hostName == "Eclipse") ''
/* Keep the existing layout; let the compositor blur the wallpaper. */
window { background: transparent; }
.box-wrapper {
background: alpha(@surface_color, 0.62);
border: 2px solid alpha(@accent_bg_color, 0.38);
padding: 19px;
box-shadow: none;
}
.input {
background: alpha(${colors.base02}, 0.42);
border-radius: 10px;
}
popover {
background: alpha(@surface_color, 0.86);
border: 2px solid alpha(@accent_bg_color, 0.38);
padding: 9px;
}
/* Paint only the rounded item, never both its row and child. */
child, row,
child:hover, row:hover,
child:selected, row:selected {
background: transparent;
border-radius: 10px;
}
child:hover .item-box,
row:hover .item-box {
background: alpha(@accent_bg_color, 0.12);
}
child:selected .item-box,
row:selected .item-box {
background: alpha(@accent_bg_color, 0.25);
}
'';
};
};
elephant.enable = true;
};
xdg.configFile = lib.optionalAttrs (config.home.username == "chest") {
"elephant/desktopapplications.toml".text = ''
history_when_empty = true
'';
};
wayland.windowManager.hyprland.settings.bind = [
(hyprLua.bind "SUPER + D" (hyprLua.exec "walker"))
];
+117 -3
View File
@@ -1,4 +1,29 @@
{ pkgs, config, lib, ... }: let
{ pkgs, config, lib, osConfig, inputs, ... }: let
mikuFrost = osConfig.networking.hostName == "Eclipse";
colors = config.lib.stylix.colors.withHashtag;
accent = colors.${config.stylix.accent};
# Render the same Stylix templates, changing only native translucency and accent.
kvantumConfig = config.lib.stylix.colors {
template = builtins.readFile "${inputs.stylix}/modules/qt/kvconfig.mustache";
extension = ".kvconfig";
};
kvantumSvg = config.lib.stylix.colors {
template = builtins.readFile "${inputs.stylix}/modules/qt/kvantum.svg.mustache";
extension = ".svg";
};
frostKvantum = pkgs.runCommandLocal "miku-frost-kvantum" {} ''
directory="$out/share/Kvantum/Base16Kvantum"
mkdir -p "$directory"
cp ${kvantumConfig} "$directory/Base16Kvantum.kvconfig"
cp ${kvantumSvg} "$directory/Base16Kvantum.svg"
substituteInPlace "$directory/Base16Kvantum.kvconfig" \
--replace-fail 'translucent_windows=false' 'translucent_windows=true' \
--replace-fail 'blurring=false' 'blurring=true' \
--replace-fail 'reduce_window_opacity=10' 'reduce_window_opacity=18' \
--replace-fail 'highlight.color=${colors.base0E}' 'highlight.color=${accent}'
substituteInPlace "$directory/Base16Kvantum.svg" \
--replace-fail '${colors.base0D}' '${accent}'
'';
miku-cursor = pkgs.stdenv.mkDerivation {
name = "Miku cursor";
@@ -86,10 +111,46 @@ in {
hyprland.enable = false;
waybar.enable = false;
kitty.variant256Colors = true;
gtk.extraCss = lib.mkIf mikuFrost ''
/* Native background alpha keeps text and controls fully opaque. */
@define-color accent_color ${accent};
@define-color accent_bg_color ${accent};
@define-color theme_selected_bg_color ${accent};
@define-color window_bg_color alpha(${colors.base01}, 0.78);
@define-color view_bg_color alpha(${colors.base00}, 0.48);
@define-color headerbar_bg_color alpha(${colors.base01}, 0.76);
@define-color headerbar_backdrop_color @window_bg_color;
@define-color sidebar_bg_color alpha(${colors.base01}, 0.72);
@define-color sidebar_backdrop_color @window_bg_color;
@define-color dialog_bg_color alpha(${colors.base01}, 0.84);
@define-color popover_bg_color alpha(${colors.base01}, 0.90);
@define-color theme_bg_color @window_bg_color;
@define-color theme_base_color @view_bg_color;
'';
};
base16Scheme = "${pkgs.base16-schemes}/share/themes/eris.yaml";
accent = "base0E";
# Keep a file-backed scheme for consumers such as Neofetch.
base16Scheme = if mikuFrost then toString (pkgs.writeText "miku-frost.yaml" ''
scheme: "Miku Frost"
author: "chest"
base00: "101724"
base01: "192534"
base02: "253247"
base03: "47586B"
base04: "93A8BA"
base05: "E1EFF2"
base06: "F1F8F8"
base07: "F9FFFF"
base08: "EF829A"
base09: "F5AB82"
base0A: "EED69A"
base0B: "69DCC7"
base0C: "43D6CD"
base0D: "7BB9E8"
base0E: "B29DF4"
base0F: "E3A8D8"
'') else "${pkgs.base16-schemes}/share/themes/eris.yaml";
accent = if mikuFrost then "base0C" else "base0E";
polarity = "dark";
image = pkgs.fetchurl {
@@ -132,6 +193,59 @@ in {
};
};
qt.kvantum.themes = lib.mkIf mikuFrost (lib.mkForce [ frostKvantum ]);
# Notifications share the island's surface and rounded, borderless silhouette.
services.mako.settings = lib.mkIf mikuFrost {
background-color = lib.mkForce "${colors.base01}D9";
text-color = lib.mkForce colors.base05;
border-size = lib.mkForce 0;
border-radius = 22;
padding = "12";
progress-color = lib.mkForce "over ${accent}33";
"urgency=low".background-color = lib.mkForce "${colors.base01}D9";
"urgency=critical" = {
background-color = lib.mkForce "${colors.base01}F0";
text-color = lib.mkForce colors.base08;
};
};
# Yazi uses its own true-colour theme rather than the terminal ANSI palette.
programs.yazi.theme = lib.mkIf mikuFrost {
filetype.rules = lib.mkBefore [
{ url = "*/"; fg = colors.base05; bold = false; }
];
icon.conds = lib.mkBefore [
{ "if" = "dir"; text = ""; fg = accent; }
];
mgr.border_style.fg = lib.mkForce colors.base03;
indicator = {
current = { fg = colors.base05; bg = lib.mkForce colors.base02; };
preview = { fg = colors.base05; bg = lib.mkForce colors.base02; };
};
tabs = {
active = { fg = lib.mkForce colors.base00; bg = lib.mkForce accent; };
inactive = { fg = lib.mkForce colors.base04; bg = lib.mkForce colors.base01; };
};
mode = {
normal_main = { fg = lib.mkForce colors.base00; bg = lib.mkForce accent; };
normal_alt = { fg = lib.mkForce accent; bg = lib.mkForce colors.base01; };
};
input = {
border.fg = lib.mkForce accent;
selected.bg = lib.mkForce colors.base02;
};
pick.border.fg = lib.mkForce accent;
completion.border.fg = lib.mkForce accent;
tasks.border.fg = lib.mkForce accent;
};
# Keep the original terminal glass, with colours inherited from Stylix.
programs.ghostty.themes.stylix = lib.mkIf mikuFrost {
background = lib.mkForce config.lib.stylix.colors.base00;
cursor-color = lib.mkForce config.lib.stylix.colors.base0C;
};
dconf.settings = {
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
};
+132 -26
View File
@@ -5,7 +5,9 @@
pkgs,
lib,
...
}: {
}: let
mikuFrost = osConfig.networking.hostName == "Eclipse";
in {
home.packages = with pkgs; [
font-awesome
nerd-fonts.symbols-only
@@ -17,7 +19,11 @@
programs.waybar = {
enable = true;
systemd.enable = true;
package = inputs.waybar.packages.${pkgs.stdenv.hostPlatform.system}.default;
package = inputs.waybar.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs (old: {
postPatch = (old.postPatch or "") + ''
mv subprojects/cava-1.0.0 subprojects/libcava
'';
});
settings.mainBar = {
modules-center = [
@@ -55,11 +61,20 @@
"pulseaudio"
"custom/sep-left"
"battery"
] ++ lib.optional mikuFrost "custom/sep-battery" ++ [
"clock"
];
};
"hyprland/workspaces" = lib.optionalAttrs mikuFrost {
tooltip = false;
};
tray = lib.optionalAttrs mikuFrost {
tooltip = false;
};
cava = {
bars = 9;
bar_delimiter = 0;
@@ -75,6 +90,7 @@
};
pulseaudio = {
tooltip = !mikuFrost;
format = "{icon} {volume}%";
format-icons = {
headphone = "";
@@ -90,18 +106,20 @@
};
mpris = {
tooltip = !mikuFrost;
format = "{dynamic}";
dynamic-len = if osConfig.host.laptop then 16 else 32;
dynamic-order = [ "title" "artist" "album" ];
};
battery = {
tooltip = !mikuFrost;
interval = 5;
states = {
warning = 30;
critical = 15;
};
format = "{icon} {capacity}% | ";
format = if mikuFrost then "{icon} {capacity}%" else "{icon} {capacity}% | ";
format-icons = {
default = ["󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹"];
charging = ["󰢟" "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅"];
@@ -113,7 +131,17 @@
tooltip = false;
};
# Follow battery visibility; the divider has no hover or click target.
"custom/sep-battery" = {
format = " {} ";
exec = "printf '|'";
tooltip = false;
exec-if = "for battery in /sys/class/power_supply/*; do test \"$(cat \"$battery/type\" 2>/dev/null)\" = Battery && exit 0; done; exit 1";
interval = 5;
};
"keyboard-state" = {
tooltip = !mikuFrost;
capslock = true;
format = "{icon}";
format-icons = {
@@ -123,6 +151,7 @@
};
"hyprland/language" = {
tooltip = !mikuFrost;
format-en = "en";
format-ru = "ru";
};
@@ -142,6 +171,7 @@
};
network = {
tooltip = !mikuFrost;
format = "{ifname}";
format-wifi = " {essid} ({signalStrength}%)";
format-ethernet = "{ifname}";
@@ -167,6 +197,7 @@
};
cpu = {
tooltip = !mikuFrost;
interval = 2;
format = "{usage}% ";
min-length = 6;
@@ -184,47 +215,97 @@
style = let
colors = config.lib.stylix.colors.withHashtag;
accent = colors.${config.stylix.accent};
themed = frost: original: if mikuFrost then frost else original;
scssFile = pkgs.writeText "waybar.scss" /*scss*/ ''
window#waybar {
background: transparent;
color: ${colors.base05};
font-weight: bold;
font-size: .85em;
& > * { padding: 0 0 6px 0; }
& > * { padding: ${themed "0 12px 14px" "0 0 6px 0"}; }
}
${lib.optionalString mikuFrost /*scss*/ ''
// Only the centered island paints a surface or a shadow.
window#waybar,
window#waybar > box {
background: transparent;
background-image: none;
border: none;
box-shadow: none;
}
''}
.modules-center {
background: ${colors.base01}CC;
border-radius: 12px;
background: ${themed "rgba(${colors.base01}, 0.58)" "${colors.base01}CC"};
border: none;
border-radius: ${themed "22px" "12px"};
padding: 10px;
box-shadow: 5px 5px 10px rgba(0, 0, 0, 0.4);
box-shadow: ${themed "0 3px 8px rgba(0, 0, 0, 0.18)" "5px 5px 10px rgba(0, 0, 0, 0.4)"};
}
#left,
#right,
#center {
background: ${colors.base02};
background: ${themed "rgba(40, 59, 79, 0.68)" colors.base02};
padding: 0 2px;
margin: 0 8px;
border-radius: 8px;
border-radius: ${themed "12px" "8px"};
}
#left { margin-left: 0; }
#right { margin-right: 0; }
#clock { padding-right: 10px; }
${lib.optionalString mikuFrost /*scss*/ ''
// Keep hover surfaces inside the rounded groups.
#language, #keyboard-state, #keyboard-state label,
#cava, #mpris, #tray widget, #tray widget > image,
#network, #custom-mem, #cpu, #temperature,
#pulseaudio, #battery, #clock {
border-radius: 10px;
}
#cava { padding: 0 10px; }
#network, #custom-mem, #cpu, #temperature,
#pulseaudio, #battery, #clock {
padding-left: 6px;
padding-right: 6px;
}
// Reserve the same width in active, inactive and hover states.
#workspaces button {
box-shadow: none;
text-shadow: none;
background-image: none;
}
tooltip {
color: ${colors.base05};
background: rgba(25, 37, 52, 0.94);
border: 2px solid rgba(67, 214, 205, 0.38);
border-radius: ${themed "12px" "8px"};
}
tooltip label { padding: 6px; }
''}
#clock { padding-right: ${themed "6px" "10px"}; }
#cava { padding: 0 10px; color: ${themed accent colors.base05}; }
#custom-sep-left,
#custom-sep-battery {
color: ${themed "rgba(147, 168, 186, 0.38)" colors.base05};
background: transparent;
}
#language { padding: 8px; }
#workspaces button {
color: ${colors.base05};
color: ${themed colors.base04 colors.base05};
padding: 0 2px;
border-radius: 999px;
border: 1pt solid transparent;
min-width: 20px;
min-width: ${themed "25px" "20px"};
&:hover { background: ${colors.base03}; }
&:hover { background: ${themed "rgba(67, 214, 205, 0.12)" colors.base03}; }
&.active {
background: ${accent};
@@ -232,27 +313,50 @@
min-width: 25px;
&:hover {
border-color: ${accent};
background: ${colors.base03};
border-color: ${themed "transparent" accent};
background: ${themed "rgba(67, 214, 205, 0.12)" colors.base03};
color: ${accent};
}
}
}
#mpris {
border-radius: 8px;
padding: 4px;
&:hover { background: ${colors.base03}; }
border-radius: ${themed "10px" "8px"};
// Do not leave a styled placeholder when the player has no text.
padding: ${themed "0" "4px"};
border: none;
&:hover { background: ${themed "rgba(67, 214, 205, 0.12)" colors.base03}; }
&.playing {
border: 2px solid ${accent};
padding: 2px;
border: ${themed "none" "2px solid ${accent}"};
padding: ${themed "0" "2px"};
color: ${themed colors.base0E colors.base05};
}
}
${if mikuFrost then /*scss*/ ''
// Each SNI item is one event box containing one image. Paint it once.
#tray > widget {
border: none;
border-radius: 10px;
padding: 0;
background: transparent;
}
#tray > widget:hover {
background: rgba(67, 214, 205, 0.12);
}
#tray > widget > image {
padding: 8px;
margin: 0;
background: transparent;
}
#tray > widget.needs-attention {
background: rgba(245, 171, 130, 0.16);
}
'' else /*scss*/ ''
#tray {
widget {
border: 1pt solid transparent;
&:hover { background: ${colors.base03}; }
&:hover { background: ${themed "rgba(67, 214, 205, 0.12)" colors.base03}; }
& > image { padding: 8px; }
}
@@ -260,21 +364,23 @@
& > .needs-attention { border-color: ${colors.base09}; }
}
''}
#pulseaudio {
&:hover { background: ${colors.base03}; }
&:hover { background: ${themed "rgba(67, 214, 205, 0.12)" colors.base03}; }
&.muted {
background: ${colors.base08};
color: ${colors.base01};
&:hover {
color: ${colors.base08};
background: ${colors.base03};
background: ${themed "rgba(67, 214, 205, 0.12)" colors.base03};
}
}
}
#network {
&:hover { background: ${colors.base02}; }
&:hover { background: ${themed "rgba(67, 214, 205, 0.12)" colors.base02}; }
&.disconnected {
color: ${colors.base00};
background: ${colors.base08};
@@ -282,7 +388,7 @@
}
#system .drawer-child > * {
margin-right: 4px
margin-right: 4px;
}
#keyboard-state label.locked {
+5 -1
View File
@@ -22,7 +22,11 @@
in {
enable = true;
systemd.enable = true;
package = inputs.waybar.packages.${pkgs.stdenv.hostPlatform.system}.default;
package = inputs.waybar.packages.${pkgs.stdenv.hostPlatform.system}.default.overrideAttrs (old: {
postPatch = (old.postPatch or "") + ''
mv subprojects/cava-1.0.0 subprojects/libcava
'';
});
settings.mainBar = {
spacing = 8;