some waybar adjustments

This commit is contained in:
Remy Moll 2025-03-05 19:57:18 +01:00
parent 6b1058f6a4
commit 41b8850196
10 changed files with 242 additions and 291 deletions

View File

@ -2,10 +2,10 @@
description = "Nix config entry point"; description = "Nix config entry point";
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11";
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
# Home manager # Home manager
home-manager.url = "github:nix-community/home-manager/release-25.05"; home-manager.url = "github:nix-community/home-manager/release-24.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
# Managing flatpak apps # Managing flatpak apps
nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1"; nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=v0.4.1";

View File

@ -5,6 +5,7 @@
./configuration.nix ./configuration.nix
./hardware-configuration.nix ./hardware-configuration.nix
../../modules/nixos/bluetooth.nix ../../modules/nixos/bluetooth.nix
../../modules/nixos/flakes.nix
../../modules/nixos/fonts.nix ../../modules/nixos/fonts.nix
../../modules/nixos/hyprland.nix ../../modules/nixos/hyprland.nix
../../modules/nixos/monitoring.nix ../../modules/nixos/monitoring.nix
@ -12,6 +13,7 @@
../../modules/nixos/nvidia.nix ../../modules/nixos/nvidia.nix
../../modules/nixos/pipewire.nix ../../modules/nixos/pipewire.nix
../../modules/nixos/podman.nix ../../modules/nixos/podman.nix
../../modules/nixos/power.nix
../../utils/binary-cache.nix ../../utils/binary-cache.nix
../../utils/garbage-collection.nix ../../utils/garbage-collection.nix
]; ];

View File

