Big update

This commit is contained in:
ant 2024-06-03 15:24:20 +02:00
parent 17dc67816a
commit 4be1762868
17 changed files with 1238 additions and 1338 deletions

13
additional-software.nix Normal file
View file

@ -0,0 +1,13 @@
{ lib, config, pkgs, ... }: {
options = {
config.downloadSoftwares = lib.mkEnableOption "Enable qbittorrent, aria2 and yt-dlp";
};
config = lib.mkIf config.downloadSoftwares.enable {
home.packages = with pkgs; [
yt-dlp
qbittorrent
aria2
];
};
}

266
bar.nix Normal file
View file

@ -0,0 +1,266 @@
{ lib, config, pkgs, ... }: {
home.packages = with pkgs; [
material-design-icons
jost
ncdu
];
programs.waybar = {
enable = true;
# systemd.enable = true;
settings = {
bar = {
"reload_style_on_change" = true;
layer = "top";
position = "bottom";
exclusive = true;
# height = 0;
"on-scroll-up" = "hyprctl dispatch workspace e+1";
"on-scroll-down" = "hyprctl dispatch workspace e-1";
"modules-left" = [
"group/controls"
"hyprland/submap"
];
"modules-center" = [ "hyprland/window" ];
"modules-right" = [
"network"
"group/disks"
"group/hardware"
"tray"
"clock"
];
"group/controls" = {
orientation = "inherit";
modules = [
"hyprland/workspaces"
"pulseaudio#speaker"
"pulseaudio#microphone"
"idle_inhibitor"
"bluetooth"
"backlight"
"mpris"
];
};
"group/hardware" = {
orientation = "inherit";
modules = [ "cpu" "temperature" "memory" "battery" ];
};
"group/disks" = {
orientation = "inherit";
modules = [ "disk" "disk#2" "disk#3" ];
};
backlight = {
device = "intel_backlight";
format = "{icon}";
"on-click" = "${pkgs.light}/bin/light -S 100";
"on-click-right" = "${pkgs.light}/bin/light -S 1";
"tooltip-format" = "{percent}%";
"format-icons" = [ "󰛩" "󱩎" "󱩏" "󱩐" "󱩑" "󱩒" "󱩓" "󱩔" "󱩕" "󱩖" "󰛨" ];
};
idle_inhibitor = {
format = "{icon}";
"format-icons" = {
activated = "󰈈";
deactivated = "󰈉";
};
};
bluetooth = {
format = "󰂯";
"format-disabled" = "󰂲";
"on-click" = "${pkgs.util-linux}/bin/rfkill toggle bluetooth";
"on-click-right" = "$TERMINAL --class floating -e bluetuith";
"tooltip-format" = "{}";
};
mpris = {
format = "{player_icon} {title}";
"format-paused" = "{status_icon} <i>{title}</i>";
"player-icons" = {
default = "󰐊";
mpv = "󰐍";
spotify = "󰓇";
};
"status-icons" = {
paused = "󰏤";
};
};
disk = {
interval = 1;
format = "󰋊 {free}";
path = "/";
"on-click" = "$TERMINAL --class floating -e ${pkgs.ncdu}/bin/ncdu -x /";
};
"disk#2" = {
interval = 1;
format = "󰋊 {free}";
path = "/home/ant/disk1";
"on-click" = "$TERMINAL --class floating -e ${pkgs.ncdu}/bin/ncdu -x /home/ant/disk1";
};
"disk#3" = {
interval = 1;
format = "󰋊 {free}";
path = "/home/ant/disk2";
"on-click" = "$TERMINAL --class floating -e ${pkgs.ncdu}/bin/ncdu -x /home/ant/disk2";
};
memory = {
interval = 1;
format = "󰧑 {percentage:2}%";
"tooltip-format" = "{used:0.1f}G/{total:0.1f}G";
states = { low = 70; };
"on-click" = "notify-send \"$(printf \"%-20s %10s\\n\" \"COMMAND\" \"MEMORY USAGE\"; ps axo comm,rss | awk '{mem[$1]+=$2} END {for (cmd in mem) printf \"%-20s %5.2f MiB\\n\", cmd, mem[cmd]/1024}' | sort -k2nr | head -n10)\"";
};
network = {
interval = 1;
format = "󰌙";
"format-disconnected" = "󰌙";
"format-linked" = "󰛵";
"format-ethernet" = "󰓢 {bandwidthDownBytes:>} {bandwidthUpBytes:>}";
"format-wifi" = "󰖩 {bandwidthDownBytes:>} {bandwidthUpBytes:>}";
"on-click" = "wifi-toggle";
"on-right-click" = "$TERMINAL --class floating -e nmtui";
"tooltip-format-ethernet" = "{ipaddr}";
"tooltip-format-wifi" = "{ipaddr}\n{essid}\n{signalStrength}";
};
"hyprland/window" = {
format = "{}";
"on-scroll-up" = "hyprctl dispatch workspace e+1";
"on-scroll-down" = "hyprctl dispatch workspace e-1";
};
"hyprland/workspaces" = {
"on-scroll-up" = "hyprctl dispatch workspace e+1";
"on-scroll-down" = "hyprctl dispatch workspace e-1";
"all-outputs" = true;
"on-click" = "activate";
format = "{icon}";
"format-icons" = {
"1" = "0";
"2" = "1";
"3" = "2";
"4" = "3";
"5" = "4";
"6" = "5";
"7" = "6";
"8" = "7";
"9" = "8";
"10" = "9";
};
};
cpu = {
interval = 1;
format = "󰘚 {usage:2}%";
"max-length" = 10;
"on-click" = "$TERMINAL --class floating -e htop";
};
battery = {
interval = 30;
states = {
warning = 30;
critical = 15;
};
"format-charging" = "󰂅 {capacity:2}%";
format = "{icon} {capacity:2}%";
"format-icons" = [ "󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
tooltip = true;
};
"custom/weather" = {
tooltip = true;
format = "{}";
"restart-interval" = 300;
exec = "~/.config/waybar/scripts/waybar-wttr.py";
"return-type" = "json";
};
tray = {
"icon-size" = 17;
# tooltip = false;
# spacing = 10;
};
clock = {
"min-length" = 10;
interval = 1;
format = "{:%d/%m %H:%M:%S}";
timezones = [ "Europe/Paris" ];
"tooltip-format" = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
actions = {
"on-scroll-up" = "tz_up";
"on-scroll-down" = "tz_down";
};
};
"pulseaudio#speaker" = {
format = "{icon} {volume}%";
tooltip = false;
"format-muted" = "󰖁";
"on-click" = "pamixer -t";
# "on-click-right" = "pamixer -t";
"on-scroll-up" = "pamixer -i 5";
"on-scroll-down" = "pamixer -d 5";
"scroll-step" = 5;
"format-icons" = {
headphone = "󰋋";
"hands-free" = "󰋋";
headset = "󰋋";
phone = "󰏲";
portable = "󰏲";
car = "󰄋";
default = [ "󰕿" "󰖀" "󰕾" ];
};
};
"pulseaudio#microphone" = {
format = "{format_source}";
tooltip = false;
"format-source" = "󰍬 {volume}%";
"format-source-muted" = "󰍭";
"on-click" = "pamixer --default-source -t";
"on-scroll-up" = "pamixer --default-source -i 5";
"on-scroll-down" =
"pamixer --default-source -d 5";
"scroll-step" = 5;
};
"hyprland/submap" = {
format = "(l)ock, (e)xit, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown";
};
"custom/nvidia-load" = {
exec = ".config/waybar/scripts/nvidia-load.py";
interval = 5;
"return-type" = "json";
format = "{}";
tooltip = "{tooltip}";
"on-click" = "$TERMINAL --class floating -e nvtop";
};
"custom/nvidia-mem" = {
exec = ".config/waybar/scripts/nvidia-mem.py";
interval = 5;
"return-type" = "json";
format = "{}";
tooltip = "{tooltip}";
"on-click" = "$TERMINAL --class floating -e nvtop";
};
};
};
style = ./waybar.css;
};
}

19
bin/quickrun.fish Executable file
View file

@ -0,0 +1,19 @@
#!/usr/bin/env nix-shell
#!nix-shell -i fish
#!nix-shell -p fish gcc
set file (realpath $argv[1])
set workdir (mktemp -d)
cd $workdir
set extension (string match -r '\.([a-z]+)$' $file | head -n 1)
switch $extension
case ".c"
gcc -o a.out $file
./a.out
case ".py"
python $file
end

View file

@ -30,7 +30,7 @@ mainbox {
} }
inputbar { inputbar {
spacing: 0; spacing: 0;
border: 1px; border: 0;
padding: 0.4em 0.2em; padding: 0.4em 0.2em;
background-color: @bg; background-color: @bg;
index: 0; index: 0;
@ -50,7 +50,7 @@ entry {
} }
listview { listview {
border: 1px; border: 0;
reverse: false; reverse: false;
columns: 1; columns: 1;

View file

@ -1,198 +0,0 @@
* {
border: none;
background: rgba(0, 0, 0, 0);
/* font-family: "CartographCF italic"; */
font-family: "Material Design Icons", Monospace;
/* font-family: "Roboto"; */
font-weight: bold;
font-size: 14px;
min-height: 0;
}
/* tooltip { */
/* background: #000000; */
/* border-width: 2px; */
/* border-style: solid; */
/* border-color: #222222; */
/* } */
#custom-language,
#idle_inhibitor,
#custom-updates,
#bluetooth,
#custom-caffeine,
#custom-weather,
#custom-nvidia-load,
#custom-nvidia-mem,
#window,
#clock,
#battery,
#pulseaudio,
#network,
#workspaces,
#tray,
#disk,
#memory,
#temperature,
#cpu,
#mpris,
#submap,
#workspaces,
#backlight {
background: rgba(0, 0, 0, .6);
color: #ffffff;
padding: 0px 10px;
/* margin-top: 0px; */
/* margin-bottom: 0px; */
/* margin-right: 3px; */
/* margin-left: 3px; */
/* border: 1px solid #000000; */
margin: 0px 4px 0px 4px;
}
#workspaces {
padding: 0;
/* margin-left: 0; */
/* margin-right: 0; */
}
#workspaces button {
padding: 4px;
color: #aaaaaa;
}
#workspaces button.active {
color: #ffffff;
border-radius: 20px;
background: #0f0f0f;
}
#workspaces button.focused {
/* color: #a6adc8; */
border-radius: 0px;
background: #eba0ac;
}
#workspaces button.urgent {
/* color: #11111b; */
background: #a6e3a1;
}
#workspaces button:hover {
background: #11111b;
border-radius: 0px;
/* color: #cdd6f4; */
}
#pulseaudio.speaker {
/* color: #89b4fa; */
margin-left: 0;
margin-right: 0;
}
#pulseaudio.microphone {
/* color: #cba6f7; */
margin-left: 0;
margin-right: 0;
}
#idle_inhibitor {
margin-left: 0;
margin-right: 0;
}
#backlight {
margin-left: 0;
}
#submap {
background: #000000;
border: 1px solid #ffffff;
color: #ffffff;
}
/* #mpris { */
/* font-family: "CartographCF italic"; */
/* } */
#network {
/* margin-right: 0; */
}
#disk {
margin-right: 0;
margin-left: 0;
}
#cpu {
/* margin-left: 0; */
margin-right: 0;
}
#temperature {
/* color: #f9afdb; */
margin-right: 0;
margin-left: 0;
}
#memory {
margin-left: 0;
margin-right: 0;
}
#memory.low {
/* color: #f85754; */
}
#battery {
margin-left: 0;
margin-right: 0;
}
#tray {
/* margin-left: 0; */
margin-right: 0;
}
tooltip,
window#waybar #tray menu {
color: #aaaaaa;
background: #000000;
border: 1px solid #888888;
border-radius: 0;
}
#clock {
/* margin-left: 0; */
margin-right: 0;
}
/* #custom-gpu { */
/* color: #f5c2e7; */
/* } */
#window {
color: #ffffff;
text-shadow: 1px 0 #000, -1px 0 #000, 0 1px #000, 0 -1px #000,
1px 1px #000, -1px -1px #000, 1px -1px #000, -1px 1px #000;
background: rgba(0, 0, 0, 0);
border: 0
}
#bluetooth {
margin-left: 0;
margin-right: 0;
}
#custom-weather {
margin-right: 0;
}
#custom-nvidia-load {
margin-right: 0;
/* color: #afb8f9; */
}
#custom-nvidia-mem {
margin-left: 0;
/* color: #aff9b2; */
}

