simplified namespace cause I dont wanna type that much and introduce colored man pages

This commit is contained in:
Christoph Hollizeck 2024-09-13 02:05:40 +02:00
parent fdbb3a8f3b
commit 70fdb9173a
Signed by: Daholli
GPG key ID: 249300664F2AF2C7
15 changed files with 54 additions and 126 deletions

View file

@ -0,0 +1,134 @@
/*Dracula theme based on the Purple official rofi theme*/
/* https://github.com/dracula/rofi/tree/main */
configuration {
show-icons: true;
display-drun: "";
disable-history: false;
}
* {
font: "Jetbrains Mono 12";
foreground: #f8f8f2;
background-color: #282a36;
active-background: #6272a4;
urgent-background: #ff5555;
urgent-foreground: #282a36;
selected-background: @active-background;
selected-urgent-background: @urgent-background;
selected-active-background: @active-background;
separatorcolor: @active-background;
bordercolor: @active-background;
}
#window {
background-color: @background-color;
border: 3;
border-radius: 6;
border-color: @bordercolor;
padding: 15;
}
#mainbox {
border: 0;
padding: 0;
}
#message {
border: 0px;
border-color: @separatorcolor;
padding: 1px;
}
#textbox {
text-color: @foreground;
}
#listview {
fixed-height: 0;
border: 0px;
border-color: @bordercolor;
spacing: 2px ;
scrollbar: false;
padding: 2px 0px 0px ;
}
#element {
border: 0;
padding: 3px ;
}
#element.normal.normal {
background-color: @background-color;
text-color: @foreground;
}
#element.normal.urgent {
background-color: @urgent-background;
text-color: @urgent-foreground;
}
#element.normal.active {
background-color: @active-background;
text-color: @foreground;
}
#element.selected.normal {
background-color: @selected-background;
text-color: @foreground;
}
#element.selected.urgent {
background-color: @selected-urgent-background;
text-color: @foreground;
}
#element.selected.active {
background-color: @selected-active-background;
text-color: @foreground;
}
#element.alternate.normal {
background-color: @background-color;
text-color: @foreground;
}
#element.alternate.urgent {
background-color: @urgent-background;
text-color: @foreground;
}
#element.alternate.active {
background-color: @active-background;
text-color: @foreground;
}
#scrollbar {
width: 2px ;
border: 0;
handle-width: 8px ;
padding: 0;
}
#sidebar {
border: 2px dash 0px 0px ;
border-color: @separatorcolor;
}
#button.selected {
background-color: @selected-background;
text-color: @foreground;
}
#inputbar {
spacing: 0;
text-color: @foreground;
padding: 1px ;
}
#case-indicator {
spacing: 0;
text-color: @foreground;
}
#entry {
spacing: 0;
text-color: @foreground;
}
#prompt {
spacing: 0;
text-color: @foreground;
}
#inputbar {
children: [ prompt,textbox-prompt-colon,entry,case-indicator ];
}
#textbox-prompt-colon {
expand: false;
str: ">";
margin: 0px 0.3em 0em 0em ;
text-color: @foreground;
}
element-text, element-icon {
background-color: inherit;
text-color: inherit;
}

View file

@ -0,0 +1,35 @@
{
config,
namespace,
options,
pkgs,
lib,
...
}:
let
cfg = config.${namespace}.desktop.addons.rofi;
inherit (lib)
mkIf
mkEnableOption
mkOption
types
;
in
{
options.${namespace}.desktop.addons.rofi = {
enable = mkEnableOption "Rofi";
package = mkOption {
type = types.package;
default = pkgs.rofi;
description = "The package to use for Rofi";
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
wyrdgard.home.file = {
".config/rofi/config.rasi".source = ./config.rasi;
};
};
}

View file

@ -0,0 +1,39 @@
{
"height": 24, // Waybar height (to be removed for auto height)
"modules-left": ["hyprland/workspaces"],
"modules-center": ["hyprland/window"],
"modules-right": ["tray", "idle_inhibitor", "pulseaudio", "clock"],
"hyprland/window": {
"separate-outputs": true
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
}
},
"tray": {
// "icon-size": 21,
"spacing": 10
},
"clock": {
"timezone": "Europe/Berlin",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format": "{:L%Y-%m-%d<small> [%a] </small>%H:%M}"
},
"pulseaudio": {
"scroll-step": 5, // %, can be a float
"format": "{icon} {volume}% {format_source}",
"format-bluetooth": " {icon} {volume}% {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": "{format_source}",
"format-source": " {volume}%",
"format-source-muted": "",
"format-icons": {
"default": ["", "", ""]
},
"on-click": "pavucontrol",
"on-click-right": "foot -a pw-top pw-top"
},
}

View file