@ -3,119 +3,114 @@
programs.vscode = { programs.vscode = {
enable = true; enable = true;
profiles = { # profiles = {
default = { # default = {
extensions = with pkgs.vscode-extensions; [ extensions = with pkgs.vscode-extensions; [
# QOL # QOL
mhutchie.git-graph mhutchie.git-graph
redhat.vscode-yaml redhat.vscode-yaml
github.copilot github.copilot
# python # python
ms-python.python ms-python.python
ms-python.isort ms-python.isort
ms-python.debugpy ms-python.debugpy
ms-python.vscode-pylance ms-python.vscode-pylance
# Nix language # Nix language
jnoortheen.nix-ide jnoortheen.nix-ide
]; ];
# };
keybindings = [
{
key = "ctrl+#";
command = "editor.action.commentLine";
when = "textInputFocus";
}
];
userSettings = {
"telemetry.enableCrashReporter" = false;
"telemetry.enableTelemetry" = false;
"git.ignoreMissingGitWarning" = true;
"editor.suggestSelection" = "first";
"workbench.editorAssociations" = {
"*.ipynb" = "jupyter-notebook";
}; };
"workbench.startupEditor" = "newUntitledFile";
keybindings = { "editor.renderWhitespace" = "none";
"ctrl+shift+." = "workbench.action.terminal.focus"; "editor.acceptSuggestionOnEnter" = "off";
"ctlr+#" = "editor.action.commentLine"; "explorer.confirmDelete" = false;
"git.confirmSync" = false;
"workbench.iconTheme" = "vs-seti";
"editor.fontLigatures" = true;
"explorer.confirmDragAndDrop" = false;
"editor.wordWrap" = "on";
"settingsSync.ignoredSettings" = [
"editor.fontFamily"
"terminal.integrated.fontFamily"
"-python.venvFolders"
];
"jupyter.askForKernelRestart" = false;
"security.workspace.trust.untrustedFiles" = "open";
"notebook.cellToolbarLocation" = {
"default" = "right";
"jupyter-notebook" = "left";
}; };
"git.enableSmartCommit" = true;
userSettings = '' "terminal.integrated.fontFamily" = "Fira Code";
{ "settingsSync.ignoredExtensions" = [
"telemetry.enableCrashReporter": false, "ms-vscode-remote.remote-wsl"
"telemetry.enableTelemetry": false, "ms-vscode-remote.remote-ssh-edit"
"git.ignoreMissingGitWarning": true, "ms-vscode-remote.remote-ssh"
"editor.suggestSelection": "first", ];
"workbench.editorAssociations": { "editor.bracketPairColorization.enabled" = true;
"*.ipynb": "jupyter-notebook" "jupyter.widgetScriptSources" = [
}, "jsdelivr.com"
"workbench.startupEditor": "newUntitledFile", "unpkg.com"
"editor.renderWhitespace": "none", ];
"editor.acceptSuggestionOnEnter": "off", "diffEditor.renderSideBySide" = false;
"explorer.confirmDelete": false, "editor.inlineSuggest.enabled" = true;
"git.confirmSync": false, "github.copilot.enable" = {
"workbench.iconTheme": "vs-seti", "*" = true;
"editor.fontLigatures": true, "plaintext" = true;
"explorer.confirmDragAndDrop": false, "markdown" = true;
"editor.wordWrap": "on", "scminput" = false;
"files.associations": { "yaml" = true;
}, };
"settingsSync.ignoredSettings": [ "redhat.telemetry.enabled" = false;
"editor.fontFamily", "git.autofetch" = true;
"terminal.integrated.fontFamily", "terminal.integrated.enableMultiLinePasteWarning" = false;
"-python.venvFolders" "editor.unicodeHighlight.nonBasicASCII" = false;
], "jupyter.disableJupyterAutoStart" = true;
"jupyter.askForKernelRestart": false, "editor.unicodeHighlight.invisibleCharacters" = false;
"security.workspace.trust.untrustedFiles": "open", "editor.unicodeHighlight.ambiguousCharacters" = false;
"notebook.cellToolbarLocation": { "diffEditor.ignoreTrimWhitespace" = false;
"default": "right", "update.showReleaseNotes" = false;
"jupyter-notebook": "left" "terminal.external.linuxExec" = "kitty";
}, "window.dialogStyle" = "custom";
"git.enableSmartCommit": true, "window.titleBarStyle" = "custom";
"terminal.integrated.fontFamily": "Fira Code", "github.copilot.editor.enableAutoCompletions" = true;
"settingsSync.ignoredExtensions": [ "window.menuBarVisibility" = "compact";
"ms-vscode-remote.remote-wsl", "workbench.colorTheme" = "Default Light+";
"ms-vscode-remote.remote-ssh-edit", "github.copilot.advanced" = {};
"ms-vscode-remote.remote-ssh" "git.openRepositoryInParentFolders" = "never";
], "terminal.integrated.commandsToSkipShell" = [
"editor.bracketPairColorization.enabled": true, "language-julia.interrupt"
"jupyter.widgetScriptSources": [ ];
"jsdelivr.com", "diffEditor.hideUnchangedRegions.enabled" = true;
"unpkg.com" "[typst]" = {
], "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
"%DOC%.tex" };
], "[typst-code]" = {
"diffEditor.renderSideBySide": false, "editor.wordSeparators" = "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?";
"editor.inlineSuggest.enabled": true, };
"suppressLineUncommittedWarning": true "tinymist.fontPaths" = [
}, "./font"
"github.copilot.enable": { ];
"*": true, "editor.fontFamily" = "'FiraCode Nerd Font Mono', 'monospace', monospace";
"plaintext": true,
"markdown": true,
"scminput": false,
"yaml": true
},
"redhat.telemetry.enabled": false,
"git.autofetch": true,
"terminal.integrated.enableMultiLinePasteWarning": false,
"editor.unicodeHighlight.nonBasicASCII": false,
"jupyter.disableJupyterAutoStart": true,
"editor.unicodeHighlight.invisibleCharacters": false,
"editor.unicodeHighlight.ambiguousCharacters": false,
"diffEditor.ignoreTrimWhitespace": false,
"update.showReleaseNotes": false,
"terminal.external.linuxExec": "kitty",
"window.dialogStyle": "custom",
"window.titleBarStyle": "custom",
"github.copilot.editor.enableAutoCompletions": true,
"window.menuBarVisibility": "compact",
"workbench.colorTheme": "Default Light+",
"github.copilot.advanced": {},
"git.openRepositoryInParentFolders": "never",
"terminal.integrated.commandsToSkipShell": [
"language-julia.interrupt"
],
"diffEditor.hideUnchangedRegions.enabled": true,
"[typst]": {
"editor.wordSeparators": "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?"
},
"[typst-code]": {
"editor.wordSeparators": "`~!@#$%^&*()=+[{]}\\|;:'\",.<>/?"
},
"tinymist.fontPaths": [
"./font"
],
"editor.fontFamily": "'FiraCode Nerd Font Mono', 'monospace', monospace",
};
'';
}; };
};
} }

View File

