From bc08dc1949120358e0b2e4aa28653a4c600e6034 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Tue, 25 Jul 2023 21:44:07 +0800 Subject: [PATCH] feat: ai with both i3 & hyprland replace archcraft's icon by snowflake(nixos) feat: update waybar's settings --- Makefile | 14 +- flake.nix | 37 +- fonts/archcraft-icon-font.nix | 35 -- .../{wayland.nix => desktop-hyprland.nix} | 9 +- home/linux/{x11.nix => desktop-i3.nix} | 9 +- home/linux/hyprland/hypr-conf/hyprland.conf | 2 +- .../hyprland/hypr-conf/scripts/brightness | 2 +- home/linux/hyprland/hypr-conf/scripts/volume | 2 +- home/linux/hyprland/hypr-conf/scripts/weather | 120 ------ home/linux/hyprland/hypr-conf/waybar/config | 341 +++++++----------- .../linux/hyprland/hypr-conf/waybar/style.css | 300 ++++++--------- .../hyprland/hypr-conf/wlogout/style.css | 2 +- home/linux/hyprland/hypr-conf/wofi/style.css | 2 +- home/linux/server.nix | 9 +- hosts/idols/ai/default.nix | 2 - modules/nixos/core-desktop.nix | 4 - modules/nixos/core-server.nix | 1 - modules/nixos/hyprland.nix | 2 + modules/nixos/i3.nix | 1 + modules/nixos/user-group.nix | 2 + 20 files changed, 298 insertions(+), 598 deletions(-) delete mode 100644 fonts/archcraft-icon-font.nix rename home/linux/{wayland.nix => desktop-hyprland.nix} (87%) rename home/linux/{x11.nix => desktop-i3.nix} (87%) delete mode 100755 home/linux/hyprland/hypr-conf/scripts/weather diff --git a/Makefile b/Makefile index 709b3d6e..31b1b4ef 100644 --- a/Makefile +++ b/Makefile @@ -10,11 +10,17 @@ # ############################################################################ -deploy: - nixos-rebuild switch --flake . --use-remote-sudo +i3: + nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo -debug: - nixos-rebuild switch --flake . --use-remote-sudo --show-trace --verbose +hyprland: + nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo + +debug_i3: + nixos-rebuild switch --flake .#ai_i3 --use-remote-sudo --show-trace --verbose + +debug_hyprland: + nixos-rebuild switch --flake .#ai_hyprland --use-remote-sudo --show-trace --verbose update: nix flake update diff --git a/flake.nix b/flake.nix index 0e1958e4..9b4490cf 100644 --- a/flake.nix +++ b/flake.nix @@ -11,7 +11,6 @@ # the nixConfig here only affects the flake itself, not the system configuration! nixConfig = { experimental-features = [ "nix-command" "flakes" ]; - trusted-users = [ "ryan" ]; substituters = [ # replace official cache with a mirror located in China @@ -105,8 +104,9 @@ }; } // inputs; # 星野 アイ, Hoshino Ai - idol_ai_modules = [ + idol_ai_modules_i3 = [ ./hosts/idols/ai + ./modules/nixos/i3.nix home-manager.nixosModules.home-manager { @@ -114,8 +114,20 @@ home-manager.useUserPackages = true; home-manager.extraSpecialArgs = x64_specialArgs; - home-manager.users.ryan = import ./home/linux/x11.nix; - # home-manager.users.ryan = import ./home/linux/wayland.nix; + home-manager.users.ryan = import ./home/linux/desktop-i3.nix; + } + ]; + idol_ai_modules_hyprland = [ + ./hosts/idols/ai + ./modules/nixos/hyprland.nix + + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + + home-manager.extraSpecialArgs = x64_specialArgs; + home-manager.users.ryan = import ./home/linux/desktop-hyprland.nix; } ]; # 星野 愛久愛海, Hoshino Akuamarin @@ -159,9 +171,13 @@ ]; in { nixosConfigurations = let system = x64_system; specialArgs = x64_specialArgs; in { - ai = nixpkgs.lib.nixosSystem { + ai_i3 = nixpkgs.lib.nixosSystem { # ai with i3 window manager inherit system specialArgs; - modules = idol_ai_modules; + modules = idol_ai_modules_i3; + }; + ai_hyprland = nixpkgs.lib.nixosSystem { # ai with hyprland compositor + inherit system specialArgs; + modules = idol_ai_modules_hyprland; }; aquamarine = nixpkgs.lib.nixosSystem { @@ -220,9 +236,14 @@ # https://github.com/nix-community/nixos-generators let system = x64_system; specialArgs = x64_specialArgs; in { # Hoshino Ai is a physical machine, so we need to generate an iso image for it. - ai = nixos-generators.nixosGenerate { + ai_i3 = nixos-generators.nixosGenerate { # ai with i3 window manager inherit system specialArgs; - modules = idol_ai_modules; + modules = idol_ai_modules_i3; + format = "iso"; + }; + ai_hyprland = nixos-generators.nixosGenerate { # ai with hyprland compositor + inherit system specialArgs; + modules = idol_ai_modules_hyprland; format = "iso"; }; # Hoshino Aquamarine is a virtual machine running on Proxmox VE. diff --git a/fonts/archcraft-icon-font.nix b/fonts/archcraft-icon-font.nix deleted file mode 100644 index 96b21bb5..00000000 --- a/fonts/archcraft-icon-font.nix +++ /dev/null @@ -1,35 +0,0 @@ -{ lib, stdenvNoCC, fetchgit }: - -stdenvNoCC.mkDerivation rec { - pname = "archcraft-font"; - version = "2023-05-07"; - - src = fetchgit { - url = "https://github.com/archcraft-os/archcraft-packages.git"; - rev = "88030ee6d2df80db958541b53bd3673e081720cf"; # git commit id - sparseCheckout = [ "archcraft-fonts/files/icon-fonts/archcraft.ttf" ]; # only fetch the feather.ttf file - - # the sha256 is used to verify the integrity of the downloaded source, and alse cache the build result. - # so if you copy other package src's sha256, you will get a cached build result of that package, and all configs in this file will be ignored. - # specify sha256 to empty and build it, then an error will indicate the correct sha256 - sha256 = "sha256-DrGN8lN4Yr1RTyCUZhJjzKgCuC0vTnSWjOKovNg3T/U="; - }; - - installPhase = '' - runHook preInstall - - install -Dm644 archcraft-fonts/files/icon-fonts/archcraft.ttf -t $out/share/fonts/truetype/ - - runHook postInstall - ''; - - meta = with lib; { - homepage = "https://github.com/archcraft-os/archcraft-packages"; - description = "Archcraft icon font"; - version = version; - longDescription = ''Archcraft icon font''; - license = licenses.mit; - maintainers = [ maintainers.ryan4yin ]; - platforms = platforms.all; - }; -} diff --git a/home/linux/wayland.nix b/home/linux/desktop-hyprland.nix similarity index 87% rename from home/linux/wayland.nix rename to home/linux/desktop-hyprland.nix index 47a3276c..0dec546a 100644 --- a/home/linux/wayland.nix +++ b/home/linux/desktop-hyprland.nix @@ -13,9 +13,12 @@ # Home Manager needs a bit of information about you and the # paths it should manage. - home = { - username = "ryan"; - homeDirectory = "/home/ryan"; + home = let + name = "ryan"; + in + { + username = name; + homeDirectory = "/home/${name}"; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/home/linux/x11.nix b/home/linux/desktop-i3.nix similarity index 87% rename from home/linux/x11.nix rename to home/linux/desktop-i3.nix index 703a9fa3..e8b4f831 100644 --- a/home/linux/x11.nix +++ b/home/linux/desktop-i3.nix @@ -13,9 +13,12 @@ # Home Manager needs a bit of information about you and the # paths it should manage. - home = { - username = "ryan"; - homeDirectory = "/home/ryan"; + home = let + name = "ryan"; + in + { + username = name; + homeDirectory = "/home/${name}"; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/home/linux/hyprland/hypr-conf/hyprland.conf b/home/linux/hyprland/hypr-conf/hyprland.conf index 10d2a2ac..0243e105 100644 --- a/home/linux/hyprland/hypr-conf/hyprland.conf +++ b/home/linux/hyprland/hypr-conf/hyprland.conf @@ -1,4 +1,4 @@ -## Hyprland configuration file for Archcraft +## Hyprland configuration file #-- Output ---------------------------------------------------- # Configure your Display resolution, offset, scale and Monitors here, use `hyprctl monitors` to get the info. diff --git a/home/linux/hyprland/hypr-conf/scripts/brightness b/home/linux/hyprland/hypr-conf/scripts/brightness index 1dc74334..bf7d968a 100755 --- a/home/linux/hyprland/hypr-conf/scripts/brightness +++ b/home/linux/hyprland/hypr-conf/scripts/brightness @@ -1,6 +1,6 @@ #!/usr/bin/env bash -## Script To Manage Brightness For Archcraft (in Wayland). +## Script To Manage Brightness (in Wayland). iDIR="$HOME/.config/hypr/mako/icons" diff --git a/home/linux/hyprland/hypr-conf/scripts/volume b/home/linux/hyprland/hypr-conf/scripts/volume index 3bc7ea46..eae7aef7 100755 --- a/home/linux/hyprland/hypr-conf/scripts/volume +++ b/home/linux/hyprland/hypr-conf/scripts/volume @@ -1,6 +1,6 @@ #!/usr/bin/env bash -## Script To Manage Speaker Volume For Archcraft (in Wayland). +## Script To Manage Speaker Volume(in Wayland). iDIR="$HOME/.config/hypr/mako/icons" diff --git a/home/linux/hyprland/hypr-conf/scripts/weather b/home/linux/hyprland/hypr-conf/scripts/weather deleted file mode 100755 index 9e250d34..00000000 --- a/home/linux/hyprland/hypr-conf/scripts/weather +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env python - -import subprocess -from pyquery import PyQuery # install using `pip install pyquery` -import json - -# weather icons -weather_icons = { - "sunnyDay": "滛", - "clearNight": "望", - "cloudyFoggyDay": "", - "cloudyFoggyNight": "", - "rainyDay": "", - "rainyNight": "", - "snowyIcyDay": "", - "snowyIcyNight": "", - "severe": "", - "default": "", -} - -# get location_id -# to get your own location_id, go to https://weather.com & search your location. -# once you choose your location, you can see the location_id in the URL(64 chars long hex string) -# Shenzen, Guangdong's location id: https://weather.com/en-IN/weather/today/l/7a4684e0789c881e79935986f2e9e5ab05b0104ac4310fd8818006dfb66092c3 -location_id = "7a4684e0789c881e79935986f2e9e5ab05b0104ac4310fd8818006dfb66092c3" - -# get html page -url = "https://weather.com/en-IN/weather/today/l/" + location_id -html_data = PyQuery(url=url) - -# current temperature -temp = html_data("span[data-testid='TemperatureValue']").eq(0).text() -# print(temp) - -# current status phrase -status = html_data("div[data-testid='wxPhrase']").text() -status = f"{status[:16]}.." if len(status) > 17 else status -# print(status) - -# status code -status_code = html_data("#regionHeader").attr("class").split(" ")[2].split("-")[2] -# print(status_code) - -# status icon -icon = ( - weather_icons[status_code] - if status_code in weather_icons - else weather_icons["default"] -) -# print(icon) - -# temperature feels like -temp_feel = html_data( - "div[data-testid='FeelsLikeSection'] > span[data-testid='TemperatureValue']" -).text() -temp_feel_text = f"Feels like {temp_feel}c" -# print(temp_feel_text) - -# min-max temperature -temp_min = ( - html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']") - .eq(0) - .text() -) -temp_max = ( - html_data("div[data-testid='wxData'] > span[data-testid='TemperatureValue']") - .eq(1) - .text() -) -temp_min_max = f" {temp_min}\t\t {temp_max}" -# print(temp_min_max) - -# wind speed -wind_speed = html_data("span[data-testid='Wind']").text().split("\n")[1] -wind_text = f"煮 {wind_speed}" -# print(wind_text) - -# humidity -humidity = html_data("span[data-testid='PercentageValue']").text() -humidity_text = f" {humidity}" -# print(humidity_text) - -# visibility -visbility = html_data("span[data-testid='VisibilityValue']").text() -visbility_text = f" {visbility}" -# print(visbility_text) - -# air quality index -air_quality_index = html_data("text[data-testid='DonutChartValue']").text() -# print(air_quality_index) - -# hourly rain prediction -prediction = html_data("section[aria-label='Hourly Forecast']")( - "div[data-testid='SegmentPrecipPercentage'] > span" -).text() -prediction = prediction.replace("Chance of Rain", "") -prediction = f"\n\n  (hourly) {prediction}" if len(prediction) > 0 else prediction -# print(prediction) - -# tooltip text -tooltip_text = str.format( - "\t\t{}\t\t\n{}\n{}\n{}\n\n{}\n{}\n{}{}", - f'{temp}', - f"{icon}", - f"{status}", - f"{temp_feel_text}", - f"{temp_min_max}", - f"{wind_text}\t{humidity_text}", - f"{visbility_text}\tAQI {air_quality_index}", - f"{prediction}", -) - -# print waybar module data -out_data = { - "text": f"{icon} {temp}", - "alt": status, - "tooltip": tooltip_text, - "class": status_code, -} -print(json.dumps(out_data)) \ No newline at end of file diff --git a/home/linux/hyprland/hypr-conf/waybar/config b/home/linux/hyprland/hypr-conf/waybar/config index 52dc7766..314176e0 100644 --- a/home/linux/hyprland/hypr-conf/waybar/config +++ b/home/linux/hyprland/hypr-conf/waybar/config @@ -1,222 +1,125 @@ { - "name": "main-bar", - "id": "main-bar", - "layer": "top", - "mode": "dock", - "exclusive": true, - "passthrough": false, - "height": 32, - "spacing": 6, - "margin": 0, - "margin-top": 0, - "margin-bottom": 0, - "margin-left": 0, - "margin-right": 0, - "fixed-center": true, - "ipc": true, - - "modules-left": [ - "custom/menu", - "wlr/workspaces", - "cpu", - "memory", - "disk" - ], - "modules-center": [ - "mpd", - "tray" - ], - "modules-right": [ - "pulseaudio", - "custom/weather", - "network", - "battery", - "clock", - "custom/power" - ], - - // waybar-backlight - "backlight": { - "interval": 2, - "align": 0, - "rotate": 0, - //"device": "amdgpu_bl0", - "format": "{icon} {percent}%", - "format-icons": [ - "", - "", - "", - "" - ], - // Commands to execute on events - "on-click": "", - "on-click-middle": "", - "on-click-right": "", - "on-update": "", - "on-scroll-up": "light -A 5%", - "on-scroll-down": "light -U 5%", - "smooth-scrolling-threshold": 1, + "clock": { + "interval": 60, + "align": 0, + "rotate": 0, + "tooltip-format": "{:%B %Y}\n{calendar}", + "format": " {:%H:%M}", + "format-alt": " {:%a %b %d, %G}" + }, + "cpu": { + "format": "\udb80\udf5b {usage}%", + "interval": 1 + }, + "custom/launcher": { + "format": "\uf313 ", + "on-click": "$HOME/.config/hypr/scripts/menu", + "on-click-middle": "exec default_wall", + "on-click-right": "exec wallpaper_random", + "tooltip": false + }, + "custom/powermenu": { + "format": "\uf011", + "on-click": "$HOME/.config/hypr/scripts/wlogout", + "tooltip": false + }, + "idle_inhibitor": { + "format": "{icon}", + "format-icons": { + "activated": "\uf06e", + "deactivated": "\uf070" }, - "wlr/workspaces": { - "format": "{icon}", - "on-click": "activate", - "all-outputs": true, - "format-icons": { - "1": "", - "2": "", - "3": "", - "4": "", - "5": "ﭮ", - "6": "", - "7": "", - "8": "", - "9": "", - "10": "﮼", - "focused": "", - "default": "" - } - }, - // waybar-battery - "battery": { - "interval": 60, - "align": 0, - "rotate": 0, - //"bat": "BAT1", - //"adapter": "ACAD", - "full-at": 100, - "design-capacity": false, - "states": { - "good": 95, - "warning": 30, - "critical": 15 - }, - "format": "{icon} {capacity}%", - "format-charging": " {capacity}%", - "format-plugged": " {capacity}%", - "format-full": "{icon} Full", - //"format-good": "", - "format-alt": "{icon} {time}", - "format-icons": [ - "", - "", - "", - "", - "" - ], - "format-time": "{H}h {M}min", - "tooltip": true, - }, - // waybar-clock - "clock": { - "interval": 60, - "align": 0, - "rotate": 0, - "tooltip-format": "{:%B %Y}\n{calendar}", - "format": " {:%H:%M}", - "format-alt": " {:%a %b %d, %G}" - }, - // waybar-cpu - "cpu": { - "interval": 5, - "format": " LOAD: {usage}%", - }, - // waybar-custom - "custom/menu": { - "format": "", - "tooltip": false, - "on-click": "$HOME/.config/hypr/scripts/menu", - }, - "custom/power": { - "format": " ", - "tooltip": false, - "on-click": "$HOME/.config/hypr/scripts/wlogout", - }, - // waybar-disk - "disk": { - "interval": 30, - "format": " FREE: {free}", - }, - // waybar-memory - "memory": { - "interval": 10, - "format": " USED: {used:0.1f}G", - }, - // waybar-mpd - "mpd": { - "interval": 2, - "unknown-tag": "N/A", - "format": "{stateIcon} {artist} - {title}", - "format-disconnected": " Disconnected", - "format-paused": "{stateIcon} {artist} - {title}", - "format-stopped": "Stopped ", - "state-icons": { - "paused": "", - "playing": "" - }, - "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)", - // Commands to execute on events - "on-click": "mpc toggle", - "on-click-middle": "mpc prev", - "on-click-right": "mpc next", - "on-update": "", - "on-scroll-up": "mpc seek +00:00:01", - "on-scroll-down": "mpc seek -00:00:01", - "smooth-scrolling-threshold": 1, - }, - // waybar-network - "network": { - "interval": 5, - //"interface": "wlan*", // (Optional) To force the use of this interface, set it for netspeed to work - "format-wifi": " {essid}", - "format-ethernet": " {ipaddr}/{cidr}", - "format-linked": " {ifname} (No IP)", - "format-disconnected": "睊 Disconnected", - "format-disabled": "睊 Disabled", - "format-alt": " {bandwidthUpBits} |  {bandwidthDownBits}", - "tooltip-format": " {ifname} via {gwaddr}", - }, - // weather-custom - "custom/weather": { - // "format": "{}", - // "format-alt": "{alt}: {}", - "format-alt-click": "click-right", - "interval": 300, - "return-type": "json", - "exec": "~/.config/hypr/scripts/weather", - // "on-click": "xdg-open https://weather.com/en-IN/weather/today/l/$(location_id)" - }, - // waybar-pulseaudio - "pulseaudio": { - //"format": "{volume}% {icon} {format_source}", - "format": "{icon} {volume}%", - "format-muted": " Mute", - "format-bluetooth": " {volume}% {format_source}", - "format-bluetooth-muted": " Mute", - "format-source": " {volume}%", - "format-source-muted": "", - "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", - "default": [ - "", - "", - "" - ] - }, - "scroll-step": 5.0, - // Commands to execute on events - "on-click": "amixer set Master toggle", - "on-click-right": "pavucontrol", - "smooth-scrolling-threshold": 1, - }, - // waybar-tray - "tray": { - "icon-size": 16, - "spacing": 10 + "tooltip": false + }, + "layer": "top", + "memory": { + "format": "\udb83\udee0 {percentage}%", + "interval": 1, + "states": { + "warning": 85 } -} \ No newline at end of file + }, + "modules-center": [ + "clock" + ], + "modules-left": [ + "custom/launcher", + "temperature", + "mpd", + "custom/cava-internal" + ], + "modules-right": [ + "pulseaudio", + "backlight", + "memory", + "cpu", + "network", + "custom/powermenu", + "tray" + ], + "mpd": { + "format": "\uf001 {title}", + "format-disconnected": "", + "format-paused": "\uf001 {title}", + "format-stopped": "\uf001", + "max-length": 25, + "on-click": "mpc --quiet toggle", + "on-click-middle": "kitty --class='ncmpcpp' ncmpcpp ", + "on-click-right": "mpc update; mpc ls | mpc add", + "on-scroll-down": "mpc --quiet next", + "on-scroll-up": "mpc --quiet prev", + "smooth-scrolling-threshold": 5, + "tooltip-format": "{title} - {artist} ({elapsedTime:%M:%S}/{totalTime:%H:%M:%S})" + }, + "network": { + "interval": 5, + //"interface": "wlan*", // (Optional) To force the use of this interface, set it for netspeed to work + "format-wifi": " {essid}", + "format-ethernet": " {ipaddr}/{cidr}", + "format-linked": " {ifname} (No IP)", + "format-disconnected": "睊 Disconnected", + "format-disabled": "睊 Disabled", + "format-format": " {bandwidthUpBits} |  {bandwidthDownBits}", + "tooltip-alt": " {ifname} via {gwaddr}", + }, + "position": "top", + "pulseaudio": { + //"format": "{volume}% {icon} {format_source}", + "format": "{icon} {volume}%", + "format-muted": " Mute", + "format-bluetooth": " {volume}% {format_source}", + "format-bluetooth-muted": " Mute", + "format-source": " {volume}%", + "format-source-muted": "", + "format-icons": { + "headphone": "", + "hands-free": "", + "headset": "", + "phone": "", + "portable": "", + "car": "", + "default": [ + "", + "", + "" + ] + }, + "scroll-step": 5.0, + // Commands to execute on events + "on-click": "amixer set Master toggle", + "on-click-right": "pavucontrol", + "smooth-scrolling-threshold": 1, + }, + "temperature": { + "format": "\uf2c9 {temperatureC}\u00b0C", + "tooltip": false + }, + "tray": { + "icon-size": 15, + "spacing": 5 + }, + "wlr/workspaces": { + "format": "{icon}", + "on-click": "activate" + } +} diff --git a/home/linux/hyprland/hypr-conf/waybar/style.css b/home/linux/hyprland/hypr-conf/waybar/style.css index 33f94791..ca90d09b 100644 --- a/home/linux/hyprland/hypr-conf/waybar/style.css +++ b/home/linux/hyprland/hypr-conf/waybar/style.css @@ -1,216 +1,134 @@ -/** ********** Fonts ********** **/ * { - font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif; - font-size: 12px; + font-family: "JetBrainsMono Nerd Font"; + font-size: 12pt; + font-weight: bold; + border-radius: 8px; + transition-property: background-color; + transition-duration: 0.5s; +} +@keyframes blink_red { + to { + background-color: rgb(242, 143, 173); + color: rgb(26, 24, 38); + } +} +.warning, +.critical, +.urgent { + animation-name: blink_red; + animation-duration: 1s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; } - -/** ********** Waybar Window ********** **/ window#waybar { - background-color: #1e1e2e; - color: #1e1e2e; - border-bottom: 2px solid #313244; - transition-property: background-color; - transition-duration: .5s; + background-color: transparent; } - -window#waybar.hidden { - opacity: 0.5; +window > box { + margin-left: 5px; + margin-right: 5px; + margin-top: 5px; + background-color: #1e1e2a; + padding: 3px; + padding-left: 8px; + border: 2px none #33ccff; } - -/** ********** Backlight ********** **/ -#backlight { - background-color: #cba6f7; +#workspaces { + padding-left: 0px; + padding-right: 4px; } - -/** ********** Battery ********** **/ -#battery { - background-color: #f9e2af; +#workspaces button { + padding-top: 5px; + padding-bottom: 5px; + padding-left: 6px; + padding-right: 6px; } - -#battery.charging { +#workspaces button.active { + background-color: rgb(181, 232, 224); + color: rgb(26, 24, 38); } - -#battery.plugged { +#workspaces button.urgent { + color: rgb(26, 24, 38); } - -@keyframes blink { - to { - color: #000000; - } +#workspaces button:hover { + background-color: rgb(248, 189, 150); + color: rgb(26, 24, 38); } - -#battery.critical:not(.charging) { - background-color: #f38ba8; - color: #f38ba8; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: linear; - animation-iteration-count: infinite; - animation-direction: alternate; +tooltip { + background: rgb(48, 45, 65); } - -/** ********** Clock ********** **/ -#clock { - background-color: #a6e3a1; +tooltip label { + color: rgb(217, 224, 238); } - -/** ********** CPU ********** **/ -#cpu { - background-color: #89dceb; +#custom-launcher { + font-size: 20px; + padding-left: 8px; + padding-right: 6px; + color: #7ebae4; } - -/** ********** Memory ********** **/ -#memory { - background-color: #eba0ac; -} - -/** ********** Disk ********** **/ -#disk { - background-color: #b4befe; -} - -/** ********** Tray ********** **/ -#tray { - background-color: #cdd6f4; -} -#tray > .passive { - -gtk-icon-effect: dim; -} -#tray > .needs-attention { - -gtk-icon-effect: highlight; -} -#tray > .active { -} - -/** ********** MPD ********** **/ -#mpd { - background-color: #94e2d5; -} - -#mpd.disconnected { - background-color: #f38ba8; -} - -#mpd.stopped { - background-color: #f5c2e7; -} - -#mpd.playing { - background-color: #74c7ec; -} - -#mpd.paused { -} - -/** ********** Pulseaudio ********** **/ -#pulseaudio { - background-color: #fab387; -} - -#pulseaudio.bluetooth { - background-color: #f5c2e7; -} -#pulseaudio.muted { - background-color: #313244; - color: #cdd6f4; -} - -/** ********** Network ********** **/ -#network { - background-color: #89b4fa; -} - -#network.disconnected,#network.disabled { - background-color: #313244; - color: #cdd6f4; -} -#network.linked { -} -#network.ethernet { -} -#network.wifi { -} - -/** ********** Custom ********** **/ -#custom-menu, #custom-power, #custom-weather, #custom-updater { - border-radius: 4px; - margin: 6px 0px; - padding: 2px 8px; -} - -#custom-menu { - background-color: #f5c2e7; - margin-left: 6px; - padding: 2px 6px; - font-size: 16px; -} - -#custom-power { - background-color: #f38ba8; - margin-right: 6px; - padding: 2px 8px; - font-size: 16px; -} - -#custom-updater { - background-color: #e6ed7b; - margin-right: 6px; - padding: 2px 8px; - font-size: 12px; -} - -/** Common style **/ -#backlight, -#battery, -#clock, -#cpu, -#disk, #mode, +#clock, #memory, +#temperature, +#cpu, #mpd, -#tray, +#custom-wall, +#temperature, +#backlight, #pulseaudio, +#network, +#battery, +#custom-powermenu, +/* #mode { */ +/* margin-left: 10px; */ +/* background-color: rgb(248, 189, 150); */ +/* color: rgb(26, 24, 38); */ +/* } */ +#memory { + color: rgb(181, 232, 224); +} +#cpu { + color: rgb(245, 194, 231); +} +#clock { + color: rgb(217, 224, 238); +} +/* #idle_inhibitor { + color: rgb(221, 182, 242); + }*/ +#custom-wall { + color: #33ccff; +} +#temperature { + color: rgb(150, 205, 251); +} +#backlight { + color: rgb(248, 189, 150); +} +#pulseaudio { + color: rgb(245, 224, 220); +} #network { - border-radius: 4px; - margin: 6px 0px; - padding: 2px 8px; + color: #abe9b3; } - - - -/** ********** Weather ********** **/ - -#custom-weather { - background-color: #5d388b; - margin-right: 6px; - padding: 2px 8px; - font-size: 12px; +#network.disconnected { + color: rgb(255, 255, 255); } - -#custom-weather.severe { - color: #eb937d; +#custom-powermenu { + color: rgb(242, 143, 173); + padding-right: 8px; } - -#custom-weather.sunnyDay { - color: #c2ca76; +#tray { + padding-right: 8px; + padding-left: 10px; } - -#custom-weather.clearNight { - color: #2b2b2a; +#mpd.paused { + color: #414868; + font-style: italic; } - -#custom-weather.cloudyFoggyDay, #custom-weather.cloudyFoggyNight { - color: #c2ddda; +#mpd.stopped { + background: transparent; } - -#custom-weather.rainyDay, #custom-weather.rainyNight { - color: #5aaca5; +#mpd { + color: #c0caf5; } - -#custom-weather.showyIcyDay, #custom-weather.snowyIcyNight { - color: #d6e7e5; -} - -#custom-weather.default { - color: #dbd9d8; -} \ No newline at end of file diff --git a/home/linux/hyprland/hypr-conf/wlogout/style.css b/home/linux/hyprland/hypr-conf/wlogout/style.css index 095f510e..967a4a6c 100644 --- a/home/linux/hyprland/hypr-conf/wlogout/style.css +++ b/home/linux/hyprland/hypr-conf/wlogout/style.css @@ -1,6 +1,6 @@ /** ********** Fonts ********** **/ * { - font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif; + font-family: "JetBrains Mono", "Iosevka Nerd Font", sans-serif; font-size: 14px; font-weight: bold; } diff --git a/home/linux/hyprland/hypr-conf/wofi/style.css b/home/linux/hyprland/hypr-conf/wofi/style.css index a6ed1026..3f06015c 100644 --- a/home/linux/hyprland/hypr-conf/wofi/style.css +++ b/home/linux/hyprland/hypr-conf/wofi/style.css @@ -1,6 +1,6 @@ /** ********** Fonts ********** **/ * { - font-family: "JetBrains Mono", "Iosevka Nerd Font", archcraft, sans-serif; + font-family: "JetBrains Mono", "Iosevka Nerd Font", sans-serif; font-size: 12px; } diff --git a/home/linux/server.nix b/home/linux/server.nix index 2fb0bd89..2e4ed5b1 100644 --- a/home/linux/server.nix +++ b/home/linux/server.nix @@ -9,9 +9,12 @@ # Home Manager needs a bit of information about you and the # paths it should manage. - home = { - username = "ryan"; - homeDirectory = "/home/ryan"; + home = let + name = "ryan"; + in + { + username = name; + homeDirectory = "/home/${name}"; # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage diff --git a/hosts/idols/ai/default.nix b/hosts/idols/ai/default.nix index 6b5cd85c..376e38e7 100644 --- a/hosts/idols/ai/default.nix +++ b/hosts/idols/ai/default.nix @@ -13,8 +13,6 @@ ./hardware-configuration.nix ../../../modules/nixos/fhs-fonts.nix - # ../../../modules/nixos/hyprland.nix - ../../../modules/nixos/i3.nix ../../../modules/nixos/libvirt.nix ../../../modules/nixos/core-desktop.nix # ../../../modules/nixos/remote-building.nix diff --git a/modules/nixos/core-desktop.nix b/modules/nixos/core-desktop.nix index 0d80952b..2d0554f1 100644 --- a/modules/nixos/core-desktop.nix +++ b/modules/nixos/core-desktop.nix @@ -66,10 +66,6 @@ }) (pkgs.callPackage ../../fonts/icomoon-feather-icon-font.nix { }) - - # arch linux icon, used temporarily in waybar - (pkgs.callPackage ../../fonts/archcraft-icon-font.nix { }) - ]; # user defined fonts diff --git a/modules/nixos/core-server.nix b/modules/nixos/core-server.nix index 202b0698..fe82ddaf 100644 --- a/modules/nixos/core-server.nix +++ b/modules/nixos/core-server.nix @@ -24,7 +24,6 @@ # enable flakes globally nix.settings.experimental-features = [ "nix-command" "flakes" ]; - nix.settings.trusted-users = ["ryan"]; # Allow unfree packages nixpkgs.config.allowUnfree = lib.mkDefault false; diff --git a/modules/nixos/hyprland.nix b/modules/nixos/hyprland.nix index 6d46e575..afec8760 100644 --- a/modules/nixos/hyprland.nix +++ b/modules/nixos/hyprland.nix @@ -74,6 +74,8 @@ yad # a fork of zenity, for creating dialogs # audio + alsa-utils # provides amixer/alsamixer/... + cava # for visualizing audio mpd # for playing system sounds mpc-cli # command-line mpd client ncmpcpp # a mpd client with a UI diff --git a/modules/nixos/i3.nix b/modules/nixos/i3.nix index 55cca168..f9dec12e 100644 --- a/modules/nixos/i3.nix +++ b/modules/nixos/i3.nix @@ -42,6 +42,7 @@ xorg.xdpyinfo # get screen information scrot # minimal screen capture tool, used by i3 blur lock to take a screenshot sysstat # get system information + alsa-utils # provides amixer/alsamixer/... xfce.thunar # xfce4's file manager ]; diff --git a/modules/nixos/user-group.nix b/modules/nixos/user-group.nix index ac112962..e76ff844 100644 --- a/modules/nixos/user-group.nix +++ b/modules/nixos/user-group.nix @@ -1,6 +1,8 @@ { ... }: { + nix.settings.trusted-users = ["ryan"]; + users.groups = { ryan = { }; docker = { };