@ -0,0 +1,37 @@
{
lib,
config,
options,
pkgs,
namespace,
...
}:
let
cfg = config.${namespace}.desktop.addons.waybar;
inherit (lib)
mkEnableOption
mkOption
mkIf
types
;
in
{
options.${namespace}.desktop.addons.waybar = {
enable = mkEnableOption "Waybar";
package = mkOption {
type = types.package;
default = pkgs.waybar;
description = "The package to use for Waybar";
};
};
config = mkIf cfg.enable {
environment.systemPackages = [ cfg.package ];
wyrdgard.home.file = {
".config/waybar/config".source = ./config;
".config/waybar/style.css".source = ./style.css;
};
};
}

View file

@ -0,0 +1,182 @@
window#waybar {
background: transparent;
/* background-color: rgba(43, 48, 59, 0.5); */
/* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}
window#waybar.hidden {
opacity: 0.2;
}
#waybar.empty #window {
background-color: transparent;
}
#workspaces {
}
#window {
margin: 2px;
padding-left: 8px;
padding-right: 8px;
background-color: rgba(0,0,0,0.3);
font-size:14px;
font-weight: bold;
}
button {
/* Use box-shadow instead of border so the text isn't offset */
box-shadow: inset 0 -3px transparent;
/* Avoid rounded borders under each button name */
border: none;
border-radius: 0;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
button:hover {
background: inherit;
border-top: 2px solid #c9545d;
}
#workspaces button {
padding: 0 4px;
/* background-color: rgba(0,0,0,0.3); */
}
#workspaces button:hover {
}
#workspaces button.focused {
/* box-shadow: inset 0 -2px #c9545d; */
background-color: rgba(0,0,0,0.3);
color:#c9545d;
border-top: 2px solid #c9545d;
}
#workspaces button.urgent {
background-color: #eb4d4b;
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#scratchpad,
#mpd {
margin: 2px;
padding-left: 4px;
padding-right: 4px;
background-color: rgba(0,0,0,0.3);
color: #ffffff;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left > widget:first-child > #workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right > widget:last-child > #workspaces {
margin-right: 0;
}
#clock {
font-size:14px;
font-weight: bold;
}
#battery icon {
color: red;
}
#battery.charging, #battery.plugged {
color: #ffffff;
background-color: #26A65B;
}
@keyframes blink {
to {
background-color: #ffffff;
color: #000000;
}
}
#battery.warning:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.critical:not(.charging) {
background-color: #f53c3c;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: #000000;
}
#network.disconnected {
background-color: #f53c3c;
}
#temperature.critical {
background-color: #eb4d4b;
}
#idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
}
#tray > .passive {
-gtk-icon-effect: dim;
}
#tray > .needs-attention {
-gtk-icon-effect: highlight;
background-color: #eb4d4b;
}
/*
window#waybar.solo {
background-color: #FFFFFF;
}
window#waybar.termite {
background-color: #3F3F3F;
}
window#waybar.chromium {
background-color: #000000;
border: none;
}
*/

View file