View file

@ -1,234 +0,0 @@
{
"layer": "top",
"position": "bottom",
"exclusive": true,
"passtrough": false,
"gtk-layer-shell": true,
"height": 0,
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
"modules-left": [
"hyprland/workspaces",
"pulseaudio#speaker",
"pulseaudio#microphone",
"idle_inhibitor",
"bluetooth",
"backlight",
"mpris",
"hyprland/submap",
"hyprland/window"
],
"modules-center": [],
"modules-right": [
// "custom/updates",
// "custom/nvidia-load",
// "custom/nvidia-mem",
"disk#2",
"network",
"disk",
"cpu",
"temperature",
"memory",
"battery",
// "custom/weather",
"tray",
"clock",
],
"backlight": {
"device": "intel_backlight",
"format": "{icon}",
"on-click": "light -S 100",
"on-click-right": "light -S 1",
"tooltip-format": "{percent}%",
"format-icons": ["󰛩", "󱩎", "󱩏", "󱩐", "󱩑", "󱩒", "󱩓", "󱩔", "󱩕", "󱩖", "󰛨"]
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "󰈈",
"deactivated": "󰈉"
}
},
"bluetooth": {
"format": "󰂯",
"format-disabled": "󰂲",
"on-click": "rfkill toggle bluetooth",
"on-click-right": "alacritty --class floating -e bluetuith",
"tooltip-format": "{}"
},
"mpris": {
"format": "{player_icon} {title}",
"format-paused": "{status_icon} <i>{title}</i>",
"player-icons": {
"default": "󰐊",
"mpv": "󰐍",
"spotify": "󰓇"
},
"status-icons": {
"paused": "󰏤"
},
// "ignored-players": ["mpv"]
},
"disk": {
"interval": 1,
"format": "󰋊 {free}",
"path": "/",
"on-click": "alacritty --class floating -e ncdu -x /"
},
"disk#2": {
"interval": 30,
"format": "{path} {free}",
"path": "/home/ant/storage",
"on-click": "alacritty --class floating -e ncdu -x /home/ant/storage"
},
"memory": {
"interval": 1,
"format": "󰧑 {percentage:2}%",
"tooltip-format": "{used:0.1f}G/{total:0.1f}G",
"states": { "low": 70 },
"on-click": "notify-send \"$(printf \"%-20s %10s\\n\" \"COMMAND\" \"MEMORY USAGE\"; ps axo comm,rss | awk '{mem[$1]+=$2} END {for (cmd in mem) printf \"%-20s %5.2f MiB\\n\", cmd, mem[cmd]/1024}' | sort -k2nr | head -n10)\""
},
"network": {
"interval": 1,
"format": "󰌙",
"format-disconnected": "󰌙",
"format-linked": "󰛵",
"format-ethernet": "󰓢 {bandwidthDownBytes:>} {bandwidthUpBytes:>}",
"format-wifi": "󰖩 {bandwidthDownBytes:>} {bandwidthUpBytes:>}",
"on-click": "wifi-toggle",
"on-right-click": "$TERMINAL --class floating -e nmtui",
"tooltip-format-ethernet": "{ipaddr}",
"tooltip-format-wifi": "{ipaddr}\n{essid}\n{signalStrength}"
},
"hyprland/window": {
"format": "{}",
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
},
"hyprland/workspaces": {
"on-scroll-up": "hyprctl dispatch workspace e+1",
"on-scroll-down": "hyprctl dispatch workspace e-1",
"all-outputs": true,
"on-click": "activate",
"format": "{icon}",
"format-icons": {
"1": "0",
"2": "1",
"3": "2",
"4": "3",
"5": "4",
"6": "5",
"7": "6",
"8": "7",
"9": "8",
"10": "9",
// "urgent": "",
// "active": "",
// "default": ""
}
},
"cpu": {
"interval": 1,
"format": "󰘚 {usage:2}%",
"max-length": 10,
"on-click": "alacritty --class floating -e htop"
},
"custom/updates": {
"exec": "pacman -Quq | wc -l | sed 's/^0$//'",
"interval": 60,
"format": "󰮯 {}"
},
"battery": {
"interval": 30,
"states": {
"warning": 30,
"critical": 15
},
"format-charging": "󰂅 {capacity:2}%",
"format": "{icon} {capacity:2}%",
"format-icons": ["󰂎", "󰁺", "󰁻", "󰁼", "󰁽", "󰁾", "󰁿", "󰂀", "󰂁", "󰂂", "󰁹"],
"tooltip": true
},
"custom/weather" : {
"tooltip" : true,
"format" : "{}",
"restart-interval" : 300,
"exec" : "~/.config/waybar/scripts/waybar-wttr.py",
"return-type" : "json"
},
"tray": {
"icon-size": 13,
// "tooltip": false,
"spacing": 10
},
"clock": {
"min-length": 10,
"interval": 1,
"format": "{:%d/%m %H:%M:%S}",
"timezones": ["Europe/Paris"],
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"actions": {
"on-scroll-up": "tz_up",
"on-scroll-down": "tz_down"
}
},
"pulseaudio#speaker": {
"format": "{icon} {volume}%",
"tooltip": false,
"format-muted": "󰖁",
"on-click": "pamixer -t",
// "on-click-right": "pamixer -t",
"on-scroll-up": "pamixer -i 5",
"on-scroll-down": "pamixer -d 5",
"scroll-step": 5,
"format-icons": {
"headphone": "󰋋",
"hands-free": "󰋋",
"headset": "󰋋",
"phone": "󰏲",
"portable": "󰏲",
"car": "󰄋",
"default": ["󰕿", "󰖀", "󰕾"]
}
},
"pulseaudio#microphone": {
"format": "{format_source}",
"tooltip": false,
"format-source": "󰍬 {volume}%",
"format-source-muted": "󰍭",
"on-click": "pamixer --default-source -t",
"on-scroll-up": "pamixer --default-source -i 5",
"on-scroll-down": "pamixer --default-source -d 5",
"scroll-step": 5
},
"hyprland/submap": {
"format": "(l)ock, (e)xit, (s)uspend, (h)ibernate, (r)eboot, (S)hutdown"
},
"custom/nvidia-load": {
"exec": ".config/waybar/scripts/nvidia-load.py",
"interval": 5,
"return-type": "json",
"format": "{}",
"tooltip": "{tooltip}",
"on-click": "alacritty --class floating -e nvtop"
},
"custom/nvidia-mem": {
"exec": ".config/waybar/scripts/nvidia-mem.py",
"interval": 5,
"return-type": "json",
"format": "{}",
"tooltip": "{tooltip}",
"on-click": "alacritty --class floating -e nvtop"
}
}