@ -59,9 +59,9 @@
# "${pkgs.hyprpaper}/bin/hyprpaper" # "${pkgs.hyprpaper}/bin/hyprpaper"
# hyprpaper is handled as its own service # hyprpaper is handled as its own service
"${pkgs.waybar}/bin/waybar" "${pkgs.waybar}/bin/waybar"
# Fixes cursor themes in gnome apps under hyprland # # Fixes cursor themes in gnome apps under hyprland
"gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'" # "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'"
"gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}" # "gsettings set org.gnome.desktop.interface cursor-size ${toString home.pointerCursor.size}"
]; ];
general = { general = {

View File

@ -4,23 +4,23 @@
... ...
}: }:
with lib; let with lib; let
wallpapers = builtins.readDir ../../../wallpapers; # wallpapers = builtins.readDir ../../../wallpapers;
wallpaperBashArray = "(\"${strings.concatStrings (strings.intersperse "\" \"" (map (wallpaper: ../../../wallpapers + "/" + wallpaper) (attrNames wallpapers)))}\")"; # wallpaperBashArray = "(\"${strings.concatStrings (strings.intersperse "\" \"" (map (wallpaper: ../../../wallpapers + "/" + wallpaper) (attrNames wallpapers)))}\")";
wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" '' # wallpaperRandomizer = pkgs.writeShellScriptBin "wallpaperRandomizer" ''
wallpapers=${wallpaperBashArray} # wallpapers=${wallpaperBashArray}
rand=$[$RANDOM % ''${#wallpapers[@]}] # rand=$[$RANDOM % ''${#wallpapers[@]}]
wallpaper=''${wallpapers[$rand]} # wallpaper=''${wallpapers[$rand]}
monitor=(`hyprctl monitors | grep Monitor | awk '{print $2}'`) # monitor=(`hyprctl monitors | grep Monitor | awk '{print $2}'`)
hyprctl hyprpaper unload all # hyprctl hyprpaper unload all
hyprctl hyprpaper preload $wallpaper # hyprctl hyprpaper preload $wallpaper
for m in ''${monitor[@]}; do # for m in ''${monitor[@]}; do
hyprctl hyprpaper wallpaper "$m,$wallpaper" # hyprctl hyprpaper wallpaper "$m,$wallpaper"
done # done
''; # '';
in { in {
home.packages = [wallpaperRandomizer]; # home.packages = [wallpaperRandomizer];
services.hyprpaper = { services.hyprpaper = {
enable = true; enable = true;
@ -32,29 +32,29 @@ in {
# }; # };
}; };
systemd.user = { # systemd.user = {
services.wallpaperRandomizer = { # services.wallpaperRandomizer = {
Install = {WantedBy = ["graphical-session.target"];}; # Install = {WantedBy = ["graphical-session.target"];};
Unit = { # Unit = {
Description = "Set random desktop background using hyprpaper"; # Description = "Set random desktop background using hyprpaper";
After = ["graphical-session-pre.target"]; # After = ["graphical-session-pre.target"];
PartOf = ["graphical-session.target"]; # PartOf = ["graphical-session.target"];
}; # };
Service = { # Service = {
Type = "oneshot"; # Type = "oneshot";
ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer"; # ExecStart = "${wallpaperRandomizer}/bin/wallpaperRandomizer";
IOSchedulingClass = "idle"; # IOSchedulingClass = "idle";
}; # };
}; # };
timers.wallpaperRandomizer = { # timers.wallpaperRandomizer = {
Unit = {Description = "Set random desktop background using hyprpaper on an interval";}; # Unit = {Description = "Set random desktop background using hyprpaper on an interval";};
Timer = {OnUnitActiveSec = "6h";}; # Timer = {OnUnitActiveSec = "6h";};
Install = {WantedBy = ["timers.target"];}; # Install = {WantedBy = ["timers.target"];};
}; # };
}; # };
} }

View File

@ -5,9 +5,13 @@
# waybar requires font-awesome # waybar requires font-awesome
home.packages = [ home.packages = [
# fira code now contains ligatures and font-awesome
nerd-fonts.fira-code
pkgs.pavucontrol pkgs.pavucontrol
# fira code now contains ligatures and font-awesome
# TODO - this only works after nixpkgs 25.05
# nerd-fonts.fira-code
(pkgs.nerdfonts.override { fonts = [ "FiraCode" ]; })
pkgs.fira-code
]; ];
# enable waybar # enable waybar
@ -47,23 +51,18 @@
"battery" "battery"
"backlight" "backlight"
"tray" "tray"
"idle_inhibitor"
]; ];
# module specific settings # module specific settings
"hyprland/workspaces" = { "hyprland/workspaces" = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
active = ""; active = "";
default = ""; default = "";
empty = "";
}; };
}; };
"custom/notification" = {
tooltip = false;
format = "";
on-click = "swaync-client -t -sw";
escape = true;
};
"clock" = { "clock" = {
format = "{:%H:%M}"; format = "{:%H:%M}";
interval = 1; interval = 1;
@ -75,15 +74,15 @@
}; };
}; };
# "network" = { "idle_inhibitor" = {
# "format-wifi" = ""; format = "{icon}";
# "format-ethernet" =""; format-icons = {
# "format-disconnected" = ""; activated = "";
# "tooltip-format-disconnected" = "Error"; deactivated = "";
# "tooltip-format-wifi" = "{essid} ({signalStrength}%) "; };
# "tooltip-format-ethernet" = "{ifname} 🖧 "; tooltip = "true";
# "on-click" = "kitty nmtui"; };
# };
"bluetooth" = { "bluetooth" = {
format-on = "󰂯"; format-on = "󰂯";
format-off = "BT-off"; format-off = "BT-off";
@ -110,28 +109,50 @@
}; };
"pulseaudio" = { "pulseaudio" = {
reverse-scrolling = 1; format = "{icon} {volume}% {format_source}";
format = "{volume}% {icon} {format_source}";
format-bluetooth = "{volume}% {icon} {format_source}"; format-bluetooth = "{volume}% {icon} {format_source}";
format-bluetooth-muted = " {icon} {format_source}"; format-bluetooth-muted = " {icon} {format_source}";
format-muted = " {format_source}"; format-muted = " {format_source}";
format-source = "{volume}% "; format-source = " {volume}%";
format-source-muted = ""; format-source-muted = "";
format-icons = { format-icons = {
headphone = ""; headphone = "";
hands-free = ""; hands-free = "";
headset = ""; headset = "";
phone = ""; phone = "";
portable = ""; portable = "";
car = ""; default = [
default = ["" "奔" ""]; ""
""
""
];
}; };
on-click = "pavucontrol"; on-click = "sleep 0.1 && pavucontrol";
min-length = 13;
}; };
"tray" = { "tray" = {
spacing = 5; spacing = 5;
}; };
"custom/notification" = {
tooltip = false;
format = "{icon} {}";
format-icons = {
notification = "<span foreground='red'><sup></sup></span>";
none = "";
dnd-notification = "<span foreground='red'><sup></sup></span>";
dnd-none = "";
inhibited-notification = "<span foreground='red'><sup></sup></span>";
inhibited-none = "";
dnd-inhibited-notification = "<span foreground='red'><sup></sup></span>";
dnd-inhibited-none = "";
};
return-type = "json";
exec-if = "which swaync-client";
exec = "swaync-client -swb";
on-click = "sleep 0.1 && task-waybar";
escape = true;
};
}; };
}; };
@ -152,6 +173,11 @@
opacity: 0.2; opacity: 0.2;
} }
.module {
color: #ffffff;
border: none;
}
#workspaces { #workspaces {
margin-right: 8px; margin-right: 8px;
border-radius: 10px; border-radius: 10px;
@ -172,56 +198,10 @@
font-size: 12px; font-size: 12px;
} }
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
#workspaces button:hover {
transition: none;
box-shadow: inherit;
text-shadow: inherit;
border-radius: inherit;
color: #383c4a;
background: #7c818c;
}
#workspaces button.focused { #workspaces button.focused {
color: white; color: white;
} }
#language {
padding-left: 16px;
padding-right: 8px;
border-radius: 10px 0px 0px 10px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#keyboard-state {
margin-right: 8px;
padding-right: 16px;
border-radius: 0px 10px 10px 0px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#custom-pacman {
padding-left: 16px;
padding-right: 8px;
border-radius: 10px 0px 0px 10px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#custom-mail {
margin-right: 8px;
padding-right: 16px;
border-radius: 0px 10px 10px 0px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#mode { #mode {
padding-left: 16px; padding-left: 16px;
padding-right: 16px; padding-right: 16px;
@ -240,14 +220,6 @@
background: #383c4a; background: #383c4a;
} }
#custom-weather {
padding-right: 16px;
border-radius: 0px 10px 10px 0px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#pulseaudio { #pulseaudio {
margin-right: 8px; margin-right: 8px;
padding-left: 16px; padding-left: 16px;
@ -263,29 +235,7 @@
color: #2a5c45; color: #2a5c45;
} }
#custom-mem {
margin-right: 8px;
padding-left: 16px;
padding-right: 16px;
border-radius: 10px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#temperature {
margin-right: 8px;
padding-left: 16px;
padding-right: 16px;
border-radius: 10px;
transition: none;
color: #ffffff;
background: #383c4a;
}
#temperature.critical {
background-color: #eb4d4b;
}
#backlight { #backlight {
margin-right: 8px; margin-right: 8px;

