From 9fac3b70b30cc5c2e9e3e06c895e133da724e101 Mon Sep 17 00:00:00 2001
From: Noratrieb <48135649+Noratrieb@users.noreply.github.com>
Date: Fri, 1 Aug 2025 18:35:15 +0200
Subject: [PATCH] hm
---
flake.nix | 2 +-
home-manager/laptop.nix | 7 +
home-manager/waybar.nix | 392 ++++++++++++++++++++--------------------
3 files changed, 207 insertions(+), 194 deletions(-)
create mode 100644 home-manager/laptop.nix
diff --git a/flake.nix b/flake.nix
index 2b7f373..24251bf 100644
--- a/flake.nix
+++ b/flake.nix
@@ -52,7 +52,7 @@
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
- home-manager.users.nora = import ./home-manager/home.nix;
+ home-manager.users.nora = import ./home-manager/laptop.nix;
home-manager.extraSpecialArgs = { inherit inputs; };
}
];
diff --git a/home-manager/laptop.nix b/home-manager/laptop.nix
new file mode 100644
index 0000000..6f59d51
--- /dev/null
+++ b/home-manager/laptop.nix
@@ -0,0 +1,7 @@
+{ ... }: {
+ imports = [
+ ./home.nix
+ ];
+
+ is-laptop = true;
+}
diff --git a/home-manager/waybar.nix b/home-manager/waybar.nix
index f496a96..97980a6 100644
--- a/home-manager/waybar.nix
+++ b/home-manager/waybar.nix
@@ -1,214 +1,220 @@
{ config, pkgs, lib, ... }:
{
- home.file."${config.xdg.configHome}/waybar/config.jsonc" = {
- text =
- builtins.toJSON {
- height = 35;
- spacing = 4;
+ options.is-laptop = lib.mkEnableOption "whether the computer is a laptop";
- modules-left = [
- "systemd-failed-units"
- "custom/music-back"
- "mpris"
- "custom/music-next"
- ];
- modules-center = [
- "clock"
- ];
- modules-right = [
- "bluetooth"
- "privacy"
- "pulseaudio"
- "cpu"
- "memory"
- "tray"
- ] ++
- (if (config.networking.hostName == "scrap") then [ "battery" ] else [ ]) ++
- [
- "custom/power"
- ];
+ config = {
+ home.file."${config.xdg.configHome}/waybar/config.jsonc" = {
+ text =
+ builtins.toJSON {
+ height = 35;
+ spacing = 4;
- systemd-failed-units = {
- hide-on-ok = true; # Hide if there are zero failed units.
- format = "✗ {nr_failed}";
- format-ok = "✓ systemd is ok but waybar is not";
- system = true; # monitor sytem units
- user = true; # monitor user units
- };
- "custom/music-back" = {
- format = "⏴";
- tooltip = true;
- tooltip-format = "Play previous song";
- on-click = "${lib.getExe pkgs.playerctl} previous";
- };
- mpris = {
- format = "{status_icon} {dynamic}";
- dynamic-order = [ "title" "artist" ];
- status-icons = {
- paused = "⏸";
+ modules-left = [
+ "systemd-failed-units"
+ "custom/music-back"
+ "mpris"
+ "custom/music-next"
+ ];
+ modules-center = [
+ "clock"
+ ];
+ modules-right = [
+ "bluetooth"
+ "privacy"
+ "pulseaudio"
+ "cpu"
+ "memory"
+ "tray"
+ ] ++
+ (if (config.networking.hostName == "scrap") then
+ [ "network" "power-profiles-daemon" "battery" ]
+ else [ ]) ++
+ [
+ "custom/power"
+ ];
+
+ systemd-failed-units = {
+ hide-on-ok = true; # Hide if there are zero failed units.
+ format = "✗ {nr_failed}";
+ format-ok = "✓ systemd is ok but waybar is not";
+ system = true; # monitor sytem units
+ user = true; # monitor user units
};
- };
- "custom/music-next" = {
- format = "⏵";
- tooltip = true;
- tooltip-format = "Play next song";
- on-click = "${lib.getExe pkgs.playerctl} next";
- };
- clock = {
- interval = 1;
- format = "{:%a %F %H:%M:%S}";
- tooltip-format = "{calendar}";
- calendar = {
- mode = "year";
- mode-mon-col = 3;
- weeks-pos = "right";
- on-scroll = 1;
- format = {
- months = "{}";
- days = "{}";
- weeks = "W{}";
- weekdays = "{}";
- today = "{}";
+ "custom/music-back" = {
+ format = "⏴";
+ tooltip = true;
+ tooltip-format = "Play previous song";
+ on-click = "${lib.getExe pkgs.playerctl} previous";
+ };
+ mpris = {
+ format = "{status_icon} {dynamic}";
+ dynamic-order = [ "title" "artist" ];
+ status-icons = {
+ paused = "⏸";
};
};
- actions = {
- on-click-right = "mode";
- on-scroll-up = "shift_up";
- on-scroll-down = "shift_down";
+ "custom/music-next" = {
+ format = "⏵";
+ tooltip = true;
+ tooltip-format = "Play next song";
+ on-click = "${lib.getExe pkgs.playerctl} next";
};
- };
-
- bluetooth = {
- format = " {status}";
- format-disabled = ""; # an empty format will hide the module
- format-connected = " {num_connections} connected";
- on-click = lib.getExe pkgs.overskride;
- };
- pulseaudio = {
- # "scroll-step": 1, // %, can be a float
- "format" = "{volume}% {icon} {format_source}";
- "format-bluetooth" = "{volume}% {icon} {format_source}";
- "format-bluetooth-muted" = " {icon} {format_source}";
- "format-muted" = " {format_source}";
- "format-source" = "{volume}% ";
- "format-source-muted" = "";
- "format-icons" = {
- "headphone" = "";
- "hands-free" = "";
- "headset" = "";
- "phone" = "";
- "portable" = "";
- "car" = "";
- "default" = [ "" "" "" ];
- };
- "on-click" = lib.getExe pkgs.pavucontrol;
- };
- cpu = {
- format = "{usage}% ";
- tooltip = false;
- };
- memory = {
- format = "{}% ";
- };
- tray = {
- spacing = 10;
- };
- "custom/power" =
- let
- power-menu = pkgs.writeText "power_menu.xml" ''
-
-
-
-
- '';
- in
- {
- "format" = "⏻";
- "tooltip" = false;
- "menu" = "on-click";
- "menu-file" = power-menu;
- "menu-actions" = {
- "lock" = "${lib.getExe pkgs.swaylock}";
- "reboot" = "reboot";
- "poweroff" = "poweroff";
+ clock = {
+ interval = 1;
+ format = "{:%a %F %H:%M:%S}";
+ tooltip-format = "{calendar}";
+ calendar = {
+ mode = "year";
+ mode-mon-col = 3;
+ weeks-pos = "right";
+ on-scroll = 1;
+ format = {
+ months = "{}";
+ days = "{}";
+ weeks = "W{}";
+ weekdays = "{}";
+ today = "{}";
+ };
+ };
+ actions = {
+ on-click-right = "mode";
+ on-scroll-up = "shift_up";
+ on-scroll-down = "shift_down";
};
};
- };
- };
- home.file."${config.xdg.configHome}/waybar/style.css" = {
- text = ''
- ${builtins.readFile ./default-waybar-style.css}
- window#waybar {
- background: linear-gradient(
- to right,
- rgb(131, 80, 117) 15%,
- rgb(158, 103, 143) 30%,
- rgb(131, 80, 117) 45%,
- #db88c5
- );
- color: black;
- }
+ bluetooth = {
+ format = " {status}";
+ format-disabled = ""; # an empty format will hide the module
+ format-connected = " {num_connections} connected";
+ on-click = lib.getExe pkgs.overskride;
+ };
+ pulseaudio = {
+ # "scroll-step": 1, // %, can be a float
+ "format" = "{volume}% {icon} {format_source}";
+ "format-bluetooth" = "{volume}% {icon} {format_source}";
+ "format-bluetooth-muted" = " {icon} {format_source}";
+ "format-muted" = " {format_source}";
+ "format-source" = "{volume}% ";
+ "format-source-muted" = "";
+ "format-icons" = {
+ "headphone" = "";
+ "hands-free" = "";
+ "headset" = "";
+ "phone" = "";
+ "portable" = "";
+ "car" = "";
+ "default" = [ "" "" "" ];
+ };
+ "on-click" = lib.getExe pkgs.pavucontrol;
+ };
+ cpu = {
+ format = "{usage}% ";
+ tooltip = false;
+ };
+ memory = {
+ format = "{}% ";
+ };
+ tray = {
+ spacing = 10;
+ };
+ "custom/power" =
+ let
+ power-menu = pkgs.writeText "power_menu.xml" ''
+
+
+
+
+ '';
+ in
+ {
+ "format" = "⏻";
+ "tooltip" = false;
+ "menu" = "on-click";
+ "menu-file" = power-menu;
+ "menu-actions" = {
+ "lock" = "${lib.getExe pkgs.swaylock}";
+ "reboot" = "reboot";
+ "poweroff" = "poweroff";
+ };
+ };
+ };
+ };
+ home.file."${config.xdg.configHome}/waybar/style.css" = {
+ text = ''
+ ${builtins.readFile ./default-waybar-style.css}
- #systemd-failed-units {
- padding-left: 30px;
- padding-right: 30px;
- background-color: red;
- }
+ window#waybar {
+ background: linear-gradient(
+ to right,
+ rgb(131, 80, 117) 15%,
+ rgb(158, 103, 143) 30%,
+ rgb(131, 80, 117) 45%,
+ #db88c5
+ );
+ color: black;
+ }
- #mpris {
- color: white;
- }
+ #systemd-failed-units {
+ padding-left: 30px;
+ padding-right: 30px;
+ background-color: red;
+ }
- #custom-music-back, #custom-music-next {
- font-size: 20px;
- color: white;
- }
+ #mpris {
+ color: white;
+ }
- #custom-music-back {
- padding: 0 10px 0 15px;
- }
- #custom-music-next {
- padding: 0 10px;
- }
+ #custom-music-back, #custom-music-next {
+ font-size: 20px;
+ color: white;
+ }
- #clock {
- background: unset;
- color: white;
- }
+ #custom-music-back {
+ padding: 0 10px 0 15px;
+ }
+ #custom-music-next {
+ padding: 0 10px;
+ }
- #privacy *, #pulseaudio, #cpu, #memory, #tray {
- background-color: unset;
- color: black;
- }
+ #clock {
+ background: unset;
+ color: white;
+ }
- #custom-power {
- padding-left: 15px;
- padding-right: 15px;
- font-size: 30px;
- background-color: rebeccapurple;
- color: white;
- }
- '';
+ #privacy *, #pulseaudio, #cpu, #memory, #tray {
+ background-color: unset;
+ color: black;
+ }
+
+ #custom-power {
+ padding-left: 15px;
+ padding-right: 15px;
+ font-size: 30px;
+ background-color: rebeccapurple;
+ color: white;
+ }
+ '';
+ };
};
}