@ -0,0 +1,290 @@
{
config,
inputs,
lib,
pkgs,
system,
namespace,
...
}:
with lib.wyrdgard;
let
inherit (lib)
mkIf
mkEnableOption
mkOption
mkMerge
types
;
cfg = config.${namespace}.desktop.hyprland;
cachix-url = "https://hyprland.cachix.org";
cachix-key = "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=";
hyprland-package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
focus-1password = pkgs.writeShellScriptBin "focus-or-open-1pass" ''
running=$(hyprctl -j clients | jq -r '.[] | select(.class == "1password") | .workspace.id')
if [[ $running != "" ]]; then
hyprctl dispatch workspace $running
else
# always open on w/space 4
hyprctl dispatch workspace 4
1password&
fi
'';
in
{
options.${namespace}.desktop.hyprland = {
enable = mkEnableOption "Whether to enable hyprland";
settings = mkOption {
type = types.attrs;
default = { };
description = "Additional Hyprland settings to apply.";
};
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
polkit-kde-agent
wl-clipboard
wl-screenrec
wlr-randr
grimblast
xfce.thunar
dunst
elegant-sddm
jq
focus-1password
];
programs = {
hyprland = {
enable = true;
package = hyprland-package;
portalPackage =
inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
};
services = {
xserver = enabled;
displayManager.sddm = {
enable = true;
theme = "Elegant";
};
};
wyrdgard = {
desktop.addons = {
waybar = enabled;
rofi = {
enable = true;
package = pkgs.rofi-wayland-unwrapped;
};
};
nix.extra-substituters.${cachix-url} = {
key = cachix-key;
};
home.extraOptions = {
wayland.windowManager.hyprland = {
enable = true;
package = hyprland-package;
plugins = [ inputs.hy3.packages.${system}.hy3 ];
settings = mkMerge [
{
"$mod" = "SUPER";
exec-once = [
"waybar"
"dunst"
"systemctl --user start plasma-polkit-agent"
"[workspace 3 silent] steam"
"[workspace 2 silent] discord"
"[workspace 2 silent] noisetorch -i"
"[workspace 4 silent] 1password"
"[workspace 1 silent] zen"
];
windowrulev2 = [
#stean is a bit wierd, since it opens in multiple phases, so just move the last window to the workspace
"workspace 3 silent, class:^(steam)$, title:^(Steam)"
];
general = {
layout = "hy3";
gaps_in = 5;
gaps_out = 5;
border_size = 1;
"col.active_border" = "rgba(88888888)";
"col.inactive_border" = "rgba(00000088)";
allow_tearing = true;
resize_on_border = true;
};
misc = {
# hyprchan
force_default_wallpaper = 2;
# focus new windows that want to be focused
focus_on_activate = true;
};
decoration = {
rounding = 16;
blur = {
enabled = true;
brightness = 1.0;
contrast = 1.0;
noise = 1.0e-2;
vibrancy = 0.2;
vibrancy_darkness = 0.5;
passes = 4;
size = 7;
popups = true;
popups_ignorealpha = 0.2;
};
drop_shadow = true;
shadow_ignore_window = true;
shadow_offset = "0 15";
shadow_range = 100;
shadow_render_power = 2;
shadow_scale = 0.97;
"col.shadow" = "rgba(00000055)";
};
animations = {
enabled = true;
animation = [
"border, 1, 2, default"
"fade, 1, 4, default"
"windows, 1, 3, default, popin 80%"
"workspaces, 1, 2, default, slide"
];
};
bind =
[
# compositor commands
"$mod SHIFT, R, exec, hyprctl reload"
"$mod SHIFT, Q, killactive,"
"$mod SHIFT, E, exec, pkill Hyprland"
"$mod, F, fullscreen,"
"$mod, G, togglegroup,"
"$mod SHIFT, N, changegroupactive, f"
"$mod SHIFT, P, changegroupactive, b"
"$mod, R, togglesplit,"
"$mod, T, togglefloating,"
"$mod, P, pseudo,"
"$mod ALT, ,resizeactive,"
"$mod CTRL, left, movecurrentworkspacetomonitor, l"
"$mod CTRL, right, movecurrentworkspacetomonitor, r"
# move focus
"$mod, h, hy3:movefocus, l"
"$mod, j, hy3:movefocus, d"
"$mod, k, hy3:movefocus, u"
"$mod, l, hy3:movefocus, r"
"$mod, left, hy3:movefocus, l"
"$mod, down, hy3:movefocus, d"
"$mod, up, hy3:movefocus, u"
"$mod, right, hy3:movefocus, r"
# move focus
"$mod SHIFT, h, hy3:movewindow, l, once"
"$mod SHIFT, j, hy3:movewindow, d, once"
"$mod SHIFT, k, hy3:movewindow, u, once"
"$mod SHIFT, l, hy3:movewindow, r, once"
"$mod SHIFT, left, hy3:movewindow, l, once"
"$mod SHIFT, down, hy3:movewindow, d, once"
"$mod SHIFT, up, hy3:movewindow, u, once"
"$mod SHIFT, right, hy3:movewindow, r, once"
#run important programs
"$mod, Return, exec, kitty"
"$mod, Z, exec, zen"
"$mod, D, exec, rofi -show drun"
"$mod, P, exec, focus-or-open-1pass"
# "$mod, D, exec, rofi -show combi"
#screenshot
", Print, exec, grimblast copy area"
]
++ (
# workspaces
# binds $mod + [shift +] {1..9} to [move to] workspace {1..9}
builtins.concatLists (
builtins.genList (
i:
let
ws = i + 1;
in
[
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, hy3:movetoworkspace, ${toString ws}"
]
) 9
)
);
# mouse movements
bindm = [
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
bindl = [
# volume
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
", XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"
];
bindle = [
# volume
", XF86AudioRaiseVolume, exec, wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%+"
", XF86AudioLowerVolume, exec, wpctl set-volume -l '1.0' @DEFAULT_AUDIO_SINK@ 6%-"
];
input = {
kb_layout = "us";
# focus change on cursor move
follow_mouse = 2;
accel_profile = "flat";
};
plugin = {
hy3 = {
autotile = {
enable = true;
trigger_width = 800;
trigger_height = 500;
};
};
};
}
cfg.settings
];
};
};
};
environment.sessionVariables.NIXOS_OZONE_WL = "1";
};
}

View file

@ -0,0 +1,29 @@
{
config,
lib,
namespace,
pkgs,
...
}:
with lib;
with lib.wyrdgard;
let
cfg = config.${namespace}.desktop.kde;
in
{
options.${namespace}.desktop.kde = with types; {
enable = mkEnableOption "Whether to enable a kde plasma6";
};
config = mkIf cfg.enable {
environment.systemPackages = with pkgs; [
xdg-utils
kdePackages.qtbase
];
services = {
xserver = enabled;
desktopManager.plasma6 = enabled;
};
};
}