View file

@ -1,22 +0,0 @@
{
global = {
geometry = "750x5-20+20";
horizontal_padding = 8;
indicate_hidden = true;
shrink = true;
transparency = 20;
separator_height = 2;
frame_width = 3;
frame_color = "#000000";
font = "Monospace 11";
alignment = "left";
show_age_threshold = 60;
background = "#ffffff";
foreground = "#000000";
};
urgency_critical = {
background = "#ff9999";
};
}

View file

@ -1,5 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
programs.fish = {
enable = true; enable = true;
loginShellInit = '' loginShellInit = ''
set -gx fish_greeting set -gx fish_greeting
@ -86,7 +87,7 @@
diff = "diff --color=auto"; diff = "diff --color=auto";
bt = "bluetuith"; bt = "bluetuith";
hm = "home-manager"; hm = "home-manager";
hms = "home-manager switch &| nom"; hms = "home-manager switch";
dev = "nix develop -c fish"; dev = "nix develop -c fish";
gparted = "nix-shell -p pkgs.gparted --run 'sudo -E gparted'"; gparted = "nix-shell -p pkgs.gparted --run 'sudo -E gparted'";
ns = "nix-shell"; ns = "nix-shell";
@ -108,4 +109,5 @@
}; };
} }
]; ];
};
} }

