dend: wip home
@@ -41,7 +41,9 @@
|
||||
flake-parts.lib.mkFlake {inherit inputs;} {
|
||||
systems = ["x86_64-linux"];
|
||||
imports = [
|
||||
inputs.home-manager.flakeModules.home-manager
|
||||
./hosts/comfy-station
|
||||
(./home + "/jonas@comfy-station")
|
||||
(import-tree ./modules)
|
||||
];
|
||||
};
|
||||
|
||||
131
home/jonas@comfy-station/borg.nix
Normal file
@@ -0,0 +1,131 @@
|
||||
{config, ...}: let
|
||||
defaultChecks = [
|
||||
{
|
||||
name = "repository";
|
||||
frequency = "2 weeks";
|
||||
}
|
||||
{
|
||||
name = "archives";
|
||||
frequency = "4 weeks";
|
||||
}
|
||||
{
|
||||
name = "data";
|
||||
frequency = "6 weeks";
|
||||
}
|
||||
{
|
||||
name = "extract";
|
||||
frequency = "6 weeks";
|
||||
}
|
||||
];
|
||||
passwordFile = "${config.home.homeDirectory}/.config/borg/password";
|
||||
encCmd = ''cat ${passwordFile}'';
|
||||
repo = "ssh://borg.jroeger.de/./comfy-station";
|
||||
in {
|
||||
sops.secrets = {
|
||||
"borg/password" = {
|
||||
sopsFile = ../../secrets/jonas/borg.yaml;
|
||||
key = "password";
|
||||
path = passwordFile;
|
||||
};
|
||||
};
|
||||
|
||||
services.borgmatic.enable = true;
|
||||
services.borgmatic.frequency = "hourly";
|
||||
|
||||
programs.borgmatic.enable = true;
|
||||
programs.borgmatic.backups = {
|
||||
workspaces = {
|
||||
location = {
|
||||
sourceDirectories = ["${config.xdg.userDirs.extraConfig.XDG_WORKSPACES_DIR}"];
|
||||
repositories = [repo];
|
||||
excludeHomeManagerSymlinks = true;
|
||||
extraConfig = {
|
||||
archive_name_format = "{hostname}-workspaces-{now}";
|
||||
exclude_patterns = [
|
||||
"*/.venv"
|
||||
"__pycache__"
|
||||
];
|
||||
};
|
||||
};
|
||||
retention = {
|
||||
keepDaily = 7;
|
||||
keepHourly = 12;
|
||||
keepWeekly = 4;
|
||||
keepMonthly = 6;
|
||||
};
|
||||
storage = {
|
||||
encryptionPasscommand = encCmd;
|
||||
};
|
||||
consistency.checks = defaultChecks;
|
||||
};
|
||||
media = {
|
||||
location = {
|
||||
sourceDirectories = [
|
||||
"${config.xdg.userDirs.documents}"
|
||||
"${config.xdg.userDirs.music}"
|
||||
"${config.home.homeDirectory}/org"
|
||||
"${config.home.homeDirectory}/Obsidian"
|
||||
"${config.home.homeDirectory}/Zotero"
|
||||
];
|
||||
repositories = [repo];
|
||||
excludeHomeManagerSymlinks = true;
|
||||
extraConfig = {
|
||||
archive_name_format = "{hostname}-media-{now}";
|
||||
};
|
||||
};
|
||||
retention = {
|
||||
keepDaily = 7;
|
||||
keepWeekly = 2;
|
||||
keepMonthly = 6;
|
||||
};
|
||||
storage = {
|
||||
encryptionPasscommand = encCmd;
|
||||
};
|
||||
consistency.checks = defaultChecks;
|
||||
};
|
||||
sec = {
|
||||
location = {
|
||||
sourceDirectories = [
|
||||
"${config.xdg.configHome}/sops"
|
||||
"${config.home.homeDirectory}/Stuff/sec"
|
||||
"${config.home.homeDirectory}/.password-store"
|
||||
];
|
||||
repositories = [repo];
|
||||
excludeHomeManagerSymlinks = true;
|
||||
extraConfig = {
|
||||
archive_name_format = "{hostname}-sec-{now}";
|
||||
};
|
||||
};
|
||||
retention = {
|
||||
keepDaily = 7;
|
||||
keepWeekly = 2;
|
||||
keepMonthly = 6;
|
||||
};
|
||||
storage = {
|
||||
encryptionPasscommand = encCmd;
|
||||
};
|
||||
consistency.checks = defaultChecks;
|
||||
};
|
||||
var = {
|
||||
location = {
|
||||
sourceDirectories = [
|
||||
"${config.xdg.userDirs.desktop}"
|
||||
];
|
||||
repositories = [repo];
|
||||
excludeHomeManagerSymlinks = true;
|
||||
extraConfig = {
|
||||
archive_name_format = "{hostname}-var-{now}";
|
||||
};
|
||||
};
|
||||
retention = {
|
||||
keepDaily = 7;
|
||||
keepWeekly = 2;
|
||||
keepMonthly = 6;
|
||||
};
|
||||
storage = {
|
||||
encryptionPasscommand = encCmd;
|
||||
};
|
||||
consistency.checks = defaultChecks;
|
||||
};
|
||||
};
|
||||
}
|
||||
101
home/jonas@comfy-station/configuration.nix
Normal file
@@ -0,0 +1,101 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./borg.nix
|
||||
];
|
||||
|
||||
# Home Manager needs a bit of information about you and the paths it should
|
||||
# manage.
|
||||
home.username = "jonas";
|
||||
home.homeDirectory = "/home/jonas";
|
||||
|
||||
sops = {
|
||||
age.keyFile = "${config.home.homeDirectory}/.config/sops/age/keys.txt";
|
||||
};
|
||||
|
||||
# hive modules
|
||||
#hive.waybar.enable = true;
|
||||
#hive.wlogout.enable = true;
|
||||
#hive.wofi.enable = true;
|
||||
#hive.kitty.enable = true;
|
||||
#hive.nextcloud.enable = true;
|
||||
#hive.firefox = {
|
||||
# enable = true;
|
||||
# plasmaIntegration = true;
|
||||
# passFF = true;
|
||||
#};
|
||||
#hive.kdeconnect.enable = true;
|
||||
#hive.ranger.enable = true;
|
||||
#hive.ssh = {
|
||||
# enable = true;
|
||||
# sopsFile = ../secrets/jonas/ssh.yaml;
|
||||
# keys = ["borg" "passgit"];
|
||||
#};
|
||||
#hive.yubikey.enable = true;
|
||||
#hive.yubikey.withCCID = false;
|
||||
#hive.zsh.enable = true;
|
||||
#hive.nix-scripts.enable = true;
|
||||
#hive.doom.enable = true;
|
||||
#hive.doom.asDefaultEditor = true;
|
||||
#hive.doom.enableCopilot = true;
|
||||
#hive.doom.withNixPkgs = true;
|
||||
#hive.doom.withShellPkgs = true;
|
||||
#hive.doom.withPythonPkgs = true;
|
||||
#hive.jj.enable = true;
|
||||
|
||||
# Make session variables available in systemd units
|
||||
# SEE: https://github.com/nix-community/home-manager/pull/5543
|
||||
# systemd.user.settings.Manager.DefaultEnvironment =
|
||||
# lib.mapAttrs (_: lib.mkDefault) config.home.sessionVariables;
|
||||
|
||||
xdg.mimeApps = {
|
||||
enable = true;
|
||||
|
||||
defaultApplications = {
|
||||
"text/html" = "firefox.desktop";
|
||||
"x-scheme-handler/http" = "firefox.desktop";
|
||||
"x-scheme-handler/https" = "firefox.desktop";
|
||||
"x-scheme-handler/about" = "firefox.desktop";
|
||||
"x-scheme-handler/unknown" = "firefox.desktop";
|
||||
};
|
||||
};
|
||||
xdg.userDirs.enable = true;
|
||||
xdg.userDirs.createDirectories = true;
|
||||
xdg.userDirs.extraConfig = {
|
||||
XDG_WORKSPACES_DIR = "${config.home.homeDirectory}/Workspaces";
|
||||
XDG_NEXTCLOUD_DIR = "${config.home.homeDirectory}/Nextcloud";
|
||||
XDG_NOTES_DIR = "${config.home.homeDirectory}/Notes";
|
||||
};
|
||||
|
||||
# This value determines the Home Manager release that your configuration is
|
||||
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||
# introduces backwards incompatible changes.
|
||||
#
|
||||
# You should not change this value, even if you update Home Manager. If you do
|
||||
# want to update the value, then make sure to first check the Home Manager
|
||||
# release notes.
|
||||
home.stateVersion = "24.11"; # Please read the comment before changing.
|
||||
|
||||
home.sessionVariables = {
|
||||
EDITOR = lib.mkDefault "vim";
|
||||
};
|
||||
|
||||
# Let Home Manager install and manage itself.
|
||||
programs.home-manager.enable = true;
|
||||
|
||||
# Git
|
||||
programs.difftastic.enable = true;
|
||||
programs.difftastic.git.enable = true;
|
||||
programs.git = {
|
||||
enable = true;
|
||||
settings.user.name = "Jonas Röger";
|
||||
settings.user.email = "jonas.roeger@tu-dortmund.de";
|
||||
signing = {
|
||||
signByDefault = true;
|
||||
key = "4000EB35E1AE0F07";
|
||||
};
|
||||
};
|
||||
}
|
||||
21
home/jonas@comfy-station/default.nix
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
self,
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
flake.homeConfigurations."jonas@comfy-station" = inputs.home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import inputs.nixpkgs {system = "x86_64-linux";};
|
||||
modules = [
|
||||
({...}: {nixpkgs.overlays = [self.overlays.unstable inputs.audio.overlays.default];})
|
||||
({...}: {nixpkgs.config.allowUnfree = true;})
|
||||
|
||||
./configuration.nix
|
||||
|
||||
inputs.sops-nix.homeManagerModules.sops
|
||||
self.homeModules.layan
|
||||
self.homeModules.hyprland
|
||||
self.homeModules.swaync
|
||||
self.homeModules.waybar
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -7,7 +7,6 @@
|
||||
modules = [
|
||||
({...}: {
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
nixpkgs.overlays = [self.overlays.unstable self.overlays.bulk-transcode];
|
||||
})
|
||||
|
||||
./configuration.nix
|
||||
@@ -25,6 +24,8 @@
|
||||
self.nixosModules.games
|
||||
self.nixosModules.creative
|
||||
self.nixosModules.openhantek
|
||||
self.nixosModules.unstable-overlay
|
||||
self.nixosModules.bulk-transcode-overlay
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -53,4 +53,380 @@
|
||||
security.pam.services.hyprlock = {};
|
||||
};
|
||||
};
|
||||
|
||||
flake.homeModules.hyprland = {pkgs, ...}: let
|
||||
screenshot = pkgs.writeShellScriptBin "screenshot" ''
|
||||
region=0
|
||||
clip=0
|
||||
while [[ "$#" -gt 0 ]]; do
|
||||
case $1 in
|
||||
--region) region=1; ;;
|
||||
--clip) clip=1; ;;
|
||||
*) echo "Unknown parameter passed: $1"; exit 1 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [[ $region -eq 1 ]]; then
|
||||
if [[ $clip -eq 1 ]]; then
|
||||
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" - | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||
else
|
||||
${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
|
||||
fi
|
||||
else
|
||||
if [[ $clip -eq 1 ]]; then
|
||||
${pkgs.grim}/bin/grim - | ${pkgs.wl-clipboard}/bin/wl-copy
|
||||
else
|
||||
${pkgs.grim}/bin/grim ~/Pictures/Screenshots/$(${pkgs.coreutils}/bin/date +'%Y-%m-%d_%H-%M-%S').png
|
||||
fi
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
systemd.enable = false;
|
||||
systemd.variables = ["--all"];
|
||||
xwayland.enable = true;
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
wl-clipboard
|
||||
];
|
||||
|
||||
services.wpaperd = {
|
||||
enable = true;
|
||||
settings = {
|
||||
default = {
|
||||
path = ../../static/wallpaper/stones.jpg;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
services.hypridle.enable = true;
|
||||
services.hypridle.settings = {
|
||||
general = {
|
||||
# lock_cmd = notify-send "lock!" # dbus/sysd lock command (loginctl lock-session)
|
||||
# unlock_cmd = notify-send "unlock!" # same as above, but unlock
|
||||
ignore_dbus_inhibit = "false"; # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
|
||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
||||
before_sleep_cmd = "loginctl lock-session"; # lock before suspend.
|
||||
after_sleep_cmd = "hyprctl dispatch dpms on"; # to avoid having to press a key twice to turn on the display.
|
||||
};
|
||||
|
||||
listener = [
|
||||
# Screenlock
|
||||
{
|
||||
timeout = 180; # in seconds
|
||||
on-timeout = "hyprlock"; # command to run when timeout has passed
|
||||
# on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
|
||||
}
|
||||
# Suspend
|
||||
{
|
||||
timeout = 360; # in seconds
|
||||
on-timeout = "systemctl suspend"; # command to run when timeout has passed
|
||||
# on-resume = notify-send "Welcome back to your desktop!" # command to run when activity is detected after timeout has fired.
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
programs.hyprlock = {
|
||||
enable = true;
|
||||
settings = {
|
||||
background = [
|
||||
{
|
||||
path = "screenshot"; # only png supported for now
|
||||
# color = $color1
|
||||
|
||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
||||
blur_size = 4;
|
||||
blur_passes = 3; # 0 disables blurring
|
||||
noise = 0.0117;
|
||||
contrast = 1.3000; # Vibrant!!!
|
||||
brightness = 0.8000;
|
||||
vibrancy = 0.2100;
|
||||
vibrancy_darkness = 0.0;
|
||||
}
|
||||
];
|
||||
|
||||
# Hours
|
||||
label = [
|
||||
{
|
||||
text = ''cmd[update:1000] echo "<b><big> $(date +"%H") </big></b>"'';
|
||||
#color = $color6
|
||||
font_size = 112;
|
||||
# font_family = Geist Mono 10
|
||||
shadow_passes = 3;
|
||||
shadow_size = 4;
|
||||
|
||||
position = "0, 220";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
{
|
||||
text = ''cmd[update:1000] echo "<b><big> $(date +"%M") </big></b>"'';
|
||||
# color = $color6
|
||||
font_size = 112;
|
||||
# font_family = Geist Mono 10
|
||||
shadow_passes = 3;
|
||||
shadow_size = 4;
|
||||
|
||||
position = "0, 80";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
{
|
||||
text = ''cmd[update:18000000] echo "<b><big> "$(date +'%A')" </big></b>"'';
|
||||
# color = $color7
|
||||
font_size = 22;
|
||||
# font_family = JetBrainsMono Nerd Font 10
|
||||
|
||||
position = "0, -10";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
{
|
||||
text = ''cmd[update:18000000] echo "<b> "$(${pkgs.coreutils-full}/bin/date +'%d %b')" </b>"'';
|
||||
# color = $color7
|
||||
font_size = 18;
|
||||
#font_family = JetBrainsMono Nerd Font 10
|
||||
|
||||
position = "0, -40";
|
||||
halign = "center";
|
||||
valign = "center";
|
||||
}
|
||||
{
|
||||
text = ''cmd[update:18000000] echo "<b>So ca. <big> $(${pkgs.curl}/bin/curl -s 'wttr.in?format=%t' | ${pkgs.coreutils-full}/bin/tr -d '+')</big> oder watt.</b>"'';
|
||||
#color = $color7
|
||||
font_size = 18;
|
||||
# font_family = Geist Mono 10
|
||||
|
||||
position = "0, 40";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
];
|
||||
|
||||
input-field = [
|
||||
{
|
||||
size = "250, 50";
|
||||
outline_thickness = 3;
|
||||
|
||||
dots_size = 0.26; # Scale of input-field height, 0.2 - 0.8
|
||||
dots_spacing = 0.64; # Scale of dots' absolute size, 0.0 - 1.0
|
||||
dots_center = true;
|
||||
dots_rouding = -1;
|
||||
|
||||
rounding = 22;
|
||||
# outer_color = $color0
|
||||
# inner_color = $color0
|
||||
# font_color = $color6
|
||||
fade_on_empty = true;
|
||||
placeholder_text = ''<i>Password...</i>''; # Text rendered in the input box when it's empty.
|
||||
|
||||
position = "0, 120";
|
||||
halign = "center";
|
||||
valign = "bottom";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
settings = {
|
||||
exec-once = [
|
||||
"${pkgs.wpaperd}/bin/wpaperd &"
|
||||
];
|
||||
|
||||
"$mod" = "SUPER";
|
||||
bind =
|
||||
[
|
||||
"$mod, RETURN, exec, ${pkgs.kitty}/bin/kitty"
|
||||
"$mod, d, exec, ${pkgs.wofi}/bin/wofi --show drun"
|
||||
"$mod, h, movefocus, l"
|
||||
"$mod, j, movefocus, d"
|
||||
"$mod, k, movefocus, u"
|
||||
"$mod, l, movefocus, r"
|
||||
"$mod, LEFT, movefocus, l"
|
||||
"$mod, DOWN, movefocus, d"
|
||||
"$mod, UP, movefocus, u"
|
||||
"$mod, RIGHT, movefocus, r"
|
||||
"$mod SHIFT, h, movewindow, l"
|
||||
"$mod SHIFT, j, movewindow, d"
|
||||
"$mod SHIFT, k, movewindow, u"
|
||||
"$mod SHIFT, l, movewindow, r"
|
||||
"$mod SHIFT, LEFT, movewindow, l"
|
||||
"$mod SHIFT, DOWN, movewindow, d"
|
||||
"$mod SHIFT, UP, movewindow, u"
|
||||
|
||||
"$mod CTRL SHIFT, LEFT, moveactive, -10 0"
|
||||
"$mod CTRL SHIFT, DOWN, moveactive, 0 10"
|
||||
"$mod CTRL SHIFT, UP, moveactive, 0 -10"
|
||||
"$mod CTRL SHIFT, RIGHT, moveactive, 10 0"
|
||||
"$mod CTRL SHIFT, h, moveactive, -10 0"
|
||||
"$mod CTRL SHIFT, j, moveactive, 0 10"
|
||||
"$mod CTRL SHIFT, k, moveactive, 0 -10"
|
||||
"$mod CTRL SHIFT, l, moveactive, 10 0"
|
||||
"$mod SHIFT, q, killactive"
|
||||
"$mod CTRL, h, resizeactive, -5% 0%"
|
||||
"$mod CTRL, l, resizeactive, 5% 0%"
|
||||
"$mod CTRL, j, resizeactive, 0% -5%"
|
||||
"$mod CTRL, k, resizeactive, 0% 5%"
|
||||
"$mod, SPACE, togglefloating, active"
|
||||
"$mod SHIFT, SPACE, centerwindow"
|
||||
"$mod, f, fullscreen, 1"
|
||||
"$mod SHIFT, f, fullscreen, 0"
|
||||
"$mod CTRL, f, fullscreenstate, -1 2"
|
||||
"$mod SHIFT, s, pin"
|
||||
"$mod SHIFT, x, exec, ${pkgs.hyprland}/bin/hyprctl kill"
|
||||
", XF86AudioRaiseVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume +5"
|
||||
", XF86AudioLowerVolume, exec, ${pkgs.pulsemixer}/bin/pulsemixer --change-volume -5"
|
||||
", XF86AudioMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute"
|
||||
", XF86AudioMicMute, exec, ${pkgs.pulsemixer}/bin/pulsemixer --toggle-mute --id 1"
|
||||
", XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set +5%"
|
||||
", XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 5%-"
|
||||
"$mod, 9, exec, ${pkgs.hyprlock}/bin/hyprlock"
|
||||
"$mod, 0, exec, ${pkgs.wlogout}/bin/wlogout -b 5"
|
||||
"$mod, n, exec, ${pkgs.swaynotificationcenter}/bin/swaync-client -t"
|
||||
", Print, exec, ${screenshot}/bin/screenshot"
|
||||
"CTRL, Print, exec, ${screenshot}/bin/screenshot --region"
|
||||
"SHIFT, Print, exec, ${screenshot}/bin/screenshot --clip"
|
||||
"CTRL SHIFT, Print, exec, ${screenshot}/bin/screenshot --region --clip"
|
||||
]
|
||||
++ (
|
||||
# workspaces
|
||||
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
|
||||
builtins.concatLists (builtins.genList (
|
||||
x: let
|
||||
ws = builtins.toString (x + 1);
|
||||
in [
|
||||
"$mod, ${ws}, workspace, ${ws}"
|
||||
"$mod SHIFT, ${ws}, movetoworkspace, ${ws}"
|
||||
"$mod CTRL, ${ws}, movetoworkspacesilent, ${ws}"
|
||||
]
|
||||
)
|
||||
8)
|
||||
);
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor = ",preferred,auto,1";
|
||||
env = [
|
||||
"GDK_SCALE,1"
|
||||
"XCURSOR_SIZE,12"
|
||||
];
|
||||
|
||||
xwayland = {
|
||||
force_zero_scaling = true;
|
||||
};
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
|
||||
|
||||
# Execute your favorite apps at launch
|
||||
# exec-once = waybar & hyprpaper & firefox
|
||||
|
||||
# Source a file (multi-file configs)
|
||||
# source = ~/.config/hypr/myColors.conf
|
||||
|
||||
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
|
||||
input = {
|
||||
kb_layout = "de";
|
||||
kb_variant = "deadacute";
|
||||
kb_model = "";
|
||||
kb_options = "caps:ctrl_modifier";
|
||||
kb_rules = "";
|
||||
repeat_delay = 250;
|
||||
repeat_rate = 30;
|
||||
follow_mouse = 1;
|
||||
|
||||
touchpad = {
|
||||
natural_scroll = "yes";
|
||||
};
|
||||
|
||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
||||
};
|
||||
|
||||
general = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
gaps_in = 5;
|
||||
gaps_out = 10;
|
||||
border_size = 2;
|
||||
"col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg";
|
||||
"col.inactive_border" = "rgba(595959aa)";
|
||||
|
||||
layout = "dwindle";
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false;
|
||||
};
|
||||
|
||||
layerrule = [
|
||||
# blur for wlogout
|
||||
"blur, logout_dialog"
|
||||
|
||||
# blur for swaync
|
||||
"blur, swaync-control-center"
|
||||
"blur, swaync-notification-window"
|
||||
"ignorezero, swaync-control-center"
|
||||
"ignorezero, swaync-notification-window"
|
||||
"ignorealpha 0.5, swaync-control-center"
|
||||
"ignorealpha 0.5, swaync-notification-window"
|
||||
];
|
||||
|
||||
decoration = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
|
||||
rounding = 10;
|
||||
|
||||
blur = {
|
||||
enabled = true;
|
||||
size = 8;
|
||||
passes = 1;
|
||||
new_optimizations = true;
|
||||
};
|
||||
};
|
||||
|
||||
animations = {
|
||||
enabled = "yes";
|
||||
|
||||
# Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more
|
||||
|
||||
bezier = "myBezier, 0.05, 0.9, 0.1, 1.05";
|
||||
|
||||
animation = [
|
||||
"windows, 1, 7, myBezier"
|
||||
"windowsOut, 1, 7, default, popin 80%"
|
||||
"border, 1, 10, default"
|
||||
"borderangle, 1, 8, default"
|
||||
"fade, 1, 7, default"
|
||||
"workspaces, 1, 6, default"
|
||||
];
|
||||
};
|
||||
|
||||
dwindle = {
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
pseudotile = "yes"; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = "yes"; # you probably want this
|
||||
};
|
||||
|
||||
master = {
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
# new_is_master = true;
|
||||
};
|
||||
|
||||
ecosystem = {
|
||||
no_update_news = true;
|
||||
};
|
||||
|
||||
misc = {
|
||||
# See https://wiki.hyprland.org/Configuring/Variables/ for more
|
||||
force_default_wallpaper = 0; # Set to 0 to disable the anime mascot wallpapers
|
||||
};
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
|
||||
# "device:epic-mouse-v1" = {
|
||||
# sensitivity = -0.5;
|
||||
# };
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
BIN
modules/desktop/swaync/icons/bolt.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
modules/desktop/swaync/icons/brightness-100.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
modules/desktop/swaync/icons/brightness-20.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
modules/desktop/swaync/icons/brightness-40.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
modules/desktop/swaync/icons/brightness-60.png
Normal file
|
After Width: | Height: | Size: 9.0 KiB |
BIN
modules/desktop/swaync/icons/brightness-80.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
modules/desktop/swaync/icons/gamemode.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
modules/desktop/swaync/icons/microphone-mute.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
modules/desktop/swaync/icons/microphone.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
modules/desktop/swaync/icons/music.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
modules/desktop/swaync/icons/palette.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
modules/desktop/swaync/icons/picture.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
modules/desktop/swaync/icons/play.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
modules/desktop/swaync/icons/timer.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
modules/desktop/swaync/icons/volume-high.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
modules/desktop/swaync/icons/volume-low.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
modules/desktop/swaync/icons/volume-mid.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
modules/desktop/swaync/icons/volume-mute.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
modules/desktop/swaync/icons/wand.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
111
modules/desktop/swaync/swaync.nix
Normal file
@@ -0,0 +1,111 @@
|
||||
{
|
||||
flake.homeModules.swaync = {pkgs, ...}: {
|
||||
xdg.enable = true;
|
||||
xdg.configFile = {
|
||||
"swaync/themes" = {
|
||||
source = ./themes;
|
||||
};
|
||||
"swaync/icons" = {
|
||||
source = ./icons;
|
||||
recursive = true;
|
||||
};
|
||||
};
|
||||
services.swaync.enable = true;
|
||||
services.swaync.style = ''
|
||||
@import 'themes/nova-dark/notifications.css';
|
||||
@import 'themes/nova-dark/central_control.css';
|
||||
'';
|
||||
services.swaync.settings = {
|
||||
positionX = "right";
|
||||
positionY = "top";
|
||||
cssPriority = "user";
|
||||
|
||||
control-center-width = 380;
|
||||
control-center-height = 860;
|
||||
control-center-margin-top = 2;
|
||||
control-center-margin-bottom = 2;
|
||||
control-center-margin-right = 1;
|
||||
control-center-margin-left = 0;
|
||||
|
||||
notification-window-width = 400;
|
||||
notification-icon-size = 48;
|
||||
notification-body-image-height = 160;
|
||||
notification-body-image-width = 200;
|
||||
|
||||
timeout = 4;
|
||||
timeout-low = 2;
|
||||
timeout-critical = 6;
|
||||
|
||||
fit-to-screen = false;
|
||||
keyboard-shortcuts = true;
|
||||
image-visibility = "when-available";
|
||||
transition-time = 200;
|
||||
hide-on-clear = false;
|
||||
hide-on-action = false;
|
||||
script-fail-notify = true;
|
||||
scripts = {
|
||||
example-script = {
|
||||
exec = "echo 'Do something...'";
|
||||
urgency = "Normal";
|
||||
};
|
||||
};
|
||||
notification-visibility = {
|
||||
example-name = {
|
||||
state = "muted";
|
||||
urgency = "Low";
|
||||
app-name = "Spotify";
|
||||
};
|
||||
};
|
||||
widgets = [
|
||||
"label"
|
||||
"buttons-grid"
|
||||
"mpris"
|
||||
"title"
|
||||
"dnd"
|
||||
"notifications"
|
||||
];
|
||||
widget-config = {
|
||||
title = {
|
||||
text = "Notifications";
|
||||
clear-all-button = true;
|
||||
button-text = " ";
|
||||
};
|
||||
dnd = {
|
||||
text = "Do not disturb";
|
||||
};
|
||||
label = {
|
||||
max-lines = 1;
|
||||
text = " ";
|
||||
};
|
||||
mpris = {
|
||||
image-size = 96;
|
||||
image-radius = 12;
|
||||
};
|
||||
volume = {
|
||||
label = "";
|
||||
show-per-app = true;
|
||||
};
|
||||
buttons-grid = {
|
||||
actions = [
|
||||
{
|
||||
label = " ";
|
||||
command = "${pkgs.alsa-utils}/bin/amixer set Master toggle";
|
||||
}
|
||||
{
|
||||
label = "";
|
||||
command = "${pkgs.alsa-utils}/bin/amixer set Capture toggle";
|
||||
}
|
||||
{
|
||||
label = " ";
|
||||
command = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
}
|
||||
{
|
||||
label = "";
|
||||
command = "${pkgs.blueman}/bin/blueman-manager";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
258
modules/desktop/swaync/themes/nova-dark/central_control.css
Normal file
@@ -0,0 +1,258 @@
|
||||
@define-color text @foreground;
|
||||
@define-color background-alt alpha(@color1, .4);
|
||||
@define-color selected @color6;
|
||||
@define-color hover alpha(@selected, .4);
|
||||
@define-color urgent @color2;
|
||||
|
||||
/* Temporary color defs */
|
||||
@define-color background rgb(0,10,20);
|
||||
@define-color background-alt rgb(0,20,30);
|
||||
@define-color selected rgb(0,30,130);
|
||||
|
||||
* {
|
||||
color: @text;
|
||||
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
/*font-family: "JetBrains Mono Nerd Font 10";*/
|
||||
transition: 200ms;
|
||||
|
||||
}
|
||||
|
||||
/* Avoid 'annoying' backgroud */
|
||||
.blank-window {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
/* CONTROL CENTER ------------------------------------------------------------------------ */
|
||||
|
||||
.control-center {
|
||||
background: alpha(@background, .55);
|
||||
border-radius: 24px;
|
||||
border: 1px solid @selected;
|
||||
box-shadow: 0 0 10px 0 rgba(0,0,0,.6);
|
||||
margin: 18px;
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
/* Notifications */
|
||||
.control-center .notification-row .notification-background,
|
||||
.control-center .notification-row .notification-background .notification.critical {
|
||||
background-color: @background-alt;
|
||||
border-radius: 16px;
|
||||
margin: 4px 0px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification.critical {
|
||||
color: @urgent;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification .notification-content {
|
||||
margin: 6px;
|
||||
padding: 8px 6px 2px 2px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
background: alpha(@selected, .6);
|
||||
color: @text;
|
||||
border-radius: 12px;
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
background: @selected;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
|
||||
.control-center .notification-row .notification-background .close-button {
|
||||
background: transparent;
|
||||
border-radius: 6px;
|
||||
color: @text;
|
||||
margin: 0px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:hover {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
.control-center .notification-row .notification-background .close-button:active {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
progressbar,
|
||||
progress,
|
||||
trough {
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
progressbar {
|
||||
background-color: rgba(255,255,255,.1);
|
||||
}
|
||||
|
||||
/* Notifications expanded-group */
|
||||
|
||||
.notification-group {
|
||||
margin: 2px 8px 2px 8px;
|
||||
|
||||
}
|
||||
.notification-group-headers {
|
||||
font-weight: bold;
|
||||
font-size: 1.25rem;
|
||||
color: @text;
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
|
||||
.notification-group-icon {
|
||||
color: @text;
|
||||
}
|
||||
|
||||
.notification-group-collapse-button,
|
||||
.notification-group-close-all-button {
|
||||
background: transparent;
|
||||
color: @text;
|
||||
margin: 4px;
|
||||
border-radius: 6px;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
.notification-group-collapse-button:hover,
|
||||
.notification-group-close-all-button:hover {
|
||||
background: @hover;
|
||||
}
|
||||
|
||||
/* WIDGETS --------------------------------------------------------------------------- */
|
||||
|
||||
/* Notification clear button */
|
||||
.widget-title {
|
||||
font-size: 1.2em;
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.widget-title button {
|
||||
background: @background-alt;
|
||||
border-radius: 6px;
|
||||
padding: 4px 16px;
|
||||
}
|
||||
|
||||
.widget-title button:hover {
|
||||
background-color: @hover;
|
||||
}
|
||||
|
||||
.widget-title button:active {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
/* Do not disturb */
|
||||
.widget-dnd {
|
||||
margin: 6px;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
|
||||
.widget-dnd > switch {
|
||||
background: @background-alt;
|
||||
font-size: initial;
|
||||
border-radius: 8px;
|
||||
box-shadow: none;
|
||||
padding: 2px;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:hover {
|
||||
background: @hover;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked {
|
||||
background: @selected;
|
||||
}
|
||||
|
||||
.widget-dnd > switch:checked:hover {
|
||||
background: @hover;
|
||||
}
|
||||
|
||||
.widget-dnd > switch slider {
|
||||
background: @text;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
/* Buttons menu */
|
||||
.widget-buttons-grid {
|
||||
font-size: x-large;
|
||||
padding: 6px 2px;
|
||||
margin: 6px;
|
||||
border-radius: 12px;
|
||||
background: @background-alt;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button {
|
||||
margin: 4px 10px;
|
||||
padding: 6px 12px;
|
||||
background: transparent;
|
||||
border-radius: 8px;
|
||||
}
|
||||
|
||||
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
|
||||
background: @hover;
|
||||
}
|
||||
|
||||
|
||||
/* Music player */
|
||||
.widget-mpris {
|
||||
background: @background-alt;
|
||||
border-radius: 16px;
|
||||
color: @text;
|
||||
margin: 20px 6px;
|
||||
}
|
||||
|
||||
/* NOTE: Background need *opacity 1* otherwise will turn into the album art blurred */
|
||||
.widget-mpris-player {
|
||||
background-color: @background-sec;
|
||||
border-radius: 22px;
|
||||
padding: 6px 14px;
|
||||
margin: 6px;
|
||||
}
|
||||
|
||||
.widget-mpris > box > button {
|
||||
color: @text;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.widget-mpris button {
|
||||
color: alpha(@text, .6);
|
||||
}
|
||||
|
||||
.widget-mpris button:hover {
|
||||
color: @text;
|
||||
}
|
||||
|
||||
.widget-mpris-album-art {
|
||||
border-radius: 16px;
|
||||
}
|
||||
|
||||
.widget-mpris-title {
|
||||
font-weight: 700;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.widget-mpris-subtitle {
|
||||
font-weight: 500;
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
/* Volume */
|
||||
.widget-volume {
|
||||
background: @background-sec;
|
||||
color: @background;
|
||||
padding: 4px;
|
||||
margin: 6px;
|
||||
border-radius: 6px;
|
||||
}
|
||||
115
modules/desktop/swaync/themes/nova-dark/notifications.css
Normal file
@@ -0,0 +1,115 @@
|
||||
@define-color text @foreground;
|
||||
@define-color background-alt @color1;
|
||||
@define-color selected @color3;
|
||||
@define-color hover @color5;
|
||||
@define-color urgent @color2;
|
||||
/* Temporary color defs */
|
||||
@define-color background rgb(0,10,20);
|
||||
@define-color background-alt rgb(0,20,30);
|
||||
@define-color selected rgb(0,30,130);
|
||||
|
||||
* {
|
||||
|
||||
/*background-alt: @color1; Buttons background */
|
||||
/*selected: @color2; Button selected */
|
||||
/*hover: @color5; Hover button */
|
||||
/*urgent: @color6; Urgency critical */
|
||||
/*text-selected: @background; */
|
||||
|
||||
color: @text;
|
||||
|
||||
all: unset;
|
||||
font-size: 14px;
|
||||
font-family: "JetBrains Mono Nerd Font 10";
|
||||
transition: 200ms;
|
||||
|
||||
}
|
||||
|
||||
.notification-row {
|
||||
outline: none;
|
||||
margin: 0;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background {
|
||||
background: alpha(@background, .55);
|
||||
box-shadow: 0 0 8px 0 rgba(0,0,0,.6);
|
||||
border: 1px solid @selected;
|
||||
border-radius: 24px;
|
||||
margin: 16px;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification {
|
||||
padding: 6px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification.critical {
|
||||
border: 2px solid @urgent;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification .notification-content {
|
||||
margin: 14px;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * {
|
||||
min-height: 3.4em;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action {
|
||||
border-radius: 8px;
|
||||
background-color: @background-alt ;
|
||||
margin: 6px;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:hover {
|
||||
background-color: @hover;
|
||||
border: 1px solid @selected;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .notification > *:last-child > * .notification-action:active {
|
||||
background-color: @selected;
|
||||
color: @background;
|
||||
}
|
||||
|
||||
.image {
|
||||
margin: 10px 20px 10px 0px;
|
||||
}
|
||||
|
||||
.summary {
|
||||
font-weight: 800;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.body {
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button {
|
||||
margin: 6px;
|
||||
padding: 2px;
|
||||
border-radius: 6px;
|
||||
background-color: transparent;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:hover {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
.floating-notifications.background .notification-row .notification-background .close-button:active {
|
||||
background-color: @selected;
|
||||
color: @background;
|
||||
}
|
||||
|
||||
.notification.critical progress {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
.notification.low progress,
|
||||
.notification.normal progress {
|
||||
background-color: @selected;
|
||||
}
|
||||
|
||||
261
modules/desktop/waybar.nix
Normal file
@@ -0,0 +1,261 @@
|
||||
{
|
||||
flake.homeModules.waybar = {
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
programs.waybar.enable = true;
|
||||
programs.waybar.systemd.enable = true;
|
||||
|
||||
services.blueman-applet.enable = true;
|
||||
services.network-manager-applet.enable = true;
|
||||
services.pasystray.enable = true;
|
||||
|
||||
# is already fixed on latest home-manager rev
|
||||
systemd.user.services = {
|
||||
blueman-applet.Unit.After = lib.mkForce ["graphical-session.target"];
|
||||
network-manager-applet.Unit.After = lib.mkForce ["graphical-session.target"];
|
||||
pasystray.Unit.After = lib.mkForce ["graphical-session.target"];
|
||||
waybar.Unit.After = lib.mkForce ["graphical-session.target"];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
pulsemixer
|
||||
pavucontrol
|
||||
networkmanagerapplet
|
||||
];
|
||||
|
||||
programs.waybar = {
|
||||
settings.mainBar = {
|
||||
position = "top";
|
||||
layer = "top";
|
||||
height = 5;
|
||||
margin-top = 0;
|
||||
margin-bottom = 0;
|
||||
margin-left = 0;
|
||||
margin-right = 0;
|
||||
modules-left = [
|
||||
"custom/launcher"
|
||||
"hyprland/workspaces"
|
||||
];
|
||||
modules-center = [
|
||||
"hyprland/window"
|
||||
];
|
||||
modules-right = [
|
||||
"clock"
|
||||
"cpu"
|
||||
"memory"
|
||||
"disk"
|
||||
"battery"
|
||||
"network"
|
||||
"tray"
|
||||
];
|
||||
clock = {
|
||||
calendar = {
|
||||
format = {today = "<span color='#b4befe'><b>{}</b></span>";};
|
||||
};
|
||||
format = " {:%H:%M}";
|
||||
tooltip = "true";
|
||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
||||
format-alt = " {:%d/%m}";
|
||||
};
|
||||
"hyprland/workspaces" = {
|
||||
active-only = false;
|
||||
disable-scroll = true;
|
||||
format = "{icon}";
|
||||
on-click = "activate";
|
||||
format-icons = {
|
||||
"1" = "1";
|
||||
"2" = "2";
|
||||
"3" = "3";
|
||||
"4" = "4";
|
||||
"5" = "5";
|
||||
"6" = "6";
|
||||
"7" = "7";
|
||||
"8" = "8";
|
||||
urgent = "";
|
||||
default = "";
|
||||
sort-by-number = true;
|
||||
};
|
||||
persistent-workspaces = {
|
||||
"1" = [];
|
||||
"2" = [];
|
||||
"3" = [];
|
||||
"4" = [];
|
||||
"5" = [];
|
||||
"6" = [];
|
||||
"7" = [];
|
||||
"8" = [];
|
||||
};
|
||||
};
|
||||
memory = {
|
||||
format = " {}%";
|
||||
format-alt = " {used} GiB"; #
|
||||
interval = 2;
|
||||
};
|
||||
cpu = {
|
||||
format = " {usage}%";
|
||||
format-alt = " {avg_frequency} GHz";
|
||||
interval = 2;
|
||||
};
|
||||
disk = {
|
||||
# path = "/";
|
||||
format = " {percentage_used}%";
|
||||
interval = 60;
|
||||
};
|
||||
network = {
|
||||
format-wifi = " {signalStrength}%";
|
||||
format-ethernet = " ";
|
||||
tooltip-format = "Connected to {essid} {ifname} via {gwaddr}";
|
||||
format-linked = "{ifname} (No IP)";
|
||||
format-disconnected = " ";
|
||||
};
|
||||
tray = {
|
||||
icon-size = 20;
|
||||
spacing = 8;
|
||||
};
|
||||
pulseaudio = {
|
||||
format = "{icon} {volume}%";
|
||||
format-muted = " {volume}%";
|
||||
format-icons = {
|
||||
default = [" "];
|
||||
};
|
||||
scroll-step = 5;
|
||||
on-click = "pamixer -t";
|
||||
};
|
||||
battery = {
|
||||
format = "{icon} {capacity}%";
|
||||
format-icons = [" " " " " " " " " "];
|
||||
format-charging = " {capacity}%";
|
||||
format-full = " {capacity}%";
|
||||
format-warning = " {capacity}%";
|
||||
interval = 5;
|
||||
states = {
|
||||
warning = 20;
|
||||
};
|
||||
format-time = "{H}h{M}m";
|
||||
tooltip = true;
|
||||
tooltip-format = "{time}";
|
||||
};
|
||||
"custom/launcher" = {
|
||||
format = "";
|
||||
on-click = "${pkgs.wofi}/bin/wofi --show drun";
|
||||
tooltip = "false";
|
||||
};
|
||||
};
|
||||
style = ''
|
||||
* {
|
||||
border: none;
|
||||
font-family: Font Awesome, Roboto, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
color: #ffffff;
|
||||
border-radius: 15px;
|
||||
}
|
||||
|
||||
window {
|
||||
/*font-weight: bold;*/
|
||||
}
|
||||
window#waybar {
|
||||
border-style: none;
|
||||
border-width: 1px;
|
||||
border-color: #33ccff;
|
||||
background: rgba(0, 0, 0, 0);
|
||||
}
|
||||
/*-----module groups----*/
|
||||
.modules-right {
|
||||
background-color: rgba(0,43,51,0.85);
|
||||
margin: 2px 10px 2px 0;
|
||||
}
|
||||
.modules-left {
|
||||
margin: 2px 0 2px 5px;
|
||||
background-color: rgba(0,119,179,0.6);
|
||||
}
|
||||
/*-----modules indv----*/
|
||||
#workspaces button {
|
||||
padding: 1px 5px;
|
||||
background-color: transparent;
|
||||
}
|
||||
#workspaces button:hover {
|
||||
box-shadow: inherit;
|
||||
background-color: rgba(0,153,153,1);
|
||||
}
|
||||
#workspaces button.empty {
|
||||
color: rgba(0 ,40, 40, 40);
|
||||
}
|
||||
#workspaces button.active {
|
||||
background-color: rgba(0,43,51,0.85);
|
||||
}
|
||||
#window {
|
||||
border-style: solid;
|
||||
background-color: rgba(0,43,51,0.5);
|
||||
margin: 2px 5px;
|
||||
padding: 2px 5px;
|
||||
border-width: 1px;
|
||||
border-color: #33ccff;
|
||||
}
|
||||
#window.empty {
|
||||
border-style: none;
|
||||
background-color: transparent;
|
||||
}
|
||||
#custom-launcher {
|
||||
background-color: rgba(0,119,179,0.6);
|
||||
border-radius: 100px;
|
||||
margin: 5px 5px;
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#temperature,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#custom-media,
|
||||
#tray,
|
||||
#mode,
|
||||
#custom-power,
|
||||
#custom-menu,
|
||||
#idle_inhibitor {
|
||||
padding: 0 10px;
|
||||
}
|
||||
#mode {
|
||||
color: #cc3436;
|
||||
font-weight: bold;
|
||||
}
|
||||
#custom-power {
|
||||
background-color: rgba(0,119,179,0.6);
|
||||
border-radius: 100px;
|
||||
margin: 5px 5px;
|
||||
padding: 1px 1px 1px 6px;
|
||||
}
|
||||
/*-----Indicators----*/
|
||||
#idle_inhibitor.activated {
|
||||
color: #2dcc36;
|
||||
}
|
||||
#pulseaudio.muted {
|
||||
color: #cc3436;
|
||||
}
|
||||
#battery.charging {
|
||||
color: #2dcc36;
|
||||
}
|
||||
#battery.warning:not(.charging) {
|
||||
color: #e6e600;
|
||||
}
|
||||
#battery.critical:not(.charging) {
|
||||
color: #cc3436;
|
||||
}
|
||||
#temperature.critical {
|
||||
color: #cc3436;
|
||||
}
|
||||
/*-----Colors----*/
|
||||
/*
|
||||
*rgba(0,85,102,1),#005566 --> Indigo(dye)
|
||||
*rgba(0,43,51,1),#002B33 --> Dark Green
|
||||
*RGBA(0,153,153,1),#009999 --> PERSIAN GREEN
|
||||
*
|
||||
*/
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -1,4 +1,18 @@
|
||||
{inputs, ...}: {
|
||||
{
|
||||
inputs,
|
||||
self,
|
||||
...
|
||||
}: {
|
||||
flake.nixosModules.unstable-overlay = {
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.unstable
|
||||
];
|
||||
};
|
||||
flake.homeModules.unstable-overlay = {
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.unstable
|
||||
];
|
||||
};
|
||||
flake.overlays.unstable = final: prev: {
|
||||
unstable = import inputs.nixpkgs-unstable {
|
||||
system = prev.system;
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
{
|
||||
{self, ...}: {
|
||||
flake.overlays.bulk-transcode = final: prev: {
|
||||
bulk-transcode = final.callPackage ./_derivation.nix {};
|
||||
};
|
||||
flake.nixosModules.bulk-transcode-overlay = {
|
||||
nixpkgs.overlays = [self.overlays.bulk-transcode];
|
||||
};
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.bulk-transcode = pkgs.callPackage ./_derivation.nix {};
|
||||
devShells.bulk-transcode = import ./_shell.nix {inherit pkgs;};
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
{
|
||||
flake.overlays.layan-qt6 = final: prev: {
|
||||
crossover = final.callPackage ./_derivation.nix {};
|
||||
};
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.layan-qt6 = pkgs.callPackage ./_derivation.nix {};
|
||||
};
|
||||
}
|
||||
18
modules/themes/layan/layan-qt6.nix
Normal file
@@ -0,0 +1,18 @@
|
||||
{self, ...}: {
|
||||
flake.homeModules.layan-qt6-overlay = {
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.layan-qt6
|
||||
];
|
||||
};
|
||||
flake.nixosModules.layan-qt6-overlay = {
|
||||
nixpkgs.overlays = [
|
||||
self.overlays.layan-qt6
|
||||
];
|
||||
};
|
||||
flake.overlays.layan-qt6 = final: prev: {
|
||||
layan-qt6 = final.kdePackages.callPackage ./_derivation.nix {};
|
||||
};
|
||||
perSystem = {pkgs, ...}: {
|
||||
packages.layan-qt6 = pkgs.callPackage ./_derivation.nix {};
|
||||
};
|
||||
}
|
||||
48
modules/themes/layan/layan.nix
Normal file
@@ -0,0 +1,48 @@
|
||||
{self, ...}: {
|
||||
flake.homeModules.layan = {
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
self.homeModules.layan-qt6-overlay
|
||||
self.homeModules.unstable-overlay
|
||||
];
|
||||
home.packages = [
|
||||
pkgs.layan-qt6
|
||||
pkgs.kdePackages.qtstyleplugin-kvantum
|
||||
pkgs.unstable.layan-cursors
|
||||
pkgs.layan-gtk-theme
|
||||
pkgs.tela-circle-icon-theme
|
||||
];
|
||||
|
||||
qt.enable = false;
|
||||
qt.style.name = "kvantum";
|
||||
qt.style.package = pkgs.kdePackages.qtstyleplugin-kvantum;
|
||||
qt.platformTheme.name = "gtk";
|
||||
systemd.user.settings.Manager.DefaultEnvironment = lib.mapAttrs (_: lib.mkDefault) {
|
||||
QT_STYLE_OVERRIDE = "kvantum";
|
||||
QT_QPA_PLATFORMTHEME = "gtk";
|
||||
};
|
||||
xdg.configFile."Kvantum/kvantum.kvconfig".text = lib.generators.toINI {} {
|
||||
General.theme = "LayanDark";
|
||||
};
|
||||
|
||||
# add nord like gtk theme
|
||||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme = {
|
||||
package = pkgs.unstable.layan-cursors;
|
||||
name = "Layan-cursors";
|
||||
};
|
||||
theme = {
|
||||
package = pkgs.layan-gtk-theme;
|
||||
name = "Layan-Dark";
|
||||
};
|
||||
iconTheme = {
|
||||
package = pkgs.tela-circle-icon-theme;
|
||||
name = "Tela-circle-dark";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
|
Before Width: | Height: | Size: 642 KiB After Width: | Height: | Size: 642 KiB |