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 = { };