View file

@ -1,5 +1,5 @@
{ {
description = "Home Manager configuration of ant"; description = "Home Manager configuration";
inputs = { inputs = {
# Specify the source of Home Manager and Nixpkgs. # Specify the source of Home Manager and Nixpkgs.
@ -8,16 +8,12 @@
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
hyprfocus.url = "github:VortexCoyote/hyprfocus";
}; };
outputs = { nixpkgs, home-manager, hyprfocus, ... }: outputs = { nixpkgs, home-manager, ... }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}; pkgs = nixpkgs.legacyPackages.${system};
flakes-pkgs = {
hyprfocus = hyprfocus.packages.${pkgs.system}.hyprfocus;
};
in { in {
homeConfigurations."ant" = home-manager.lib.homeManagerConfiguration { homeConfigurations."ant" = home-manager.lib.homeManagerConfiguration {
inherit pkgs; inherit pkgs;
@ -27,12 +23,6 @@
modules = [ modules = [
./home.nix ./home.nix
]; ];
# Optionally use extraSpecialArgs
# to pass through arguments to home.nix
extraSpecialArgs = {
inherit flakes-pkgs;
};
}; };
}; };
} }

14
gaming.nix Normal file
View file

@ -0,0 +1,14 @@
{ lib, config, pkgs, ... }: {
# nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [
# "lutris"
# ];
nixpkgs.config = { allowUnfree = true; };
home.packages = with pkgs; [
lutris
mangohud
prismlauncher
heroic
];
}

35
gui-software.nix Normal file
View file

@ -0,0 +1,35 @@
{ lib, cnfig, pkgs, ... }: {
home.packages = with pkgs; [
betterbird
nsxiv
];
programs.mpv = {
enable = true;
config = {
keep-open = "yes";
osd-bar = "no";
};
scripts = with pkgs.mpvScripts; [
uosc
thumbfast
mpris
];
};
# programs.chromium = {
# enable = true;
# package = pkgs.ungoogled-chromium;
# dictioaries = [
# pkgs.hunspellDictsChromium.en_US
# pkgs.hunspellDictsChromium.fr_FR
# ];
# extensions = [
# { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
# { id = "hfjbmagddngcpeloejdejnfgbamkjaeg"; } # vimium C
# ];
# };
programs.firefox.enable = true;
programs.zathura.enable = true;
}

397
home.nix
View file