View File

@ -4,7 +4,7 @@
xdg.portal = { xdg.portal = {
enable = true; enable = true;
configPackages [ pkgs.hyprland ]; configPackages = [ pkgs.hyprland ];
extraPortals = [ extraPortals = [
pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gtk
@ -17,7 +17,7 @@
createDirectories = true; createDirectories = true;
desktop = "Desktop"; desktop = "Desktop";
documents = "Documents"; documents = "Documents";
downloads = "Downloads"; # downloads = "Downloads";
pictures = "Pictures"; pictures = "Pictures";
}; };
} }

3
modules/nixos/flakes.nix Normal file
View File

@ -0,0 +1,3 @@
{
nix.settings.experimental-features = [ "nix-command" "flakes" ];
}

View File

@ -1,8 +1,8 @@
{ {
config, config,
lib, lib,
pkgs, pkgs,
... ...
}: }:
{ {
@ -29,14 +29,7 @@
intelBusId = "PCI:0:2:0"; intelBusId = "PCI:0:2:0";
}; };
package = config.boot.kernelPackages.nvidiaPackages.mkDriver { package = config.boot.kernelPackages.nvidiaPackages.beta;
version = "565.77";
sha256_64bit = "sha256-CnqnQsRrzzTXZpgkAtF7PbH9s7wbiTRNcM0SPByzFHw=";
sha256_aarch64 = "sha256-LSAYUnhfnK3rcuPe1dixOwAujSof19kNOfdRHE7bToE=";
openSha256 = "sha256-Fxo0t61KQDs71YA8u7arY+503wkAc1foaa51vi2Pl5I=";
settingsSha256 = "sha256-VUetj3LlOSz/LB+DDfMCN34uA4bNTTpjDrb6C6Iwukk=";
persistencedSha256 = "sha256-wnDjC099D8d9NJSp9D0CbsL+vfHXyJFYYgU3CwcqKww=";
};
}; };
# overwrite the blacklists set previously # overwrite the blacklists set previously
boot.extraModprobeConfig = ""; boot.extraModprobeConfig = "";
@ -65,31 +58,9 @@
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", ATTR{power/control}="auto", ATTR{remove}="1" ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x10de", ATTR{class}=="0x030000", ATTR{power/control}="auto", ATTR{remove}="1"
''; '';
# # Remove the whole bridge responsible for the VGA/3D controller # # Remove the whole bridge responsible for the VGA/3D controller
# ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{class}=="0x060400", ATTR{power/control}="auto", ATTR{remove}="1" # ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", ATTR{class}=="0x060400", ATTR{power/control}="auto", ATTR{remove}="1"
# # somehow the udev rules are not enough to prevent the nouveau driver from loading
# # Also unload remove the bus by id manually
# # unload 0000:01:00.1 and 0000:01:00.0
# # at boot echo 1 > /sys/bus/pci/devices/0000:01:00.1/remove
# # at boot echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove
# systemd.services.remove-nouveau = {
# description = "Remove Nouveau PCI devices";
# wantedBy = [ "multi-user.target" ];
# after = [ "sysinit.target" ];
# serviceConfig = {
# Type = "oneshot";
# ExecStart = "${pkgs.coreutils}/bin/echo 1 > /sys/bus/pci/devices/0000:01:00.1/remove";
# ExecStart = "${pkgs.coreutils}/bin/echo auto > /sys/bus/pci/devices/0000:00:01.0/power/control";
# ExecStart = "${pkgs.coreutils}/bin/echo 1 > /sys/bus/pci/devices/0000:01:00.0/remove";
# ExecStart = "${pkgs.coreutils}/bin/echo auto > /sys/bus/pci/devices/0000:00:01.0/power/control";
# };
# };
boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidia_drm" "nvidia_modeset" ]; boot.blacklistedKernelModules = [ "nouveau" "nvidia" "nvidia_drm" "nvidia_modeset" ];
} }

30
modules/nixos/power.nix Normal file
View File

@ -0,0 +1,30 @@
{
config,
lib,
pkgs,
...
}:
{
services.tlp = {
enable = true;
settings = {
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "power";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 50;
};
};
systemd.sleep.extraConfig = ''
AllowSuspend=yes
AllowHibernation=yes
AllowHybridSleep=yes
AllowSuspendThenHibernate=yes
'';
}