cleanup mac:
92
flake.nix
@@ -279,6 +279,36 @@
|
|||||||
inputs.nixpkgs.follows = "desktop-nixpkgs";
|
inputs.nixpkgs.follows = "desktop-nixpkgs";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#####################################################
|
||||||
|
# Macbook Nix #
|
||||||
|
#####################################################
|
||||||
|
|
||||||
|
# nixpgs
|
||||||
|
mac-nixpkgs = {
|
||||||
|
url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||||
|
};
|
||||||
|
|
||||||
|
mac-nixos-apple-silicon = {
|
||||||
|
url = "github:nix-community/nixos-apple-silicon";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home Manager
|
||||||
|
mac-home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
inputs.nixpkgs.follows = "mac-nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Impermenance
|
||||||
|
mac-impermanence = {
|
||||||
|
url = "github:nix-community/impermanence";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Sops-nix
|
||||||
|
mac-sops-nix = {
|
||||||
|
url = "github:Mic92/sops-nix";
|
||||||
|
inputs.nixpkgs.follows = "mac-nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
#####################################################
|
#####################################################
|
||||||
# Common #
|
# Common #
|
||||||
#####################################################
|
#####################################################
|
||||||
@@ -355,6 +385,13 @@
|
|||||||
# MacBook
|
# MacBook
|
||||||
nix-darwin,
|
nix-darwin,
|
||||||
|
|
||||||
|
# MacBook Nix
|
||||||
|
mac-nixpkgs,
|
||||||
|
mac-nixos-apple-silicon,
|
||||||
|
mac-home-manager,
|
||||||
|
mac-impermanence,
|
||||||
|
mac-sops-nix,
|
||||||
|
|
||||||
# Common
|
# Common
|
||||||
nixpkgs-unstable,
|
nixpkgs-unstable,
|
||||||
nixpkgs-stable,
|
nixpkgs-stable,
|
||||||
@@ -680,6 +717,61 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# MacBook Nix
|
||||||
|
"macbook-pro-nixos" = mac-nixpkgs.lib.nixosSystem {
|
||||||
|
system = "aarch64-linux";
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs outputs;
|
||||||
|
};
|
||||||
|
modules = [
|
||||||
|
./hosts/base/base-nogui
|
||||||
|
./hosts/base/base-gui
|
||||||
|
./hosts/mac-nixos/configuration.nix
|
||||||
|
|
||||||
|
./modules/desktop-environments/hyprland
|
||||||
|
|
||||||
|
# Apple Silicon Support
|
||||||
|
mac-nixos-apple-silicon.nixosModules.default
|
||||||
|
|
||||||
|
# Impermanence
|
||||||
|
mac-impermanence.nixosModules.impermanence
|
||||||
|
./modules/impermanence
|
||||||
|
|
||||||
|
mac-sops-nix.nixosModules.sops
|
||||||
|
|
||||||
|
# Home Manager
|
||||||
|
mac-home-manager.nixosModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
home-manager.users.matt =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./hosts/mac/home.nix
|
||||||
|
./modules/home/defaults.nix
|
||||||
|
./modules/home/git.nix
|
||||||
|
./modules/home/gnome.nix
|
||||||
|
./modules/home/librewolf.nix
|
||||||
|
./modules/home/office.nix
|
||||||
|
./modules/home/shell.nix
|
||||||
|
./modules/home/vscode.nix
|
||||||
|
mac-sops-nix.homeManagerModules.sops
|
||||||
|
];
|
||||||
|
};
|
||||||
|
home-manager.users.root =
|
||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./modules/root-user
|
||||||
|
mac-sops-nix.homeManagerModules.sops
|
||||||
|
];
|
||||||
|
};
|
||||||
|
home-manager.backupFileExtension = "backup";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
# home assistant
|
# home assistant
|
||||||
# "jallen-hass" = nixpkgs-unstable.lib.nixosSystem {
|
# "jallen-hass" = nixpkgs-unstable.lib.nixosSystem {
|
||||||
# system = "x86_64-linux";
|
# system = "x86_64-linux";
|
||||||
|
|||||||
@@ -10,15 +10,13 @@ in
|
|||||||
imports = [
|
imports = [
|
||||||
# Include the results of the hardware scan.
|
# Include the results of the hardware scan.
|
||||||
./hardware-configuration.nix
|
./hardware-configuration.nix
|
||||||
../default.nix
|
|
||||||
# ./gnome
|
|
||||||
# ./cosmic
|
|
||||||
];
|
];
|
||||||
|
|
||||||
hardware.asahi = {
|
hardware.asahi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
useExperimentalGPUDriver = true;
|
useExperimentalGPUDriver = true;
|
||||||
peripheralFirmwareDirectory = ./firmware;
|
peripheralFirmwareDirectory = ./firmware;
|
||||||
|
# extractPeripheralFirmware = false;
|
||||||
setupAsahiSound = true;
|
setupAsahiSound = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -39,7 +37,7 @@ in
|
|||||||
|
|
||||||
# Networking configs
|
# Networking configs
|
||||||
networking = {
|
networking = {
|
||||||
hostName = "mac-nixos";
|
hostName = "macbook-pro-nixos";
|
||||||
|
|
||||||
# Enable Network Manager
|
# Enable Network Manager
|
||||||
networkmanager = {
|
networkmanager = {
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
specialisation.cosmic.configuration = {
|
|
||||||
services = {
|
|
||||||
desktopManager.cosmic.enable = true;
|
|
||||||
displayManager.cosmic-greeter.enable = true;
|
|
||||||
|
|
||||||
# disable plasma
|
|
||||||
displayManager.sddm.enable = false;
|
|
||||||
displayManager.sddm.wayland.enable = false;
|
|
||||||
desktopManager.plasma6.enable = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
specialisation.gnome.configuration = {
|
|
||||||
|
|
||||||
|
|
||||||
home-manager.users.matt = import ./home.nix;
|
|
||||||
|
|
||||||
services = {
|
|
||||||
desktopManager.gnome.enable = true;
|
|
||||||
|
|
||||||
# Enable Desktop Environment.
|
|
||||||
displayManager = {
|
|
||||||
gdm.enable = true;
|
|
||||||
gdm.wayland = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
displayManager.defaultSession = "gnome";
|
|
||||||
|
|
||||||
# Enable Flatpak
|
|
||||||
flatpak.enable = false;
|
|
||||||
|
|
||||||
# disable plasma
|
|
||||||
displayManager.sddm.enable = false;
|
|
||||||
displayManager.sddm.wayland.enable = false;
|
|
||||||
desktopManager.plasma6.enable = false;
|
|
||||||
};
|
|
||||||
|
|
||||||
# xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
{ lib, pkgs, ... }:
|
|
||||||
{
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nixfmt-rfc-style
|
|
||||||
deadnix
|
|
||||||
gdm
|
|
||||||
gnomeExtensions.dash-to-dock
|
|
||||||
gnomeExtensions.arcmenu
|
|
||||||
gnomeExtensions.appindicator
|
|
||||||
gnomeExtensions.tiling-assistant
|
|
||||||
gnome-tweaks
|
|
||||||
papirus-icon-theme
|
|
||||||
];
|
|
||||||
|
|
||||||
dconf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"org/gnome/desktop/interface".clock-format = "12h";
|
|
||||||
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
|
||||||
"org/gnome/desktop/interface".enable-hot-corners = false;
|
|
||||||
"org/gnome/desktop/interface".font-antialiasing = "grayscale";
|
|
||||||
"org/gnome/desktop/interface".font-hinting = "slight";
|
|
||||||
"org/gnome/desktop/interface".icon-theme = lib.mkDefault "Papirus-Dark";
|
|
||||||
"org/gnome/desktop/peripherals/mouse".accel-profile = "flat";
|
|
||||||
"org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true;
|
|
||||||
"org/gnome/desktop/peripherals/touchpad".tap-to-click = true;
|
|
||||||
"org/gnome/mutter".experimental-features = [
|
|
||||||
"scale-monitor-framebuffer"
|
|
||||||
"variable-refresh-rate"
|
|
||||||
];
|
|
||||||
"org/gnome/tweaks".show-extensions-notice = false;
|
|
||||||
"org/gnome/shell".enabled-extensions = [
|
|
||||||
"appindicatorsupport@rgcjonas.gmail.com"
|
|
||||||
"arcmenu@arcmenu.com"
|
|
||||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
|
||||||
"dash-to-dock@micxgx.gmail.com"
|
|
||||||
"tiling-assistant@leleat-on-github"
|
|
||||||
];
|
|
||||||
"org/gtk/settings/file-chooser".clock-format = "12h";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,117 +1,7 @@
|
|||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
let
|
|
||||||
gtkThemeSize = "compact";
|
|
||||||
gtkThemeAccent = "all";
|
|
||||||
gtkThemeVariant = "nord";
|
|
||||||
gtkThemeColor = "dark";
|
|
||||||
gtkTheme = "Colloid-Dark-Compact-Nord";
|
|
||||||
gtkThemePkg = pkgs.colloid-gtk-theme.override {
|
|
||||||
sizeVariants = [ gtkThemeSize ];
|
|
||||||
colorVariants = [ gtkThemeColor ];
|
|
||||||
themeVariants = [ gtkThemeAccent ];
|
|
||||||
tweaks = [ gtkThemeVariant ];
|
|
||||||
};
|
|
||||||
iconThemeColor = "dark"; # "" "light" "dark"
|
|
||||||
# iconThemeVariant = "default"; # "" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey"
|
|
||||||
iconThemeScheme = "nord"; # "" "nord" "dracula" "gruvbox" "everforest" "catppuccin"
|
|
||||||
iconTheme = "Colloid-${iconThemeScheme}-${iconThemeColor}";
|
|
||||||
iconThemePkg = pkgs.colloid-icon-theme.override { schemeVariants = [ iconThemeScheme ]; };
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
|
|
||||||
home.username = "matt";
|
home.username = "matt";
|
||||||
home.homeDirectory = "/home/matt";
|
home.homeDirectory = "/home/matt";
|
||||||
home.stateVersion = "23.11";
|
home.stateVersion = "23.11";
|
||||||
programs.home-manager.enable = true;
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
fish.enable = false;
|
|
||||||
java.enable = true;
|
|
||||||
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
syntaxHighlighting.enable = true;
|
|
||||||
|
|
||||||
shellAliases = {
|
|
||||||
ll = "ls -alh";
|
|
||||||
update = "sudo nixos-rebuild switch";
|
|
||||||
nas-update = "nixos-rebuild switch --use-remote-sudo --target-host admin@jallen-nas.local --build-host localhost --flake ~/nix-config/flake.nix#jallen-nas";
|
|
||||||
nas-ssh = "ssh admin@jallen-nas.local";
|
|
||||||
};
|
|
||||||
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
plugins = [ "git" ];
|
|
||||||
theme = "fishy";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "mjallen18";
|
|
||||||
userEmail = "matt.l.jallen@gmail.com";
|
|
||||||
aliases = {
|
|
||||||
co = "checkout";
|
|
||||||
ci = "commit";
|
|
||||||
cia = "commit --amend";
|
|
||||||
s = "status";
|
|
||||||
st = "status";
|
|
||||||
b = "branch";
|
|
||||||
# p = "pull --rebase";
|
|
||||||
pu = "push";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
apple-cursor
|
|
||||||
colloid-icon-theme
|
|
||||||
colloid-gtk-theme
|
|
||||||
nixfmt-rfc-style
|
|
||||||
deadnix
|
|
||||||
papirus-icon-theme
|
|
||||||
gnomeExtensions.dash-to-dock
|
|
||||||
gnomeExtensions.arcmenu
|
|
||||||
gnomeExtensions.appindicator
|
|
||||||
gnomeExtensions.tiling-assistant
|
|
||||||
gnome-tweaks
|
|
||||||
iconThemePkg
|
|
||||||
gtkThemePkg
|
|
||||||
orca-slicer
|
|
||||||
vesktop
|
|
||||||
vscodium
|
|
||||||
];
|
|
||||||
|
|
||||||
dconf = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
"org/gnome/desktop/interface".clock-format = "12h";
|
|
||||||
"org/gnome/desktop/interface".color-scheme = "prefer-dark";
|
|
||||||
"org/gnome/desktop/interface".cursor-theme = "macOS";
|
|
||||||
"org/gnome/desktop/interface".enable-hot-corners = false;
|
|
||||||
"org/gnome/desktop/interface".font-antialiasing = "grayscale";
|
|
||||||
"org/gnome/desktop/interface".font-hinting = "slight";
|
|
||||||
"org/gnome/desktop/interface".icon-theme = "Colloid-Nord-Dark";
|
|
||||||
"org/gnome/desktop/interface".gtk-theme = "Colloid-Dark";
|
|
||||||
"org/gnome/desktop/peripherals/mouse".accel-profile = "flat";
|
|
||||||
"org/gnome/desktop/peripherals/touchpad".two-finger-scrolling-enabled = true;
|
|
||||||
"org/gnome/desktop/peripherals/touchpad".tap-to-click = true;
|
|
||||||
"org/gnome/mutter".experimental-features = [
|
|
||||||
"scale-monitor-framebuffer"
|
|
||||||
"variable-refresh-rate"
|
|
||||||
];
|
|
||||||
"org/gnome/tweaks".show-extensions-notice = false;
|
|
||||||
"org/gnome/shell/extensions/user-theme".name = "Colloid-Dark";
|
|
||||||
"org/gnome/shell".enabled-extensions = [
|
|
||||||
"appindicatorsupport@rgcjonas.gmail.com"
|
|
||||||
"user-theme@gnome-shell-extensions.gcampax.github.com"
|
|
||||||
"dash-to-dock@micxgx.gmail.com"
|
|
||||||
"tiling-assistant@leleat-on-github"
|
|
||||||
];
|
|
||||||
"org/gtk/settings/file-chooser".clock-format = "12h";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +0,0 @@
|
|||||||
let configDir = ./config;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
home.file = {
|
|
||||||
".config/wallpapers".source = "${configDir}/wallpapers";
|
|
||||||
".config/kitty/macchiato.conf".source = "${configDir}/kitty/macchiato.conf";
|
|
||||||
".config/wlogout".source = "${configDir}/wlogout"; #
|
|
||||||
".config/waybar/scripts".source = "${configDir}/waybar/scripts";
|
|
||||||
".config/btop/themes/catppuccin_macchiato.theme".source = "${configDir}/btop/themes/catppuccin_macchiato.theme";
|
|
||||||
".config/nwg-drawer".source = "${configDir}/nwg-drawer";
|
|
||||||
".config/nwg-panel".source = "${configDir}/nwg-panel";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
{
|
|
||||||
programs.btop = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
color_theme = "/home/matt/.config/btop/themes/catppuccin_macchiato.theme";
|
|
||||||
theme_background = true;
|
|
||||||
truecolor = true;
|
|
||||||
force_tty = false;
|
|
||||||
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty";
|
|
||||||
vim_keys = true;
|
|
||||||
rounded_corners = true;
|
|
||||||
graph_symbol = "braille";
|
|
||||||
graph_symbol_cpu = "default";
|
|
||||||
graph_symbol_mem = "default";
|
|
||||||
graph_symbol_net = "default";
|
|
||||||
graph_symbol_proc = "default";
|
|
||||||
shown_boxes = "cpu mem net proc";
|
|
||||||
update_ms = 2000;
|
|
||||||
proc_sorting = "cpu lazy";
|
|
||||||
proc_reversed = false;
|
|
||||||
proc_tree = false;
|
|
||||||
proc_colors = true;
|
|
||||||
proc_gradient = true;
|
|
||||||
proc_per_core = false;
|
|
||||||
proc_mem_bytes = true;
|
|
||||||
proc_cpu_graphs = true;
|
|
||||||
proc_info_smaps = false;
|
|
||||||
proc_left = false;
|
|
||||||
proc_filter_kernel = false;
|
|
||||||
cpu_graph_upper = "total";
|
|
||||||
cpu_graph_lower = "total";
|
|
||||||
cpu_invert_lower = true;
|
|
||||||
cpu_single_graph = false;
|
|
||||||
cpu_bottom = false;
|
|
||||||
show_uptime = true;
|
|
||||||
check_temp = true;
|
|
||||||
cpu_sensor = "Auto";
|
|
||||||
show_coretemp = true;
|
|
||||||
cpu_core_map = "";
|
|
||||||
temp_scale = "celsius";
|
|
||||||
base_10_sizes = false;
|
|
||||||
show_cpu_freq = true;
|
|
||||||
clock_format = "%X";
|
|
||||||
background_update = true;
|
|
||||||
custom_cpu_name = "";
|
|
||||||
disks_filter = "";
|
|
||||||
mem_graphs = true;
|
|
||||||
mem_below_net = false;
|
|
||||||
zfs_arc_cached = true;
|
|
||||||
show_swap = true;
|
|
||||||
swap_disk = true;
|
|
||||||
show_disks = true;
|
|
||||||
only_physical = true;
|
|
||||||
use_fstab = true;
|
|
||||||
zfs_hide_datasets = false;
|
|
||||||
disk_free_priv = false;
|
|
||||||
show_io_stat = true;
|
|
||||||
io_mode = false;
|
|
||||||
io_graph_combined = false;
|
|
||||||
io_graph_speeds = "";
|
|
||||||
net_download = 100;
|
|
||||||
net_upload = 100;
|
|
||||||
net_auto = true;
|
|
||||||
net_sync = true;
|
|
||||||
net_iface = "";
|
|
||||||
show_battery = true;
|
|
||||||
selected_battery = "Auto";
|
|
||||||
log_level = "WARNING";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
theme[main_bg]="#24273A"
|
|
||||||
theme[main_fg]="#CAD3F5"
|
|
||||||
theme[title]="#CAD3F5"
|
|
||||||
theme[hi_fg]="#8AADF4"
|
|
||||||
theme[selected_bg]="#494D64"
|
|
||||||
theme[selected_fg]="#8AADF4"
|
|
||||||
theme[inactive_fg]="#8087A2"
|
|
||||||
theme[graph_text]="#F4DBD6"
|
|
||||||
theme[meter_bg]="#494D64"
|
|
||||||
theme[proc_misc]="#F4DBD6"
|
|
||||||
theme[cpu_box]="#7DC4E4"
|
|
||||||
theme[mem_box]="#A6DA95"
|
|
||||||
theme[net_box]="#C6A0F6"
|
|
||||||
theme[proc_box]="#F0C6C6"
|
|
||||||
theme[div_line]="#6E738D"
|
|
||||||
theme[temp_start]="#EED49F"
|
|
||||||
theme[temp_mid]="#F5A97F"
|
|
||||||
theme[temp_end]="#ED8796"
|
|
||||||
theme[cpu_start]="#7DC4E4"
|
|
||||||
theme[cpu_mid]="#91D7E3"
|
|
||||||
theme[cpu_end]="#8BD5CA"
|
|
||||||
theme[free_start]="#8BD5CA"
|
|
||||||
theme[free_mid]="#8BD5CA"
|
|
||||||
theme[free_end]="#A6DA95"
|
|
||||||
theme[cached_start]="#F5BDE6"
|
|
||||||
theme[cached_mid]="#F5BDE6"
|
|
||||||
theme[cached_end]="#C6A0F6"
|
|
||||||
theme[available_start]="#F4DBD6"
|
|
||||||
theme[available_mid]="#F0C6C6"
|
|
||||||
theme[available_end]="#F0C6C6"
|
|
||||||
theme[used_start]="#F5A97F"
|
|
||||||
theme[used_mid]="#F5A97F"
|
|
||||||
theme[used_end]="#ED8796"
|
|
||||||
theme[download_start]="#B7BDF8"
|
|
||||||
theme[download_mid]="#B7BDF8"
|
|
||||||
theme[download_end]="#C6A0F6"
|
|
||||||
theme[upload_start]="#B7BDF8"
|
|
||||||
theme[upload_mid]="#B7BDF8"
|
|
||||||
theme[upload_end]="#C6A0F6"
|
|
||||||
theme[process_start]="#7DC4E4"
|
|
||||||
theme[process_mid]="#91D7E3"
|
|
||||||
theme[process_end]="#8BD5CA"
|
|
||||||
@@ -1,271 +0,0 @@
|
|||||||
{
|
|
||||||
wayland.windowManager.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
"$mod" = "SUPER";
|
|
||||||
|
|
||||||
# Mouse
|
|
||||||
# mouse_[up|down] - scroll wheel
|
|
||||||
# middle_mouse - 274
|
|
||||||
# thumb_up - 276
|
|
||||||
# thumb_down - 275
|
|
||||||
|
|
||||||
# l -> locked, will also work when an input inhibitor (e.g. a lockscreen) is active.
|
|
||||||
# r -> release, will trigger on release of a key.
|
|
||||||
# e -> repeat, will repeat when held.
|
|
||||||
# n -> non-consuming, key/mouse events will be passed to the active window in addition to triggering the dispatcher.
|
|
||||||
# m -> mouse, see below.
|
|
||||||
# t -> transparent, cannot be shadowed by other binds.
|
|
||||||
# i -> ignore mods, will ignore modifiers.
|
|
||||||
# s -> separate, will arbitrarily combine keys between each mod/key, see [Keysym combos](#keysym-combos) above.
|
|
||||||
# d -> has description, will allow you to write a description for your bind.
|
|
||||||
# p -> bypasses the app's requests to inhibit keybinds.
|
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Binds/
|
|
||||||
# https://wiki.hyprland.org/Configuring/Binds/#mouse-buttons
|
|
||||||
|
|
||||||
bind = [
|
|
||||||
"$mod, Return, exec, kitty"
|
|
||||||
"$mod, Q, killactive, "
|
|
||||||
"$mod, mouse:274, killactive, "
|
|
||||||
"$mod, M, exec, wlogout --protocol layer-shell"
|
|
||||||
"$mod, E, exec, nautilus"
|
|
||||||
"$mod, V, togglefloating, "
|
|
||||||
"$mod, D, exec, nwg-drawer -fm nautilus -term kitty"
|
|
||||||
"$mod, P, pseudo, "# dwindle
|
|
||||||
"$mod, S, togglesplit, "# dwindle
|
|
||||||
"$mod SHIFT, Q, exec, hyprlock"
|
|
||||||
", PRINT, exec, hyprshot -m region --clipboard-only"
|
|
||||||
"$mod,F,exec,hyprctl dispatch fullscreen active"
|
|
||||||
|
|
||||||
# alt-tab between workspaces on active monitor
|
|
||||||
"ALT, Tab, workspace, m+1"
|
|
||||||
"ALT SHIFT, Tab, workspace, m-1"
|
|
||||||
|
|
||||||
"$mod, h, movefocus, l"
|
|
||||||
"$mod, l, movefocus, r"
|
|
||||||
"$mod, k, movefocus, u"
|
|
||||||
"$mod, j, movefocus, d"
|
|
||||||
|
|
||||||
"$mod, 1, workspace, 1"
|
|
||||||
"$mod, 2, workspace, 2"
|
|
||||||
"$mod, 3, workspace, 3"
|
|
||||||
"$mod, 4, workspace, 4"
|
|
||||||
"$mod, 5, workspace, 5"
|
|
||||||
"$mod, 6, workspace, 6"
|
|
||||||
"$mod, 7, workspace, 7"
|
|
||||||
"$mod, 8, workspace, 8"
|
|
||||||
"$mod, 9, workspace, 9"
|
|
||||||
"$mod, 0, workspace, 10"
|
|
||||||
|
|
||||||
"$mod SHIFT, 1, movetoworkspace, 1"
|
|
||||||
"$mod SHIFT, 2, movetoworkspace, 2"
|
|
||||||
"$mod SHIFT, 3, movetoworkspace, 3"
|
|
||||||
"$mod SHIFT, 4, movetoworkspace, 4"
|
|
||||||
"$mod SHIFT, 5, movetoworkspace, 5"
|
|
||||||
"$mod SHIFT, 6, movetoworkspace, 6"
|
|
||||||
"$mod SHIFT, 7, movetoworkspace, 7"
|
|
||||||
"$mod SHIFT, 8, movetoworkspace, 8"
|
|
||||||
"$mod SHIFT, 9, movetoworkspace, 9"
|
|
||||||
"$mod SHIFT, 0, movetoworkspace, discord"
|
|
||||||
|
|
||||||
"$mod CTRL, l, resizeactive, 10 0"
|
|
||||||
"$mod CTRL, h, resizeactive, -10 0"
|
|
||||||
"$mod CTRL, k, resizeactive, 0 -10"
|
|
||||||
"$mod CTRL, j, resizeactive, 0 10"
|
|
||||||
|
|
||||||
"$mod SHIFT, l, movewindow, r"
|
|
||||||
"$mod SHIFT, h, movewindow, l"
|
|
||||||
"$mod SHIFT, k, movewindow, u"
|
|
||||||
"$mod SHIFT, j, movewindow, d"
|
|
||||||
|
|
||||||
"$mod, b, exec, firefox"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindm = [
|
|
||||||
# Move/resize windows with mod + LMB/RMB and dragging
|
|
||||||
"$mod, mouse:272, movewindow"
|
|
||||||
"$mod, mouse:273, resizewindow"
|
|
||||||
# middle mouse will grab a window, mod + middle mouse will close it
|
|
||||||
", mouse:274, movewindow"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindel =[
|
|
||||||
", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+"
|
|
||||||
", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
|
|
||||||
];
|
|
||||||
|
|
||||||
bindl = [
|
|
||||||
", XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
|
|
||||||
", XF86AudioPlay, exec, playerctl play-pause"
|
|
||||||
", XF86AudioPrev, exec, playerctl previous"
|
|
||||||
", XF86AudioNext, exec, playerctl next"
|
|
||||||
];
|
|
||||||
|
|
||||||
monitor = [
|
|
||||||
"DP-1,3840x2160@240.00000,0x0,1"
|
|
||||||
"DP-2,3840x2160@59.99700,3840x0,1"
|
|
||||||
];
|
|
||||||
|
|
||||||
general = {
|
|
||||||
gaps_in = 5;
|
|
||||||
gaps_out = 10;
|
|
||||||
border_size = 1;
|
|
||||||
"col.active_border" = "rgb(8aadf4) rgb(24273A) rgb(24273A) rgb(8aadf4) 45deg";
|
|
||||||
"col.inactive_border" = "rgb(24273A) rgb(24273A) rgb(24273A) rgb(24273A) 45deg";
|
|
||||||
layout = "dwindle";
|
|
||||||
allow_tearing = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
decoration = {
|
|
||||||
rounding = 10;
|
|
||||||
blur = {
|
|
||||||
enabled = true;
|
|
||||||
size = 2;
|
|
||||||
passes = 2;
|
|
||||||
new_optimizations = true;
|
|
||||||
xray = false;
|
|
||||||
};
|
|
||||||
drop_shadow = "yes";
|
|
||||||
shadow_range = 4;
|
|
||||||
shadow_render_power = "3";
|
|
||||||
"col.shadow" = "rgba(1a1a1aee)";
|
|
||||||
};
|
|
||||||
|
|
||||||
animations = {
|
|
||||||
enabled = "yes";
|
|
||||||
bezier = [
|
|
||||||
"overshot, 0.05, 0.9, 0.1, 1.05"
|
|
||||||
"smoothOut, 0.36, 0, 0.66, -0.56"
|
|
||||||
"smoothIn, 0.25, 1, 0.5, 1"
|
|
||||||
];
|
|
||||||
animation = [
|
|
||||||
"windows, 1, 5, overshot, slide"
|
|
||||||
"windowsOut, 1, 4, smoothOut, slide"
|
|
||||||
"windowsMove, 1, 4, default"
|
|
||||||
"border, 1, 10, default"
|
|
||||||
"fade, 1, 10, smoothIn"
|
|
||||||
"fadeDim, 1, 10, smoothIn"
|
|
||||||
"workspaces, 1, 6, default"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
dwindle = {
|
|
||||||
pseudotile = "yes";
|
|
||||||
preserve_split = "yes";
|
|
||||||
};
|
|
||||||
|
|
||||||
gestures = {
|
|
||||||
workspace_swipe = "off";
|
|
||||||
};
|
|
||||||
|
|
||||||
misc = {
|
|
||||||
force_default_wallpaper = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
workspace = [
|
|
||||||
"name:firefox, monitor:DP-2, default:false, special, firefox"
|
|
||||||
"name:discord, monitor:DP-2, default:true, special, vesktop, spotify"
|
|
||||||
"name:steam, monitor:DP-2, default:false, special, steam"
|
|
||||||
];
|
|
||||||
|
|
||||||
windowrule = [
|
|
||||||
"float, file_progress"
|
|
||||||
"float, confirm"
|
|
||||||
"float, dialog"
|
|
||||||
"float, download"
|
|
||||||
"float, notification"
|
|
||||||
"float, error"
|
|
||||||
"float, splash"
|
|
||||||
"float, confirmreset"
|
|
||||||
"float, title:Open File"
|
|
||||||
"float, title:branchdialog"
|
|
||||||
"float, pavucontrol"
|
|
||||||
"move onscreen cursor 0% 0%, pavucontrol"
|
|
||||||
"float, file-roller"
|
|
||||||
"fullscreen, wlogout"
|
|
||||||
"float, title:wlogout"
|
|
||||||
"fullscreen, title:wlogout"
|
|
||||||
"idleinhibit stayfocused, mpv"
|
|
||||||
"fullscreen, title:BBar"
|
|
||||||
"fullscreen, title:Remote Desktop Connection"
|
|
||||||
"norounding, class:Remote Desktop Connection"
|
|
||||||
"noshadow, class:Remote Desktop Connection"
|
|
||||||
"immediate, class:Remote Desktop Connection"
|
|
||||||
"syncfullscreen, class:Remote Desktop Connection"
|
|
||||||
"allowsinput, class:Remote Desktop Connection"
|
|
||||||
"noanim, class:Remote Desktop Connection"
|
|
||||||
"noblur, class:Remote Desktop Connection"
|
|
||||||
"noborder, class:Remote Desktop Connection"
|
|
||||||
"nodim, class:Remote Desktop Connection"
|
|
||||||
"nomaxsize, class:Remote Desktop Connection"
|
|
||||||
"minsize 3840 2160, class:Remote Desktop Connection"
|
|
||||||
];
|
|
||||||
windowrulev2 = [
|
|
||||||
"float, class:Vmware-view,title:VMware Horizon Client"
|
|
||||||
"size 3840 2160, class:Remote Desktop Connection"
|
|
||||||
# "float, class:Remote Desktop Connection,title:BBar"
|
|
||||||
# "float, class:Remote Desktop Connection,title:Remote Desktop Connection"
|
|
||||||
"float, class:Credential Manager UI Host,title:Windows Security"
|
|
||||||
"float, title:^(Media viewer)$"
|
|
||||||
# Picture in picture windows
|
|
||||||
# "float, class:pavucontrol,title:pavucontrol" # ?????
|
|
||||||
"float, title:^(Picture-in-Picture)$"
|
|
||||||
"pin, title:^(Picture-in-Picture)$"
|
|
||||||
"float, class:^(vesktop)$,title:^(Discord Popout)$"
|
|
||||||
"pin, class:^(vesktop)$,title:^(Discord Popout)$"
|
|
||||||
"float, class:^(steam)$,title:^(Friends List)$"
|
|
||||||
# Workspace assign
|
|
||||||
# "workspace: 1, class:^(kitty)$"
|
|
||||||
# "workspace: name:discord, class:^(firefox)$"
|
|
||||||
"workspace: name:discord, class:^(vesktop)$"
|
|
||||||
|
|
||||||
# Steam
|
|
||||||
"float, class:^([Ss]team)$, title:^((?![Ss]team).*)$"
|
|
||||||
"workspace name:steam silent, class:^([Ss]team)$, title:^([Ss]team)$"
|
|
||||||
"tile, class:^([Ss]team)$, title:^([Ss]team)$"
|
|
||||||
|
|
||||||
# Code
|
|
||||||
# "pin, class:^(code)$,title:^(Save As)$"
|
|
||||||
"float, class:^(code)$,title:^(Save As)$"
|
|
||||||
"float, class:^(xdg-desktop-portal-gtk)$,title:^(Open Workspace from File)$"
|
|
||||||
|
|
||||||
# Game Tearing??? https://wiki.hyprland.org/Configuring/Tearing/
|
|
||||||
"immediate, class:gamescope"
|
|
||||||
];
|
|
||||||
|
|
||||||
input = {
|
|
||||||
kb_layout = "us";
|
|
||||||
|
|
||||||
kb_variant = "";
|
|
||||||
kb_model = "";
|
|
||||||
kb_options = "";
|
|
||||||
kb_rules = "";
|
|
||||||
|
|
||||||
numlock_by_default = true;
|
|
||||||
|
|
||||||
follow_mouse = 1;
|
|
||||||
|
|
||||||
touchpad = {
|
|
||||||
natural_scroll = "no";
|
|
||||||
};
|
|
||||||
|
|
||||||
sensitivity = 0; # -1.0 - 1.0, 0 means no modification.
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
extraConfig = ''
|
|
||||||
exec-once = dbus-update-activation-environment --systemd --all
|
|
||||||
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
|
||||||
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
exec-once = nwg-look -a
|
|
||||||
exec-once = [silent] firefox
|
|
||||||
exec-once = [silent] vesktop
|
|
||||||
exec-once = [silent] spotify
|
|
||||||
exec-once = [silent] steam
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
|
||||||
programs.kitty = {
|
|
||||||
enable = true;
|
|
||||||
shellIntegration.enableZshIntegration = true;
|
|
||||||
|
|
||||||
font = {
|
|
||||||
name = "nerd-fonts-jetbrains-mono";
|
|
||||||
package = pkgs.nerd-fonts.jetbrains-mono;
|
|
||||||
size = 12;
|
|
||||||
};
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
include = "~/.config/kitty/macchiato.conf";
|
|
||||||
bold_font = "auto";
|
|
||||||
italic_font = "auto";
|
|
||||||
bold_italic_font = "auto";
|
|
||||||
mouse_hide_wait = "2.0";
|
|
||||||
cursor_shape = "block";
|
|
||||||
url_color = "#0087bd";
|
|
||||||
url_style = "dotted";
|
|
||||||
confirm_os_window_close = "0";
|
|
||||||
background_opacity = "0.8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
# vim:ft=kitty
|
|
||||||
|
|
||||||
## name: Catppuccin Kitty Macchiato
|
|
||||||
## author: Catppuccin Org
|
|
||||||
## license: MIT
|
|
||||||
## upstream: https://github.com/catppuccin/kitty/blob/main/themes/macchiato.conf
|
|
||||||
## blurb: Soothing pastel theme for the high-spirited!
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# The basic colors
|
|
||||||
foreground #CAD3F5
|
|
||||||
background #24273A
|
|
||||||
selection_foreground #24273A
|
|
||||||
selection_background #F4DBD6
|
|
||||||
|
|
||||||
# Cursor colors
|
|
||||||
cursor #F4DBD6
|
|
||||||
cursor_text_color #24273A
|
|
||||||
|
|
||||||
# URL underline color when hovering with mouse
|
|
||||||
url_color #F4DBD6
|
|
||||||
|
|
||||||
# Kitty window border colors
|
|
||||||
active_border_color #B7BDF8
|
|
||||||
inactive_border_color #6E738D
|
|
||||||
bell_border_color #EED49F
|
|
||||||
|
|
||||||
# OS Window titlebar colors
|
|
||||||
wayland_titlebar_color #24273A
|
|
||||||
macos_titlebar_color #24273A
|
|
||||||
|
|
||||||
# Tab bar colors
|
|
||||||
active_tab_foreground #181926
|
|
||||||
active_tab_background #C6A0F6
|
|
||||||
inactive_tab_foreground #CAD3F5
|
|
||||||
inactive_tab_background #1E2030
|
|
||||||
tab_bar_background #181926
|
|
||||||
|
|
||||||
# Colors for marks (marked text in the terminal)
|
|
||||||
mark1_foreground #24273A
|
|
||||||
mark1_background #B7BDF8
|
|
||||||
mark2_foreground #24273A
|
|
||||||
mark2_background #C6A0F6
|
|
||||||
mark3_foreground #24273A
|
|
||||||
mark3_background #7DC4E4
|
|
||||||
|
|
||||||
# The 16 terminal colors
|
|
||||||
|
|
||||||
# black
|
|
||||||
color0 #494D64
|
|
||||||
color8 #5B6078
|
|
||||||
|
|
||||||
# red
|
|
||||||
color1 #ED8796
|
|
||||||
color9 #ED8796
|
|
||||||
|
|
||||||
# green
|
|
||||||
color2 #A6DA95
|
|
||||||
color10 #A6DA95
|
|
||||||
|
|
||||||
# yellow
|
|
||||||
color3 #EED49F
|
|
||||||
color11 #EED49F
|
|
||||||
|
|
||||||
# blue
|
|
||||||
color4 #8AADF4
|
|
||||||
color12 #8AADF4
|
|
||||||
|
|
||||||
# magenta
|
|
||||||
color5 #F5BDE6
|
|
||||||
color13 #F5BDE6
|
|
||||||
|
|
||||||
# cyan
|
|
||||||
color6 #8BD5CA
|
|
||||||
color14 #8BD5CA
|
|
||||||
|
|
||||||
# white
|
|
||||||
color7 #B8C0E0
|
|
||||||
color15 #A5ADCB
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
services.mako = {
|
|
||||||
enable = true;
|
|
||||||
font = "monospace 12";
|
|
||||||
icons = false;
|
|
||||||
width = 500;
|
|
||||||
height = 110;
|
|
||||||
layer = "overlay";
|
|
||||||
borderRadius = 15;
|
|
||||||
borderSize = 2;
|
|
||||||
maxIconSize = 64;
|
|
||||||
defaultTimeout = 5000;
|
|
||||||
sort = "-time";
|
|
||||||
ignoreTimeout = true;
|
|
||||||
|
|
||||||
backgroundColor = "#24273a";
|
|
||||||
textColor = "#cad3f5";
|
|
||||||
borderColor = "#8aadf4";
|
|
||||||
progressColor = "over #363a4f";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
window {
|
|
||||||
background-color: rgba (36, 47, 79, 0.95);
|
|
||||||
color: #eeeeee
|
|
||||||
}
|
|
||||||
|
|
||||||
/* search entry */
|
|
||||||
entry {
|
|
||||||
background-color: rgba (0, 0, 0, 0.2)
|
|
||||||
}
|
|
||||||
|
|
||||||
button, image {
|
|
||||||
background: none;
|
|
||||||
border: none
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background-color: rgba (255, 255, 255, 0.1)
|
|
||||||
}
|
|
||||||
|
|
||||||
/* in case you wanted to give category buttons a different look */
|
|
||||||
#category-button {
|
|
||||||
margin: 0 10px 0 10px
|
|
||||||
}
|
|
||||||
|
|
||||||
#pinned-box {
|
|
||||||
padding-bottom: 5px;
|
|
||||||
border-bottom: 1px dotted gray
|
|
||||||
}
|
|
||||||
|
|
||||||
#files-box {
|
|
||||||
padding: 5px;
|
|
||||||
border: 1px dotted gray;
|
|
||||||
border-radius: 15px
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
{
|
|
||||||
"\\.pdf$": "firefox",
|
|
||||||
"\\.svg$": "inkscape",
|
|
||||||
"\\.(jpg|png|tiff|gif)$": "swayimg",
|
|
||||||
"\\.(mp3|ogg|flac|wav|wma)$": "audacious",
|
|
||||||
"\\.(avi|mp4|mkv|mov|wav)$": "mpv",
|
|
||||||
"\\.(doc|docx|xls|xlsx)$": "libreoffice"
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 239 KiB |
@@ -1,302 +0,0 @@
|
|||||||
{
|
|
||||||
# https://github.com/Alexays/Waybar/wiki/Module:-Hyprland
|
|
||||||
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
settings = {
|
|
||||||
mainBar = {
|
|
||||||
layer = "bottom";
|
|
||||||
position = "top";
|
|
||||||
mod = "dock";
|
|
||||||
exclusive = true;
|
|
||||||
passthrough = false;
|
|
||||||
gtk-layer-shell = true;
|
|
||||||
height = 0;
|
|
||||||
modules-left = [
|
|
||||||
"hyprland/workspaces"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-center = [
|
|
||||||
"hyprland/window"
|
|
||||||
];
|
|
||||||
|
|
||||||
modules-right = [
|
|
||||||
"tray"
|
|
||||||
"custom/updates"
|
|
||||||
"keyboard-state#capslock"
|
|
||||||
"keyboard-state#numlock"
|
|
||||||
"pulseaudio"
|
|
||||||
"pulseaudio#microphone"
|
|
||||||
"network"
|
|
||||||
"clock"
|
|
||||||
"custom/weather"
|
|
||||||
];
|
|
||||||
|
|
||||||
"hyprland/window" = {
|
|
||||||
format = {};
|
|
||||||
};
|
|
||||||
|
|
||||||
"hyprland/workspaces" = {
|
|
||||||
disable-scroll = true;
|
|
||||||
all-outputs = true;
|
|
||||||
on-click = "activate";
|
|
||||||
persistent_workspaces = {
|
|
||||||
"1" = [];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/weather" = {
|
|
||||||
tooltip = true;
|
|
||||||
format = {};
|
|
||||||
interval = 30;
|
|
||||||
exec = "sudo waybar-weather";
|
|
||||||
return-type = "json";
|
|
||||||
};
|
|
||||||
|
|
||||||
"custom/updates" = {
|
|
||||||
tooltip = true;
|
|
||||||
format = {};
|
|
||||||
interval = 60;
|
|
||||||
exec = "sudo waybar-updates";
|
|
||||||
return-type = "json";
|
|
||||||
};
|
|
||||||
|
|
||||||
tray = {
|
|
||||||
icon-size = 16;
|
|
||||||
spacing = 10;
|
|
||||||
};
|
|
||||||
|
|
||||||
clock = {
|
|
||||||
format = "{:%I:%M %p}";
|
|
||||||
tooltip-format = "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>";
|
|
||||||
};
|
|
||||||
|
|
||||||
pulseaudio = {
|
|
||||||
format = "{icon} {volume}%";
|
|
||||||
tooltip = false;
|
|
||||||
format-muted = " Muted";
|
|
||||||
on-click = "pamixer -t";
|
|
||||||
on-click-right = "pavucontrol -t 1";
|
|
||||||
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}";
|
|
||||||
format-source = "🎙{volume}%";
|
|
||||||
format-source-muted = "🎙Muted";
|
|
||||||
on-click = "pamixer --default-source -t";
|
|
||||||
on-click-right = "pavucontrol -t 2";
|
|
||||||
on-scroll-up = "pamixer --default-source -i 5";
|
|
||||||
on-scroll-down = "pamixer --default-source -d 5";
|
|
||||||
scroll-step = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
network = {
|
|
||||||
interface = "wlp9s0";
|
|
||||||
format = "{ifname}";
|
|
||||||
format-wifi = "{essid} ({signalStrength}%) ";
|
|
||||||
format-ethernet = "{ifname} ";
|
|
||||||
format-disconnected = ""; # An empty format will hide the module.
|
|
||||||
tooltip-format = "{ifname}";
|
|
||||||
tooltip-format-wifi = "{essid} ({signalStrength}%) ";
|
|
||||||
tooltip-format-ethernet = "{ifname} ";
|
|
||||||
tooltip-format-disconnected = "Disconnected";
|
|
||||||
max-length = 50;
|
|
||||||
};
|
|
||||||
|
|
||||||
"keyboard-state#capslock" = {
|
|
||||||
capslock = true;
|
|
||||||
format = "{name} {icon}";
|
|
||||||
format-icons = {
|
|
||||||
locked = "";
|
|
||||||
unlocked = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
"keyboard-state#numlock" = {
|
|
||||||
numlock = true;
|
|
||||||
format = "{name} {icon}";
|
|
||||||
format-icons = {
|
|
||||||
locked = "";
|
|
||||||
unlocked = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# https://catppuccin.com/palette
|
|
||||||
style = ''
|
|
||||||
* {
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
font-family:
|
|
||||||
Jetbrains Mono Nerd Font,
|
|
||||||
monospace;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 14px;
|
|
||||||
min-height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#waybar {
|
|
||||||
background: rgba(21, 18, 27, 0);
|
|
||||||
color: #cdd6f4;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
background: #1e1e2e;
|
|
||||||
border-radius: 10px;
|
|
||||||
border-width: 2px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #11111b;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
padding: 5px;
|
|
||||||
color: #313244;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
color: #a6adc8;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
|
||||||
color: #a6adc8;
|
|
||||||
background: #eba0ac;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
color: #11111b;
|
|
||||||
background: #a6e3a1;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button:hover {
|
|
||||||
background: #11111b;
|
|
||||||
color: #cdd6f4;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-updates,
|
|
||||||
#custom-caffeine,
|
|
||||||
#custom-weather,
|
|
||||||
#window,
|
|
||||||
#clock,
|
|
||||||
#battery,
|
|
||||||
#pulseaudio,
|
|
||||||
#network,
|
|
||||||
#workspaces,
|
|
||||||
#keyboard-state.numlock,
|
|
||||||
#keyboard-state.capslock,
|
|
||||||
#tray,
|
|
||||||
#backlight {
|
|
||||||
background: #1e1e2e;
|
|
||||||
padding: 0px 10px;
|
|
||||||
margin: 3px 0px;
|
|
||||||
margin-top: 10px;
|
|
||||||
border: 1px solid #181825;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
border-radius: 10px;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces {
|
|
||||||
background: #1e1e2e;
|
|
||||||
border-radius: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
padding-right: 0px;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-caffeine {
|
|
||||||
color: #89dceb;
|
|
||||||
border-radius: 10px 0px 0px 10px;
|
|
||||||
border-right: 0px;
|
|
||||||
margin-left: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-updates {
|
|
||||||
color: #f5c2e7;
|
|
||||||
border-radius: 10px 0px 0px 10px;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
border-radius: 10px;
|
|
||||||
margin-left: 60px;
|
|
||||||
margin-right: 60px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock {
|
|
||||||
color: #f5a97f;
|
|
||||||
border-radius: 10px 0px 0px 10px;
|
|
||||||
margin-left: 5px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#keyboard-state.capslock {
|
|
||||||
color: #91d7e3;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#keyboard-state.numlock {
|
|
||||||
color: #7dc4e4;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#network {
|
|
||||||
color: #eed49f;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
border-radius: 10px 10px 10px 10px;
|
|
||||||
margin-left: 5px;
|
|
||||||
padding-right: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio {
|
|
||||||
color: #8aadf4;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pulseaudio.microphone {
|
|
||||||
color: #c6a0f6;
|
|
||||||
border-radius: 0px 10px 10px 0px;
|
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
padding-top: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery {
|
|
||||||
color: #a6e3a1;
|
|
||||||
border-radius: 0 10px 10px 0;
|
|
||||||
margin-right: 10px;
|
|
||||||
border-left: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-weather {
|
|
||||||
border-radius: 0px 10px 10px 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
margin-left: 0px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import os
|
|
||||||
import json
|
|
||||||
import subprocess
|
|
||||||
import re
|
|
||||||
from datetime import datetime
|
|
||||||
import time
|
|
||||||
|
|
||||||
tmp_path = '/tmp/waybar-scripts/updates'
|
|
||||||
json_cache = tmp_path + "/data.json"
|
|
||||||
git_repo = 'git@github.com:mjallen18/nix-config.git'
|
|
||||||
|
|
||||||
def cache_json(data):
|
|
||||||
with open(json_cache, mode="w") as cache:
|
|
||||||
json.dump(data, cache)
|
|
||||||
|
|
||||||
def create_folders():
|
|
||||||
if not os.path.exists(tmp_path):
|
|
||||||
os.makedirs(tmp_path)
|
|
||||||
os.chdir(tmp_path)
|
|
||||||
|
|
||||||
def clone_repo():
|
|
||||||
reset_repo()
|
|
||||||
if os.path.exists(tmp_path) and len(os.listdir(tmp_path)) == 0:
|
|
||||||
subprocess.run(["git", "clone", git_repo, tmp_path])
|
|
||||||
|
|
||||||
def check_for_flake_updates():
|
|
||||||
return subprocess.run(["sudo", "nix", "flake", "update", "-I", tmp_path, tmp_path], capture_output=True, text=True)
|
|
||||||
|
|
||||||
def reset_repo():
|
|
||||||
if os.path.exists(tmp_path) and not len(os.listdir(tmp_path)) == 0:
|
|
||||||
subprocess.run(["git", "reset", "--hard"])
|
|
||||||
subprocess.run(["git", "pull"])
|
|
||||||
|
|
||||||
def parse_output(output):
|
|
||||||
updates_dict = {}
|
|
||||||
updates = re.findall(r"(• Updated input '(.+)':((\n|\r|\n)(.+\((\d\d\d\d-\d\d-\d\d\)))){2})", output)
|
|
||||||
for update in updates:
|
|
||||||
input = re.findall(r"'(.+)':", update[0])[0].strip()
|
|
||||||
dates = re.findall(r"(\d{4}-\d{2}-\d{2})", update[0])
|
|
||||||
updates_dict[input] = dates
|
|
||||||
return updates_dict
|
|
||||||
|
|
||||||
def check():
|
|
||||||
data = {}
|
|
||||||
# print("create folders")
|
|
||||||
create_folders()
|
|
||||||
# print("clone repo")
|
|
||||||
clone_repo()
|
|
||||||
# print("checking for updates")
|
|
||||||
updates = check_for_flake_updates()
|
|
||||||
updates_dict = parse_output(updates.stderr)
|
|
||||||
|
|
||||||
data["text"] = (str(len(updates_dict.keys())))
|
|
||||||
if len(updates_dict.keys()) <= 0:
|
|
||||||
data["tooltip"] = ("flake inputs up to date")
|
|
||||||
else:
|
|
||||||
data["tooltip"] = ("flake input updates:\n\n")
|
|
||||||
|
|
||||||
for input in updates_dict.keys():
|
|
||||||
data["tooltip"] += "<b>{}</b>\n".format(input)
|
|
||||||
data["tooltip"] += "Old Ref: {0} → {1}\n\n".format(updates_dict[input][0].strip(), updates_dict[input][1].strip())
|
|
||||||
|
|
||||||
cache_json(data)
|
|
||||||
|
|
||||||
print(json.dumps(data))
|
|
||||||
|
|
||||||
def read_cache():
|
|
||||||
with open(json_cache, mode="r") as cache:
|
|
||||||
print(json.dumps(json.load(cache)))
|
|
||||||
|
|
||||||
def main():
|
|
||||||
now = int(datetime.now().strftime("%H"))
|
|
||||||
if os.path.exists(json_cache):
|
|
||||||
mtime = int(time.localtime(os.stat(json_cache).st_ctime).tm_hour)
|
|
||||||
else:
|
|
||||||
mtime = now + 1
|
|
||||||
|
|
||||||
if (now % 2 == 0 and mtime < now) or not os.path.exists(json_cache):
|
|
||||||
check()
|
|
||||||
else:
|
|
||||||
read_cache()
|
|
||||||
|
|
||||||
main()
|
|
||||||
@@ -1,137 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
|
|
||||||
import json
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
WEATHER_CODES = {
|
|
||||||
"113": "☀️ ",
|
|
||||||
"116": "⛅ ",
|
|
||||||
"119": "☁️ ",
|
|
||||||
"122": "☁️ ",
|
|
||||||
"143": "☁️ ",
|
|
||||||
"176": "🌧️",
|
|
||||||
"179": "🌧️",
|
|
||||||
"182": "🌧️",
|
|
||||||
"185": "🌧️",
|
|
||||||
"200": "⛈️ ",
|
|
||||||
"227": "🌨️",
|
|
||||||
"230": "🌨️",
|
|
||||||
"248": "☁️ ",
|
|
||||||
"260": "☁️ ",
|
|
||||||
"263": "🌧️",
|
|
||||||
"266": "🌧️",
|
|
||||||
"281": "🌧️",
|
|
||||||
"284": "🌧️",
|
|
||||||
"293": "🌧️",
|
|
||||||
"296": "🌧️",
|
|
||||||
"299": "🌧️",
|
|
||||||
"302": "🌧️",
|
|
||||||
"305": "🌧️",
|
|
||||||
"308": "🌧️",
|
|
||||||
"311": "🌧️",
|
|
||||||
"314": "🌧️",
|
|
||||||
"317": "🌧️",
|
|
||||||
"320": "🌨️",
|
|
||||||
"323": "🌨️",
|
|
||||||
"326": "🌨️",
|
|
||||||
"329": "❄️ ",
|
|
||||||
"332": "❄️ ",
|
|
||||||
"335": "❄️ ",
|
|
||||||
"338": "❄️ ",
|
|
||||||
"350": "🌧️",
|
|
||||||
"353": "🌧️",
|
|
||||||
"356": "🌧️",
|
|
||||||
"359": "🌧️",
|
|
||||||
"362": "🌧️",
|
|
||||||
"365": "🌧️",
|
|
||||||
"368": "🌧️",
|
|
||||||
"371": "❄️",
|
|
||||||
"374": "🌨️",
|
|
||||||
"377": "🌨️",
|
|
||||||
"386": "🌨️",
|
|
||||||
"389": "🌨️",
|
|
||||||
"392": "🌧️",
|
|
||||||
"395": "❄️ ",
|
|
||||||
}
|
|
||||||
|
|
||||||
data = {}
|
|
||||||
|
|
||||||
|
|
||||||
weather = requests.get("https://wttr.in/?format=j1").json()
|
|
||||||
|
|
||||||
|
|
||||||
def format_time(time):
|
|
||||||
return datetime.strptime(format_24_time(time), "%H").strftime("%I %p")
|
|
||||||
|
|
||||||
def format_24_time(time):
|
|
||||||
return time.replace("00", "").zfill(2)
|
|
||||||
|
|
||||||
|
|
||||||
def format_temp(temp):
|
|
||||||
return (hour["FeelsLikeF"] + "°").ljust(3)
|
|
||||||
|
|
||||||
|
|
||||||
def format_chances(hour):
|
|
||||||
chances = {
|
|
||||||
"chanceoffog": "Fog",
|
|
||||||
"chanceoffrost": "Frost",
|
|
||||||
"chanceofovercast": "Overcast",
|
|
||||||
"chanceofrain": "Rain",
|
|
||||||
"chanceofsnow": "Snow",
|
|
||||||
"chanceofsunshine": "Sunshine",
|
|
||||||
"chanceofthunder": "Thunder",
|
|
||||||
"chanceofwindy": "Wind",
|
|
||||||
}
|
|
||||||
|
|
||||||
conditions = []
|
|
||||||
for event in chances.keys():
|
|
||||||
if int(hour[event]) > 0:
|
|
||||||
conditions.append(chances[event] + " " + hour[event] + "%")
|
|
||||||
return ", ".join(conditions)
|
|
||||||
|
|
||||||
|
|
||||||
tempint = int(weather["current_condition"][0]["FeelsLikeF"])
|
|
||||||
extrachar = ""
|
|
||||||
if tempint > 0 and tempint < 10:
|
|
||||||
extrachar = "+"
|
|
||||||
|
|
||||||
|
|
||||||
data["text"] = (
|
|
||||||
" "
|
|
||||||
+ WEATHER_CODES[weather["current_condition"][0]["weatherCode"]]
|
|
||||||
+ " "
|
|
||||||
+ extrachar
|
|
||||||
+ weather["current_condition"][0]["FeelsLikeF"]
|
|
||||||
+ "°"
|
|
||||||
)
|
|
||||||
|
|
||||||
data["tooltip"] = (
|
|
||||||
f"<b>{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_F']}°</b>\n"
|
|
||||||
)
|
|
||||||
data["tooltip"] += f"Feels like: {weather['current_condition'][0]['FeelsLikeF']}°\n"
|
|
||||||
data["tooltip"] += f"Wind: {weather['current_condition'][0]['windspeedMiles']}mph\n"
|
|
||||||
data["tooltip"] += f"Humidity: {weather['current_condition'][0]['humidity']}%\n"
|
|
||||||
for i, day in enumerate(weather["weather"]):
|
|
||||||
data["tooltip"] += f"\n<b>"
|
|
||||||
if i == 0:
|
|
||||||
data["tooltip"] += "Today, "
|
|
||||||
if i == 1:
|
|
||||||
data["tooltip"] += "Tomorrow, "
|
|
||||||
date = datetime.strptime(day['date'], "%Y-%m-%d").strftime("%a %b %d %Y")
|
|
||||||
data["tooltip"] += f"{date}</b>\n"
|
|
||||||
data["tooltip"] += f"⬆️ {day['maxtempF']}° ⬇️ {day['mintempF']}° "
|
|
||||||
data[
|
|
||||||
"tooltip"
|
|
||||||
] += f"☀️ {day['astronomy'][0]['sunrise']} 🌕 {day['astronomy'][0]['sunset']}\n"
|
|
||||||
for hour in day["hourly"]:
|
|
||||||
if i == 0:
|
|
||||||
if int(format_24_time(hour["time"])) < datetime.now().hour - 2:
|
|
||||||
continue
|
|
||||||
data[
|
|
||||||
"tooltip"
|
|
||||||
] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeF'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
|
|
||||||
|
|
||||||
|
|
||||||
print(json.dumps(data))
|
|
||||||
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 8.4 KiB |
|
Before Width: | Height: | Size: 9.5 KiB |
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,36 +0,0 @@
|
|||||||
{
|
|
||||||
"label" : "lock",
|
|
||||||
"action" : "swaylock",
|
|
||||||
"text" : "Lock",
|
|
||||||
"keybind" : "l"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "hibernate",
|
|
||||||
"action" : "systemctl hibernate",
|
|
||||||
"text" : "Hibernate",
|
|
||||||
"keybind" : "h"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "logout",
|
|
||||||
"action" : "sleep 1; hyprctl dispatch exit",
|
|
||||||
"text" : "Logout",
|
|
||||||
"keybind" : "e"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "shutdown",
|
|
||||||
"action" : "systemctl poweroff",
|
|
||||||
"text" : "Shutdown",
|
|
||||||
"keybind" : "s"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "suspend",
|
|
||||||
"action" : "systemctl suspend",
|
|
||||||
"text" : "Suspend",
|
|
||||||
"keybind" : "u"
|
|
||||||
}
|
|
||||||
{
|
|
||||||
"label" : "reboot",
|
|
||||||
"action" : "systemctl reboot",
|
|
||||||
"text" : "Reboot",
|
|
||||||
"keybind" : "r"
|
|
||||||
}
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
* {
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
window {
|
|
||||||
background-color: rgba(36, 39, 58, 0.9);
|
|
||||||
}
|
|
||||||
|
|
||||||
button {
|
|
||||||
margin: 8px;
|
|
||||||
color: #cad3f5;
|
|
||||||
background-color: #363a4f;
|
|
||||||
border-style: solid;
|
|
||||||
border-width: 2px;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
background-position: center;
|
|
||||||
background-size: 25%;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:active,
|
|
||||||
button:focus,
|
|
||||||
button:hover {
|
|
||||||
color: #8bd5ca;
|
|
||||||
background-color: #24273a;
|
|
||||||
outline-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#lock {
|
|
||||||
background-image: image(url("icons/lock.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#logout {
|
|
||||||
background-image: image(url("icons/logout.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#suspend {
|
|
||||||
background-image: image(url("icons/suspend.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#hibernate {
|
|
||||||
background-image: image(url("icons/hibernate.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#shutdown {
|
|
||||||
background-image: image(url("icons/shutdown.png"));
|
|
||||||
}
|
|
||||||
|
|
||||||
#reboot {
|
|
||||||
background-image: image(url("icons/reboot.png"));
|
|
||||||
}
|
|
||||||
@@ -1,145 +0,0 @@
|
|||||||
{
|
|
||||||
programs.wofi = {
|
|
||||||
enable = false;
|
|
||||||
style = ''
|
|
||||||
@define-color rosewater #f4dbd6;
|
|
||||||
@define-color rosewater-rgb rgb(244, 219, 214);
|
|
||||||
@define-color flamingo #f0c6c6;
|
|
||||||
@define-color flamingo-rgb rgb(240, 198, 198);
|
|
||||||
@define-color pink #f5bde6;
|
|
||||||
@define-color pink-rgb rgb(245, 189, 230);
|
|
||||||
@define-color mauve #c6a0f6;
|
|
||||||
@define-color mauve-rgb rgb(198, 160, 246);
|
|
||||||
@define-color red #ed8796;
|
|
||||||
@define-color red-rgb rgb(237, 135, 150);
|
|
||||||
@define-color maroon #ee99a0;
|
|
||||||
@define-color maroon-rgb rgb(238, 153, 160);
|
|
||||||
@define-color peach #f5a97f;
|
|
||||||
@define-color peach-rgb rgb(245, 169, 127);
|
|
||||||
@define-color yellow #eed49f;
|
|
||||||
@define-color yellow-rgb rgb(238, 212, 159);
|
|
||||||
@define-color green #a6da95;
|
|
||||||
@define-color green-rgb rgb(166, 218, 149);
|
|
||||||
@define-color teal #8bd5ca;
|
|
||||||
@define-color teal-rgb rgb(139, 213, 202);
|
|
||||||
@define-color sky #91d7e3;
|
|
||||||
@define-color sky-rgb rgb(145, 215, 227);
|
|
||||||
@define-color sapphire #7dc4e4;
|
|
||||||
@define-color sapphire-rgb rgb(125, 196, 228);
|
|
||||||
@define-color blue #8aadf4;
|
|
||||||
@define-color blue-rgb rgb(138, 173, 244);
|
|
||||||
@define-color lavender #b7bdf8;
|
|
||||||
@define-color lavender-rgb rgb(183, 189, 248);
|
|
||||||
@define-color text #cad3f5;
|
|
||||||
@define-color text-rgb rgb(202, 211, 245);
|
|
||||||
@define-color subtext1 #b8c0e0;
|
|
||||||
@define-color subtext1-rgb rgb(184, 192, 224);
|
|
||||||
@define-color subtext0 #a5adcb;
|
|
||||||
@define-color subtext0-rgb rgb(165, 173, 203);
|
|
||||||
@define-color overlay2 #939ab7;
|
|
||||||
@define-color overlay2-rgb rgb(147, 154, 183);
|
|
||||||
@define-color overlay1 #8087a2;
|
|
||||||
@define-color overlay1-rgb rgb(128, 135, 162);
|
|
||||||
@define-color overlay0 #6e738d;
|
|
||||||
@define-color overlay0-rgb rgb(110, 115, 141);
|
|
||||||
@define-color surface2 #5b6078;
|
|
||||||
@define-color surface2-rgb rgb(91, 96, 120);
|
|
||||||
@define-color surface1 #494d64;
|
|
||||||
@define-color surface1-rgb rgb(73, 77, 100);
|
|
||||||
@define-color surface0 #363a4f;
|
|
||||||
@define-color surface0-rgb rgb(54, 58, 79);
|
|
||||||
@define-color base #24273a;
|
|
||||||
@define-color base-rgb rgb(36, 39, 58);
|
|
||||||
@define-color mantle #1e2030;
|
|
||||||
@define-color mantle-rgb rgb(30, 32, 48);
|
|
||||||
@define-color crust #181926;
|
|
||||||
@define-color crust-rgb rgb(24, 25, 38);
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-family: "Inconsolata Nerd Font", monospace;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Window */
|
|
||||||
window {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 10px;
|
|
||||||
border: 0.16em solid @lavender;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Inner Box */
|
|
||||||
#inner-box {
|
|
||||||
margin: 5px;
|
|
||||||
padding: 10px;
|
|
||||||
border: none;
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Outer Box */
|
|
||||||
#outer-box {
|
|
||||||
margin: 5px;
|
|
||||||
padding: 10px;
|
|
||||||
border: none;
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Scroll */
|
|
||||||
#scroll {
|
|
||||||
margin: 0px;
|
|
||||||
padding: 10px;
|
|
||||||
border: none;
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Input */
|
|
||||||
#input {
|
|
||||||
margin: 5px 20px;
|
|
||||||
padding: 10px;
|
|
||||||
border: none;
|
|
||||||
border-radius: 0.1em;
|
|
||||||
color: @text;
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input image {
|
|
||||||
border: none;
|
|
||||||
color: @red;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input * {
|
|
||||||
outline: 4px solid @red!important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Text */
|
|
||||||
#text {
|
|
||||||
margin: 5px;
|
|
||||||
border: none;
|
|
||||||
color: @text;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry {
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry arrow {
|
|
||||||
border: none;
|
|
||||||
color: @lavender;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Selected Entry */
|
|
||||||
#entry:selected {
|
|
||||||
border: 0.11em solid @lavender;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:selected #text {
|
|
||||||
color: @mauve;
|
|
||||||
}
|
|
||||||
|
|
||||||
#entry:drop(active) {
|
|
||||||
background-color: @lavender!important;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
sddmTheme = "catppuccin-mocha";
|
|
||||||
in
|
|
||||||
{
|
|
||||||
specialisation.hyprland.configuration = {
|
|
||||||
imports = [
|
|
||||||
./environment.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.matt = import ./home.nix;
|
|
||||||
|
|
||||||
services = {
|
|
||||||
displayManager.sddm.enable = true;
|
|
||||||
displayManager.sddm.package = pkgs.kdePackages.sddm;
|
|
||||||
displayManager.sddm.theme = sddmTheme;
|
|
||||||
displayManager.defaultSession = "hyprland";
|
|
||||||
# disable plasma
|
|
||||||
desktopManager.plasma6.enable = false;
|
|
||||||
|
|
||||||
dbus.enable = true;
|
|
||||||
|
|
||||||
ddccontrol.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.hyprland = {
|
|
||||||
enable = true;
|
|
||||||
xwayland.enable = true;
|
|
||||||
portalPackage = pkgs.xdg-desktop-portal-hyprland;
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd = {
|
|
||||||
user.services.polkit-gnome-authentication-agent-1 = {
|
|
||||||
description = "polkit-gnome-authentication-agent-1";
|
|
||||||
wantedBy = [ "graphical-session.target" ];
|
|
||||||
wants = [ "graphical-session.target" ];
|
|
||||||
after = [ "graphical-session.target" ];
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 1;
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = ''
|
|
||||||
DefaultTimeoutStopSec=10s
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
security = {
|
|
||||||
polkit.enable = true;
|
|
||||||
|
|
||||||
# configure sudo
|
|
||||||
sudo.extraRules = [
|
|
||||||
{
|
|
||||||
commands = [
|
|
||||||
{
|
|
||||||
command = "/run/current-system/sw/bin/waybar-weather";
|
|
||||||
options = [ "NOPASSWD" ];
|
|
||||||
}
|
|
||||||
{
|
|
||||||
command = "/run/current-system/sw/bin/waybar-updates";
|
|
||||||
options = [ "NOPASSWD" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
groups = [ "wheel" ];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
wlr.enable = false;
|
|
||||||
xdgOpenUsePortal = false;
|
|
||||||
extraPortals = [
|
|
||||||
pkgs.xdg-desktop-portal-hyprland
|
|
||||||
pkgs.xdg-desktop-portal-gtk
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-color-emoji
|
|
||||||
meslo-lgs-nf
|
|
||||||
] ++ builtins.filter lib.attrsets.isDerivation (builtins.attrValues pkgs.nerd-fonts);
|
|
||||||
|
|
||||||
fonts.fontconfig.defaultFonts = {
|
|
||||||
emoji = [
|
|
||||||
"Noto Color Emoji"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
nixpkgs.overlays = [
|
|
||||||
(self: super: {
|
|
||||||
waybar = super.waybar.overrideAttrs (oldAttrs: {
|
|
||||||
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
|
||||||
});
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
|
|
||||||
waybarWeatherScript = pkgs.writeScriptBin "waybar-weather" ''
|
|
||||||
#!/usr/bin/env nix-shell
|
|
||||||
#! nix-shell -i bash --packages python3 python3Packages.requests
|
|
||||||
python /home/matt/.config/waybar/scripts/waybar-wttr.py
|
|
||||||
'';
|
|
||||||
|
|
||||||
waybarUpdatesScript = pkgs.writeScriptBin "waybar-updates" ''
|
|
||||||
/home/matt/.config/waybar/scripts/waybar-updates.py
|
|
||||||
'';
|
|
||||||
in
|
|
||||||
{
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
ddcutil
|
|
||||||
dunst
|
|
||||||
glib
|
|
||||||
gnome-disk-utility
|
|
||||||
gsettings-desktop-schemas
|
|
||||||
hyprland
|
|
||||||
hyprshot
|
|
||||||
libnotify
|
|
||||||
mako
|
|
||||||
meson
|
|
||||||
nautilus
|
|
||||||
networkmanagerapplet
|
|
||||||
nwg-drawer
|
|
||||||
nwg-look
|
|
||||||
pamixer
|
|
||||||
papirus-folders
|
|
||||||
pavucontrol
|
|
||||||
playerctl
|
|
||||||
polkit
|
|
||||||
polkit_gnome
|
|
||||||
qt5.qtwayland
|
|
||||||
qt6.qtwayland
|
|
||||||
rofi-wayland
|
|
||||||
waybar
|
|
||||||
waybarUpdatesScript
|
|
||||||
waybarWeatherScript
|
|
||||||
wayland-protocols
|
|
||||||
wayland-utils
|
|
||||||
wev
|
|
||||||
wl-clipboard
|
|
||||||
wlogout
|
|
||||||
wlroots
|
|
||||||
xdg-desktop-portal-hyprland
|
|
||||||
xdg-desktop-portal-gtk
|
|
||||||
xdg-desktop-portal-wlr
|
|
||||||
xwayland
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -1,181 +0,0 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
let
|
|
||||||
wallpaper = "/home/matt/.config/wallpapers/wall.png";
|
|
||||||
cursorTheme = "macOS-Monterey";
|
|
||||||
cursorThemePkg = pkgs.apple-cursor;
|
|
||||||
cursorSize = 24;
|
|
||||||
gtkThemeSize = "compact";
|
|
||||||
gtkThemeAccent = "blue";
|
|
||||||
gtkThemeVariant = "macchiato";
|
|
||||||
gtkTheme = "catppuccin-${gtkThemeVariant}-${gtkThemeAccent}-${gtkThemeSize}";
|
|
||||||
gtkThemePkg = pkgs.catppuccin-gtk.override {
|
|
||||||
size = gtkThemeSize;
|
|
||||||
accents = [ gtkThemeAccent ];
|
|
||||||
variant = gtkThemeVariant;
|
|
||||||
};
|
|
||||||
iconTheme = "Colloid-dark"; # Colloid, Colloid-light, Colloid-dark
|
|
||||||
iconThemePkg = pkgs.colloid-icon-theme;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
imports = [
|
|
||||||
./config.nix
|
|
||||||
./config/btop
|
|
||||||
./config/hypr
|
|
||||||
./config/kitty
|
|
||||||
./config/mako
|
|
||||||
./config/waybar
|
|
||||||
./config/wofi
|
|
||||||
];
|
|
||||||
|
|
||||||
services = {
|
|
||||||
hyprpaper = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
preload = [ wallpaper ];
|
|
||||||
wallpaper = [
|
|
||||||
"DP-1, ${wallpaper}"
|
|
||||||
"DP-2, ${wallpaper}"
|
|
||||||
];
|
|
||||||
splash = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
hypridle = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
general = {
|
|
||||||
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.
|
|
||||||
ignore_dbus_inhibit = false;
|
|
||||||
lock_cmd = "pidof hyprlock || hyprlock"; # avoid starting multiple hyprlock instances.
|
|
||||||
};
|
|
||||||
listener = [
|
|
||||||
# {
|
|
||||||
# timeout = 300; # 5min
|
|
||||||
# on-timeout = "brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor.
|
|
||||||
# on-resume = "brightnessctl -r"; # monitor backlight restore.
|
|
||||||
# }
|
|
||||||
{
|
|
||||||
timeout = 900; # 15 min
|
|
||||||
on-timeout = "loginctl lock-session"; # lock screen when timeout has passed
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 930; # 15.5 min
|
|
||||||
on-timeout = "hyprctl dispatch dpms off"; # screen off when timeout has passed
|
|
||||||
on-resume = "hyprctl dispatch dpms on"; # screen on when activity is detected after timeout has fired.
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 3600; # 1hr
|
|
||||||
on-timeout = "systemctl suspend"; # suspend pc
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.hyprlock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
background = [
|
|
||||||
{
|
|
||||||
monitor = "";
|
|
||||||
path = wallpaper; # supports png, jpg, webp (no animations, though)
|
|
||||||
color = "rgba(25, 20, 20, 1.0)";
|
|
||||||
|
|
||||||
# all these options are taken from hyprland, see https://wiki.hyprland.org/Configuring/Variables/#blur for explanations
|
|
||||||
blur_passes = "3"; # 0 disables blurring
|
|
||||||
blur_size = "7";
|
|
||||||
noise = "0.0117";
|
|
||||||
contrast = "0.8916";
|
|
||||||
brightness = "0.8172";
|
|
||||||
vibrancy = "0.1696";
|
|
||||||
vibrancy_darkness = "0.0";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
input-field = [
|
|
||||||
{
|
|
||||||
size = "200, 50";
|
|
||||||
position = "0, -80";
|
|
||||||
monitor = "DP-1";
|
|
||||||
dots_center = true;
|
|
||||||
fade_on_empty = true;
|
|
||||||
font_color = "rgb(202, 211, 245)";
|
|
||||||
inner_color = "rgb(91, 96, 120)";
|
|
||||||
outer_color = "rgb(24, 25, 38)";
|
|
||||||
bothlock_color = -1;
|
|
||||||
outline_thickness = 5;
|
|
||||||
placeholder_text = ''<span foreground="##cad3f5">Password...</span>'';
|
|
||||||
shadow_passes = 2;
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = {
|
|
||||||
BROWSER = "firefox";
|
|
||||||
EDITOR = "nano";
|
|
||||||
TERMINAL = "kitty";
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
QT_QPA_PLATFORMTHEME = "gtk3";
|
|
||||||
QT_SCALE_FACTOR = "1";
|
|
||||||
MOZ_ENABLE_WAYLAND = "1";
|
|
||||||
SDL_VIDEODRIVER = "wayland";
|
|
||||||
QT_QPA_PLATFORM = "wayland-egl";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
|
||||||
GTK_CSD = "0";
|
|
||||||
# WLR_DRM_DEVICES = "/dev/dri/card0";
|
|
||||||
# WLR_NO_HARDWARE_CURSORS = "1";
|
|
||||||
CLUTTER_BACKEND = "wayland";
|
|
||||||
# WLR_RENDERER = "vulkan";
|
|
||||||
XCURSOR_THEME = cursorTheme;
|
|
||||||
XCURSOR_SIZE = cursorSize;
|
|
||||||
GTK_THEME = gtkTheme;
|
|
||||||
XDG_CURRENT_DESKTOP = "Hyprland";
|
|
||||||
XDG_SESSION_DESKTOP = "Hyprland";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
GTK_USE_PORTAL = "1";
|
|
||||||
NIXOS_XDG_OPEN_USE_PORTAL = "1";
|
|
||||||
XDG_CACHE_HOME = "\${HOME}/.cache";
|
|
||||||
XDG_CONFIG_HOME = "\${HOME}/.config";
|
|
||||||
#XDG_BIN_HOME = "\${HOME}/.local/bin";
|
|
||||||
XDG_DATA_HOME = "\${HOME}/.local/share";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.pointerCursor = {
|
|
||||||
gtk.enable = true;
|
|
||||||
package = cursorThemePkg;
|
|
||||||
name = cursorTheme;
|
|
||||||
size = cursorSize;
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
cursorTheme = {
|
|
||||||
name = cursorTheme; # macOS-[BigSur, Monterey]-[ , White, White-Windows, Windows]
|
|
||||||
package = cursorThemePkg;
|
|
||||||
};
|
|
||||||
|
|
||||||
theme = {
|
|
||||||
name = gtkTheme;
|
|
||||||
package = gtkThemePkg;
|
|
||||||
};
|
|
||||||
|
|
||||||
iconTheme = {
|
|
||||||
name = iconTheme;
|
|
||||||
package = iconThemePkg;
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk3.extraConfig = {
|
|
||||||
# gtk-application-prefer-dark-theme = true;
|
|
||||||
"AdwStyleManager:color-scheme" = "ADW_COLOR_SCHEME_PREFER_DARK";
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk4.extraConfig = {
|
|
||||||
# gtk-application-prefer-dark-theme = true;
|
|
||||||
"AdwStyleManager:color-scheme" = "ADW_COLOR_SCHEME_PREFER_DARK";
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
}
|
|
||||||