@ -1,102 +1,48 @@
let user = import ./name.nix; in { inputs, config, lib, pkgs, flakes-pkgs, ... }:
{ config, pkgs, flakes-pkgs, ... }:
{ {
imports = [
./lf.nix
./fish.nix
./ui.nix
./terminal-software.nix
./gui-software.nix
./gaming.nix
];
# Home Manager needs a bit of information about you and the paths it should # Home Manager needs a bit of information about you and the paths it should
# manage. # manage.
home.username = user; home.username = "ant";
home.homeDirectory = "/home/${user}"; home.homeDirectory = "/home/${config.home.username}";
# 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 = "23.05"; # Please read the comment before changing. home.stateVersion = "23.05"; # Please read the comment before changing.
# The home.packages option allows you to install Nix packages into your
# environment.
home.packages = with pkgs; [ home.packages = with pkgs; [
betterbird nh
python3 python3
python3Packages.virtualenv python3Packages.virtualenv
nodePackages.pyright nodePackages.pyright
dunst # bluez
ncdu
nsxiv
wl-clipboard
pamixer
pulsemixer
bluez
bluetuith
wtype
dmenu
keepmenu
dtrx
trash-cli
rofimoji
nnn
go-mtpfs go-mtpfs
nix-output-monitor
libnotify
qbittorrent
go
unzip
pandoc
gnumake
xdg-utils xdg-utils
entr
# xdg-desktop-portal-wlr
xdg-desktop-portal-hyprland
(catppuccin-gtk.override {
accents = [ "pink" ];
size = "compact";
tweaks = [ "black" ];
variant = "mocha";
})
davfs2 davfs2
htop
yt-dlp
ffmpeg
wget
lua-language-server
inter
material-design-icons
(nerdfonts.override { fonts = [ "CascadiaCode" "Noto" "Hack" ]; })
devenv
]; ];
# Home Manager is pretty good at managing dotfiles. The primary way to manage
# plain files is through 'home.file'.
home.file = { home.file = {
# ".config/fontconfig/fonts.conf".source = dotfiles/fonts.conf;
".config/waybar/config.jsonc".source = dotfiles/waybar.jsonc;
".config/waybar/style.css".source = dotfiles/waybar.css;
# ".config/kitty/kitty.conf".source = dotfiles/kitty/kitty.conf;
".config/kitty/light.conf".source = dotfiles/kitty/light.conf; ".config/kitty/light.conf".source = dotfiles/kitty/light.conf;
".config/kitty/dark.conf".source = dotfiles/kitty/dark.conf; ".config/kitty/dark.conf".source = dotfiles/kitty/dark.conf;
".config/rofi/colors-dark.rasi".source = dotfiles/rofi/colors-dark.rasi; ".config/rofi/colors-dark.rasi".source = dotfiles/rofi/colors-dark.rasi;
".config/rofi/colors-light.rasi".source = dotfiles/rofi/colors-light.rasi; ".config/rofi/colors-light.rasi".source = dotfiles/rofi/colors-light.rasi;
# ".config/rofi/config.rasi".source = dotfiles/rofi/config.rasi;
".config/rofi/theme.rasi".source = dotfiles/rofi/theme.rasi; ".config/rofi/theme.rasi".source = dotfiles/rofi/theme.rasi;
# ".config/dunst/dunstrc".source = dotfiles/dunstrc;
".config/keepmenu/config.ini".source = dotfiles/keepmenu.ini; ".config/keepmenu/config.ini".source = dotfiles/keepmenu.ini;
".bin/runmenu".source = pkgs.writers.writeBash "runmenu" '' ".bin/runmenu".source = pkgs.writers.writeBash "runmenu" ''
${config.programs.rofi.package}/bin/rofi -matching normal -sort -show run ${config.programs.rofi.package}/bin/rofi -matching normal -sort -show run
''; '';
# ".bin/wl".source = bin/wl;
".bin/window_dir".source = pkgs.writers.writeBash "window_dir" '' ".bin/window_dir".source = pkgs.writers.writeBash "window_dir" ''
PID=$(${pkgs.hyprland}/bin/hyprctl activewindow | grep pid | cut -d' ' -f 2) PID=$(${pkgs.hyprland}/bin/hyprctl activewindow | grep pid | cut -d' ' -f 2)
PID=$(echo $(ps --ppid $PID -o pid | tail -n1)) PID=$(echo $(ps --ppid $PID -o pid | tail -n1))
@ -170,14 +116,13 @@ let user = import ./name.nix; in
]; ];
home.sessionVariables = { home.sessionVariables = {
NIXOS_OZONE_WL = "1"; # EDITOR = "nvim";
EDITOR = "nvim"; # TERMINAL = "kitty";
TERMINAL = "kitty"; # TERM = "kitty";
TERM = "kitty";
NNN_TRASH = 1;
GOPATH = "${config.home.homeDirectory}/.local/share/go"; GOPATH = "${config.home.homeDirectory}/.local/share/go";
GOMODCACHE = "${config.home.homeDirectory}/.cache/go/pkg/mod"; GOMODCACHE = "${config.home.homeDirectory}/.cache/go/pkg/mod";
NIXOS_OZONE_WL = "1";
GDK_BACKEND = "wayland,x11"; GDK_BACKEND = "wayland,x11";
QT_QPA_PLATFORM = "wayland;xcb"; QT_QPA_PLATFORM = "wayland;xcb";
CLUTTER_BACKEND = "wayland"; CLUTTER_BACKEND = "wayland";
@ -193,22 +138,9 @@ let user = import ./name.nix; in
"caps:escape" "caps:escape"
]; ];
# xsession.enable = true;
# xsession.windowManager.command = "${pkgs.fish}/bin/fish --login";
wayland.windowManager.hyprland = (import ./hyprland.nix) { pkgs = pkgs; flakes-pkgs = flakes-pkgs; };
xdg = { xdg = {
enable = true; enable = true;
systemDirs.data = [ "${config.home.homeDirectory}/.local/share" ]; systemDirs.data = [ "${config.home.homeDirectory}/.local/share" ];
# portal = {
# enable = true;
# configPackage = pkgs.xdg-desktop-portal-hyprland;
# xdgOpenUsePortal = true;
# };
userDirs = { userDirs = {
enable = true; enable = true;
createDirectories = false; createDirectories = false;
@ -226,297 +158,8 @@ let user = import ./name.nix; in
}; };
}; };
services.gnome-keyring.enable = true;
services.syncthing.enable = true; services.syncthing.enable = true;
systemd.user.services = {
battery-notify = {
Unit = {
Description = "Send notification when battery is low";
Wants = "battery-timer.timer";
};
Service = {
Type = "oneshot";
ExecStart = "${pkgs.writers.writeBash "battery-notify" ''
# ${pkgs.libnotify}/bin/notify-send $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity)
if [[ $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity) -lt 10 ]]; then
${pkgs.libnotify}/bin/notify-send -u critical "Battery is low"
fi
'' }";
};
};
};
systemd.user.timers = {
battery-timer = {
Unit = {
Description = "Execute battery-notify every minute";
};
Install = {
# enable the service
# WantedBy = [ "default.target" ];
};
Timer = {
Unit = "battery-notify.service";
OnCalendar = "*-*-* *:*:00";
};
};
};
# services.darkman = {
# enable = true;
#
# lightModeScripts = {
# gtk-theme = ''
# ${pkgs.dconf}/bin/dconf write \
# /org/gnome/desktop/interface/color-scheme "'prefer-light'"
# '';
# # my-python-script = pkgs.writers.writePython3 "my-python-script" { } ''
# # print('Do something!')
# # '';
# };
#
# darkModeScripts = {
# gtk-theme = ''
# ${pkgs.dconf}/bin/dconf write \
# /org/gnome/desktop/interface/color-scheme "'prefer-dark'"
# '';
# # my-python-script = pkgs.writers.writePython3 "my-python-script" { } ''
# # print('Do something!')
# # '';
# };
#
# settings = {
# lat = 52.3;
# lng = 4.8;
# usegeoclue = true;
# };
# };
fonts.fontconfig.enable = true;
gtk = {
enable = true;
font = {
package = pkgs.inter;
name = "Inter";
};
theme = {
name = "Catppuccin-Latte-Compact-Pink-Light";
# name = "Catppuccin-Mocha-Compact-Pink-Dark";
package = pkgs.catppuccin-gtk.override {
accents = [ "pink" ];
size = "compact";
tweaks = [ ];
variant = "latte";
};
};
iconTheme = {
name = "Adwaita";
package = pkgs.gnome.adwaita-icon-theme;
};
cursorTheme = {
name = "Hackneyed";
package = pkgs.hackneyed;
};
};
qt = {
enable = true;
platformTheme.name = "kde";
};
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
plugins = [ pkgs.rofi-calc pkgs.rofi-emoji ];
# extraConfig = {
# "@theme" = "\"theme.rasi\"";
# };
theme = "theme.rasi";
};
programs.pistol.enable = true;
programs.lf =
(import ./lf.nix) { config = config; pkgs = pkgs; };
programs.fish = (import ./fish.nix) pkgs;
services.dunst.enable = true;
services.dunst.settings = import ./dunstconfig.nix;
services.kdeconnect.enable = true; services.kdeconnect.enable = true;
# programs.chromium = {
# enable = true;
# package = pkgs.ungoogled-chromium;
# dictioaries = [
# pkgs.hunspellDictsChromium.en_US
# pkgs.hunspellDictsChromium.fr_FR
# ];
# extensions = [
# { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # ublock origin
# { id = "hfjbmagddngcpeloejdejnfgbamkjaeg"; } # vimium C
# ];
# };
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
# --screenshots \
# --clock \
# --indicator \
# --indicator-radius 100 \
# --indicator-thickness 7 \
# --effect-blur 7x5 \
# --effect-vignette 0.5:0.5 \
# --ring-color bb00cc \
# --key-hl-color 880033 \
# --line-color 00000000 \
# --inside-color 00000088 \
# --separator-color 00000000 \
# --grace 2 \
# --fade-in 0.2
settings = {
screenshots = true;
# clock = true;
font = "Sans:bold";
disable-caps-lock-text = true;
effect-blur = "7x5";
text-color = "ffffff";
layout-text-color = "ffffff";
ring-color = "000000";
key-hl-color = "dddddd";
line-color = "00000000";
inside-color = "00000088";
separator-color = "00000000";
ring-clear-color = "00000000";
line-clear-color = "00000000";
inside-clear-color = "00000000";
text-clear-color = "00000000";
};
};
services.swayidle = {
enable = true;
events = [{
event = "before-sleep";
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
}
{
event = "after-resume";
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on";
}
{
event = "lock";
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
}];
timeouts = [{
timeout = 900;
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
}
{
timeout = 900;
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off";
}];
};
# services.swayidle = {
# enable = true;
# events = [
# { event = "after-resume"; command = "${pkgs.hyprland}/bin/hyprctl dispatch dpms on"; }
# ];
# timeouts = [{
# timeout = 10;
# command =
# "${pkgs.hyprland}/bin/hyprctl dispatch dpms off & swaylock";
# }];
#
# };
programs.kitty = {
enable = true;
font.name = "monospace";
font.size = 12;
settings = {
cursor_shape = "block";
default_pointer_shape = "arrow";
pointer_shape_when_dragging = "arrow";
enable_audio_bell = false;
placement_strategy = "top-left";
remember_window_size = false;
initial_window_width = 1300;
initial_window_height = 800;
confirm_os_window_close = 0;
resize_debounce_time = "0.1 0.1";
};
keybindings = {
"ctrl+shift+equal" = "change_font_size all +0.5";
"ctrl+shift+plus" = "change_font_size all +0.5";
"ctrl+shift+kp_add" = "change_font_size all +0.5";
"ctrl+shift+minus" = "change_font_size all -0.5";
"ctrl+shift+kp_subtract" = "change_font_size all -0.5";
};
shellIntegration.enableFishIntegration = true;
shellIntegration.mode = "no-cursor";
extraConfig = ''
include colors.conf
'';
};
programs.neovim = {
enable = true;
viAlias = true;
defaultEditor = true;
extraPackages = with pkgs; [
nodejs_22
gcc
ocamlPackages.lsp
ocamlPackages.ocamlformat
# rnix-lsp
cargo
];
};
programs.mpv = {
enable = true;
config = {
keep-open = "yes";
osd-bar = "no";
};
scripts = with pkgs.mpvScripts; [
uosc
thumbfast
mpris
];
};
programs.waybar.enable = true;
programs.firefox.enable = true;
programs.zathura.enable = true;
programs.tmux = {
enable = true;
historyLimit = 600000;
escapeTime = 10;
keyMode = "vi";
mouse = true;
extraConfig = ''
unbind-key 'Space'
bind-key 'Space' copy-mode
'';
};
programs.git = {
enable = true;
userName = user;
userEmail = "${user}@domain.xyz";
};
programs.home-manager.enable = true; programs.home-manager.enable = true;
} }

View file

@ -1,11 +1,26 @@
{ pkgs, flakes-pkgs }: { config, lib, pkgs, ... }: {
{ home.packages = with pkgs; [ xdg-desktop-portal-hyprland ];
home.sessionVariables = {
NIXOS_OZONE_WL = "1";
GDK_BACKEND = "wayland,x11";
QT_QPA_PLATFORM = "wayland;xcb";
CLUTTER_BACKEND = "wayland";
XDG_CURRENT_DESKTOP = "Hyprland";
XDG_SESSION_TYPE = "wayland";
XDG_SESSION_DESKTOP = "Hyprland";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
WLR_NO_HARDWARE_CURSORS = "1";
XCURSOR_SIZE = "24";
};
wayland.windowManager.hyprland = {
enable = true; enable = true;
xwayland.enable = true; xwayland.enable = true;
# plugins = [ # plugins = [
# "${flakes-pkgs.hyprfocus}/lib/libhyprfocus.so" # "${flakes-pkgs.hyprfocus}/lib/libhyprfocus.so"
# ]; # ];
systemd.enable = true; systemd.enable = true;
systemd.variables = [ systemd.variables = [
"GDK_BACKEND=wayland,x11" "GDK_BACKEND=wayland,x11"
@ -22,6 +37,9 @@
settings = { settings = {
debug = {
disable_logs = false;
};
input = { input = {
kb_layout = "fr"; kb_layout = "fr";
kb_variant = ""; kb_variant = "";
@ -53,7 +71,7 @@
decoration = { decoration = {
blur = { blur = {
enabled = false; enabled = true;
}; };
drop_shadow = true; drop_shadow = true;
shadow_range = 8; shadow_range = 8;
@ -89,11 +107,12 @@
mouse_move_enables_dpms = true; mouse_move_enables_dpms = true;
key_press_enables_dpms = true; key_press_enables_dpms = true;
# swallow_regex = "^(Alacritty)(.*)$"; # swallow_regex = "^(Alacritty)(.*)$";
# swallow_regex = "^(kitty)(.*)$"; swallow_regex = "^(kitty)(.*)$";
}; };
windowrule = "float, floating"; windowrule = "float, floating";
layerrule = "blur, waybar";
"$mod" = "SUPER"; "$mod" = "SUPER";
@ -114,7 +133,7 @@
"$mod SHIFT, Return, exec, kitty --working-directory \"$(window_dir)\"" "$mod SHIFT, Return, exec, kitty --working-directory \"$(window_dir)\""
"$mod, w, exec, firefox" "$mod, w, exec, firefox"
"$mod SHIFT, w, exec, firefox --private-window" "$mod SHIFT, w, exec, firefox --private-window"
"$mod SHIFT, s, exec, TMP=$(rofi -dmenu -p \"nix search\") && firefox \"https://search.nixos.org/packages?channel=unstable&query=$TMP\"" "$mod SHIFT, s, exec, TMP=$(rofi -dmenu -p \"nix search\" -l 0) && firefox \"https://search.nixos.org/packages?channel=unstable&query=$TMP\""
"$mod SHIFT, e, exec, $(rofi -dmenu -p \"command\" -l 0)" "$mod SHIFT, e, exec, $(rofi -dmenu -p \"command\" -l 0)"
"$mod, m, exec, kitty --class floating -e pulsemixer" "$mod, m, exec, kitty --class floating -e pulsemixer"
"$mod, d, exec, ~/.bin/runmenu" "$mod, d, exec, ~/.bin/runmenu"
@ -209,70 +228,71 @@
"$mod CTRL, Down, resizeactive, 0 60" "$mod CTRL, Down, resizeactive, 0 60"
]; ];
# plugin:hyprfocus { # plugin:hyprfocus {
# enabled = no; # enabled = no;
# #
# keyboard_focus_animation = shrink # keyboard_focus_animation = shrink
# mouse_focus_animation = flash # mouse_focus_animation = flash
# #
# bezier = bezIn, 0.5,0.0,1.0,0.5 # bezier = bezIn, 0.5,0.0,1.0,0.5
# bezier = bezOut, 0.0,0.5,0.5,1.0 # bezier = bezOut, 0.0,0.5,0.5,1.0
# #
# flash { # flash {
# flash_opacity = 0.7 # flash_opacity = 0.7
# #
# in_bezier = bezIn # in_bezier = bezIn
# in_speed = 0.5 # in_speed = 0.5
# #
# out_bezier = bezOut # out_bezier = bezOut
# out_speed = 3 # out_speed = 3
# } # }
# #
# shrink { # shrink {
# shrink_percentage = 0.8 # shrink_percentage = 0.8
# #
# in_bezier = bezIn # in_bezier = bezIn
# in_speed = 0.5 # in_speed = 0.5
# #
# out_bezier = bezOut # out_bezier = bezOut
# out_speed = 3 # out_speed = 3
# } # }
# } # }
# "plugin:hyprfocus" = { # "plugin:hyprfocus" = {
# enabled = true; # enabled = true;
# keyboard_focus_animation = "flash"; # keyboard_focus_animation = "flash";
# mouse_focus_animation = "nothing"; # mouse_focus_animation = "nothing";
# bezier = "bezIn, 0.5,0.0,1.0,0.5"; # bezier = "bezIn, 0.5,0.0,1.0,0.5";
# # bezier = "bezOut, 0.0,0.5,0.5,1.0"; # # bezier = "bezOut, 0.0,0.5,0.5,1.0";
# flash = { # flash = {
# shrink_percentage = 0.8; # shrink_percentage = 0.8;
# in_bezier = "bezIn"; # in_bezier = "bezIn";
# in_speed = 0.5; # in_speed = 0.5;
# out_bezier = "bezIn"; # out_bezier = "bezIn";
# out_speed = 3; # out_speed = 3;
# }; # };
# shrink = { # shrink = {
# shrink_percentage = 0.8; # shrink_percentage = 0.8;
# in_bezier = "bezIn"; # in_bezier = "bezIn";
# in_speed = 0.5; # in_speed = 0.5;
# out_bezier = "bezIn"; # out_bezier = "bezIn";
# out_speed = 3; # out_speed = 3;
# }; # };
# }; # };
}; };
extraConfig = extraConfig =
let swaybgScript = (pkgs.writers.writeFish "display-background" '' let
swaybgScript = (pkgs.writers.writeFish "display-background" ''
# find background image: only file in ~/.local/share/bg # find background image: only file in ~/.local/share/bg
set -l bg (find ~/.local/share/bg -type l) set -l bg (find ~/.local/share/bg -type l)
@ -295,8 +315,9 @@
# env = XDG_SESSION_DESKTOP,Hyprland # env = XDG_SESSION_DESKTOP,Hyprland
# env = QT_AUTO_SCREEN_SCALE_FACTOR,1 # env = QT_AUTO_SCREEN_SCALE_FACTOR,1
monitor=,highrr,auto,1 monitor=,highrr,auto,1,
monitor=HDMI-A-1,preferred,auto,1,mirror,eDP-1 monitor=Unknown-1,disable
# monitor=HDMI-A-1,preferred,auto,1,mirror,eDP-1
exec = pkill swaybg; ${swaybgScript} exec = pkill swaybg; ${swaybgScript}
exec = pkill waybar; ${pkgs.waybar}/bin/waybar exec = pkill waybar; ${pkgs.waybar}/bin/waybar
@ -323,4 +344,5 @@
bind = ,escape, submap, reset bind = ,escape, submap, reset
submap = reset submap = reset
''; '';
};
} }

2
lf.nix
View file

@ -1,5 +1,6 @@
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
programs.lf = {
enable = true; enable = true;
commands = { commands = {
trash = ''''${{ trash = ''''${{
@ -192,4 +193,5 @@
setlocal ${config.xdg.userDirs.download} reverse setlocal ${config.xdg.userDirs.download} reverse
setlocal ${config.xdg.userDirs.download} set info size:time setlocal ${config.xdg.userDirs.download} set info size:time
''; '';
};
} }

60
terminal-software.nix Normal file
View file

@ -0,0 +1,60 @@
{ lib, config, pkgs, ... }: {
home.packages = with pkgs; [
entr
trash-cli
nix-output-monitor
unzip
gnumake
pandoc
htop
ffmpeg
wget
dtrx
];
programs.neovim = {
enable = true;
viAlias = true;
defaultEditor = true;
extraPackages = with pkgs; [
nodejs_22
gcc
ocamlPackages.lsp
ocamlPackages.ocamlformat
cargo
nixd
nixpkgs-fmt
lua-language-server
];
};
programs.tmux = {
enable = true;
historyLimit = 600000;
escapeTime = 10;
keyMode = "vi";
mouse = true;
extraConfig = ''
unbind-key 'Space'
bind-key 'Space' copy-mode
set -g status-right "#{net_speed} #{cpu_percentage}"
run-shell ${pkgs.tmuxPlugins.net-speed}/share/tmux-plugins/net-speed/net_speed.tmux
run-shell ${pkgs.tmuxPlugins.cpu}/share/tmux-plugins/cpu/cpu.tmux
'';
plugins = with pkgs.tmuxPlugins; [ net-speed ];
};
programs.git = {
enable = true;
userName = config.home.username;
userEmail = "${config.home.username}@domain.xyz";
};
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
programs.pistol.enable = true;
}

238
ui.nix Normal file
View file

@ -0,0 +1,238 @@
{ lib, config, pkgs, ... }:
{
imports = [
./bar.nix
./hyprland.nix
./gui-software.nix
];
home.packages = with pkgs; [
gentium
(nerdfonts.override { fonts = [ "CascadiaCode" "Noto" "Hack" ]; })
inter
emojione
bluetuith
keepmenu
rofimoji
libnotify
wtype
wl-clipboard
pamixer
pulsemixer
(catppuccin-gtk.override {
accents = [ "pink" ];
size = "compact";
tweaks = [ "black" ];
variant = "mocha";
})
];
xsession.enable = true;
fonts.fontconfig.enable = true;
fonts.fontconfig.defaultFonts = {
serif = [ "Gentium Plus" ];
sansSerif = [ "Inter" ];
monospace = [ "CaskaydiaCove Nerd Font Mono" ];
# monospace = [ "Hack Nerd Font Mono" ];
emoji = [ "Noto Color Emoji" "OpenMoji Color" ];
};
programs.kitty = {
enable = true;
font.name = "monospace";
font.size = 12;
settings = {
cursor_shape = "block";
default_pointer_shape = "arrow";
pointer_shape_when_dragging = "arrow";
enable_audio_bell = false;
placement_strategy = "top-left";
remember_window_size = false;
initial_window_width = 1300;
initial_window_height = 800;
confirm_os_window_close = 0;
resize_debounce_time = "0.1 0.1";
};
keybindings = {
"ctrl+shift+equal" = "change_font_size all +0.5";
"ctrl+shift+plus" = "change_font_size all +0.5";
"ctrl+shift+kp_add" = "change_font_size all +0.5";
"ctrl+shift+minus" = "change_font_size all -0.5";
"ctrl+shift+kp_subtract" = "change_font_size all -0.5";
};
shellIntegration.enableFishIntegration = true;
shellIntegration.mode = "no-cursor";
extraConfig = ''
include colors.conf
'';
};
services.swayidle = {
enable = true;
events = [
{
event = "before-sleep";
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
}
{
event = "after-resume";
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on";
}
{
event = "lock";
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
}
];
timeouts = [
{
timeout = 900;
command = "${config.programs.swaylock.package}/bin/swaylock -defF";
}
{
timeout = 900;
command = "${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off";
}
];
};
programs.swaylock = {
enable = true;
package = pkgs.swaylock-effects;
# --screenshots \
# --clock \
# --indicator \
# --indicator-radius 100 \
# --indicator-thickness 7 \
# --effect-blur 7x5 \
# --effect-vignette 0.5:0.5 \
# --ring-color bb00cc \
# --key-hl-color 880033 \
# --line-color 00000000 \
# --inside-color 00000088 \
# --separator-color 00000000 \
# --grace 2 \
# --fade-in 0.2
settings = {
screenshots = true;
# clock = true;
font = "Sans:bold";
disable-caps-lock-text = true;
effect-blur = "7x5";
text-color = "ffffff";
layout-text-color = "ffffff";
ring-color = "000000";
key-hl-color = "dddddd";
line-color = "00000000";
inside-color = "00000088";
separator-color = "00000000";
ring-clear-color = "00000000";
line-clear-color = "00000000";
inside-clear-color = "00000000";
text-clear-color = "00000000";
};
};
services.dunst.enable = true;
services.dunst.settings = {
global = {
geometry = "750x5-20+20";
horizontal_padding = 8;
indicate_hidden = true;
shrink = true;
transparency = 20;
separator_height = 2;
frame_width = 3;
frame_color = "#000000";
font = "Monospace 11";
alignment = "left";
show_age_threshold = 60;
background = "#ffffff";
foreground = "#000000";
};
urgency_critical = {
background = "#ff9999";
};
};
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
plugins = [ pkgs.rofi-calc pkgs.rofi-emoji ];
theme = "theme.rasi";
};
qt = {
enable = true;
platformTheme.name = "kde";
};
gtk = {
enable = true;
font = {
package = pkgs.inter;
name = "Inter";
};
theme = {
name = "Catppuccin-Latte-Compact-Pink-Light";
# name = "Catppuccin-Mocha-Compact-Pink-Dark";
package = pkgs.catppuccin-gtk.override {
accents = [ "pink" ];
size = "compact";
tweaks = [ ];
variant = "latte";
};
};
iconTheme = {
name = "Adwaita";
package = pkgs.gnome.adwaita-icon-theme;
};
cursorTheme = {
name = "Hackneyed";
package = pkgs.hackneyed;
};
};
systemd.user.services = {
battery-notify = {
Unit = {
Description = "Send notification when battery is low";
Wants = "battery-timer.timer";
};
Service = {
Type = "oneshot";
ExecStart = "${pkgs.writers.writeBash "battery-notify" ''
if [[ $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity) -lt 10 ]]; then
${pkgs.libnotify}/bin/notify-send -u critical "Battery is low"
fi
'' }";
};
};
};
systemd.user.timers = {
battery-timer = {
Unit = {
Description = "Execute battery-notify every minute";
};
Install = {
# enable the service
# WantedBy = [ "default.target" ];
};
Timer = {
Unit = "battery-notify.service";
OnCalendar = "*-*-* *:*:00";
};
};
};
}

50
waybar.css Normal file
View file

@ -0,0 +1,50 @@
* {
font-family: "Jost", "Material Design Icons", Monospace;
font-size: 16px;
font-weight: bold;
}
#tray,
label.module {
padding: 0px 8px;
}
window#waybar {
background: rgba(255, 255, 255, .3);
}
#controls,
#submap,
#network,
#disks,
#hardware,
#tray,
#clock {
background: rgba(0, 0, 0, .8);
color: white;
margin: 0px 5px;
border-radius: 0px;
}
#workspaces button {
padding: 0;
color: #888888;
}
#workspaces button.active {
color: #ffffff;
}
#submap {
background: #000000;
border: 1px solid #ffffff;
color: #ffffff;
}
#window {
color: #ffffff;
text-shadow: 1px 0 #000, -1px 0 #000, 0 1px #000, 0 -1px #000,
1px 1px #000, -1px -1px #000, 1px -1px #000, -1px 1px #000;
background: rgba(0, 0, 0, 0);
border: 0
}