snowfall migration
This commit is contained in:
114
modules/home/programs/graphical/browsers/firefox/default.nix
Normal file
114
modules/home/programs/graphical/browsers/firefox/default.nix
Normal file
@@ -0,0 +1,114 @@
|
||||
{ config, lib, pkgs, namespace, ... }:
|
||||
let
|
||||
inherit (lib)
|
||||
types
|
||||
mkIf
|
||||
mkMerge
|
||||
optionalAttrs
|
||||
;
|
||||
inherit (lib.${namespace}) mkBoolOpt mkOpt;
|
||||
|
||||
cfg = config.${namespace}.programs.graphical.browsers.firefox;
|
||||
in
|
||||
{
|
||||
imports = lib.snowfall.fs.get-non-default-nix-files ./.;
|
||||
|
||||
options.${namespace}.programs.graphical.browsers.firefox = with types; {
|
||||
enable = lib.mkEnableOption "Firefox";
|
||||
|
||||
extraConfig = mkOpt str "" "Extra configuration for the user profile JS file.";
|
||||
gpuAcceleration = mkBoolOpt false "Enable GPU acceleration.";
|
||||
hardwareDecoding = mkBoolOpt false "Enable hardware video decoding.";
|
||||
|
||||
policies = mkOpt attrs
|
||||
{
|
||||
CaptivePortal = false;
|
||||
DisableFirefoxStudies = true;
|
||||
DisableFormHistory = true;
|
||||
DisablePocket = true;
|
||||
DisableTelemetry = true;
|
||||
DisplayBookmarksToolbar = false;
|
||||
DontCheckDefaultBrowser = true;
|
||||
FirefoxHome = {
|
||||
Pocket = false;
|
||||
Snippets = false;
|
||||
};
|
||||
PasswordManagerEnabled = false;
|
||||
UserMessaging = {
|
||||
ExtensionRecommendations = false;
|
||||
SkipOnboarding = true;
|
||||
};
|
||||
ExtensionSettings = {
|
||||
# Block All
|
||||
# "*".installation_mode = "blocked";
|
||||
|
||||
# Bypass Paywalls
|
||||
"magnolia@12.34" = {
|
||||
install_url = "https://gitflic.ru/project/magnolia1234/bpc_uploads/blob/raw?file=bypass_paywalls_clean-latest.xpi";
|
||||
installation_mode = "force_installed";
|
||||
};
|
||||
};
|
||||
Preferences = { };
|
||||
} "Policies to apply to firefox";
|
||||
|
||||
settings = mkOpt attrs { } "Settings to apply to the profile.";
|
||||
|
||||
extensions = mkOpt (with lib.types; listOf package)
|
||||
(with pkgs.firefox-addons; [
|
||||
bitwarden
|
||||
darkreader
|
||||
gruvbox-dark-theme
|
||||
kagi-search
|
||||
sponsorblock
|
||||
ublock-origin
|
||||
|
||||
# bypass-paywalls-clean
|
||||
]) "Extensions to install";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
|
||||
inherit (cfg) policies;
|
||||
|
||||
profiles = {
|
||||
${config.${namespace}.user.name} = {
|
||||
inherit (cfg) extraConfig extensions;
|
||||
inherit (config.${namespace}.user) name;
|
||||
|
||||
id = 0;
|
||||
|
||||
settings = mkMerge [
|
||||
cfg.settings
|
||||
{
|
||||
"browser.aboutConfig.showWarning" = false;
|
||||
"browser.aboutwelcome.enabled" = false;
|
||||
"browser.sessionstore.warnOnQuit" = true;
|
||||
"browser.shell.checkDefaultBrowser" = false;
|
||||
"general.smoothScroll.msdPhysics.enabled" = true;
|
||||
"intl.accept_languages" = "en-US,en";
|
||||
"ui.key.accelKey" = "224";
|
||||
|
||||
# "devtools.chrome.enabled" = true;
|
||||
# "xpinstall.signatures.required" = false;
|
||||
}
|
||||
(optionalAttrs cfg.gpuAcceleration {
|
||||
"dom.webgpu.enabled" = true;
|
||||
"gfx.webrender.all" = true;
|
||||
"layers.gpu-process.enabled" = true;
|
||||
"layers.mlgpu.enabled" = true;
|
||||
})
|
||||
(optionalAttrs cfg.hardwareDecoding {
|
||||
"media.ffmpeg.vaapi.enabled" = true;
|
||||
"media.gpu-process-decoder" = true;
|
||||
"media.hardware-video-decoding.enabled" = true;
|
||||
})
|
||||
];
|
||||
|
||||
# userChrome = ./chrome/userChrome.css;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
14
modules/home/programs/graphical/ghidra/default.nix
Executable file
14
modules/home/programs/graphical/ghidra/default.nix
Executable file
@@ -0,0 +1,14 @@
|
||||
{ pkgs, lib, config, namespace, ... }:
|
||||
let
|
||||
inherit (lib) mkIf mkEnableOption;
|
||||
cfg = config.${namespace}.programs.graphical.ghidra;
|
||||
in
|
||||
{
|
||||
options.${namespace}.programs.graphical.ghidra = {
|
||||
enable = mkEnableOption "Enable Ghidra";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
home.packages = with pkgs; [ ghidra ];
|
||||
};
|
||||
}
|
||||
93
modules/home/programs/graphical/ghostty/config/fastfetch.jsonc
Executable file
93
modules/home/programs/graphical/ghostty/config/fastfetch.jsonc
Executable file
@@ -0,0 +1,93 @@
|
||||
{
|
||||
"modules": [
|
||||
{
|
||||
"type": "separator",
|
||||
"string": "",
|
||||
"length": 35,
|
||||
},
|
||||
{
|
||||
"type": "title",
|
||||
"format": "Hardware Information",
|
||||
},
|
||||
{
|
||||
"type": "cpu",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "memory",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "display",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "separator",
|
||||
},
|
||||
{
|
||||
"type": "title",
|
||||
"format": "Software Information",
|
||||
},
|
||||
{
|
||||
"type": "os",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "kernel",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "terminal",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "packages",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "terminalfont",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "separator",
|
||||
},
|
||||
{
|
||||
"type": "title",
|
||||
"format": "Network Information",
|
||||
},
|
||||
{
|
||||
"type": "publicip",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "localip",
|
||||
"key": " ",
|
||||
},
|
||||
{
|
||||
"type": "separator",
|
||||
},
|
||||
{
|
||||
"type": "custom",
|
||||
"format": " {#white} {#red} {#green} {#yellow} {#blue} {#magenta} {#cyan} {#white}\n",
|
||||
},
|
||||
],
|
||||
"display": {
|
||||
"separator": " ",
|
||||
"key": {
|
||||
"width": 7,
|
||||
},
|
||||
"color": {
|
||||
"keys": "yellow",
|
||||
"title": "blue",
|
||||
},
|
||||
},
|
||||
"settings": {
|
||||
"kernelFormat": "minimal",
|
||||
"memoryUnit": "gib",
|
||||
"temperatureUnit": "celsius",
|
||||
"publicIpTimeout": 2000,
|
||||
"publicIpHost": "http://ident.me",
|
||||
"diskUnit": "gib",
|
||||
"showDisks": ["/"],
|
||||
},
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
# https://github.com/catppuccin/ghostty/blob/main/themes/catppuccin-macchiato.conf
|
||||
palette = 0=#494d64
|
||||
palette = 1=#ed8796
|
||||
palette = 2=#a6da95
|
||||
palette = 3=#eed49f
|
||||
palette = 4=#8aadf4
|
||||
palette = 5=#f5bde6
|
||||
palette = 6=#8bd5ca
|
||||
palette = 7=#b8c0e0
|
||||
palette = 8=#5b6078
|
||||
palette = 9=#ed8796
|
||||
palette = 10=#a6da95
|
||||
palette = 11=#eed49f
|
||||
palette = 12=#8aadf4
|
||||
palette = 13=#f5bde6
|
||||
palette = 14=#8bd5ca
|
||||
palette = 15=#a5adcb
|
||||
background = 24273a
|
||||
foreground = cad3f5
|
||||
cursor-color = f4dbd6
|
||||
cursor-text = 24273a
|
||||
selection-background = 3a3e53
|
||||
selection-foreground = cad3f5
|
||||
@@ -0,0 +1,23 @@
|
||||
# https://github.com/catppuccin/ghostty/blob/main/themes/catppuccin-mocha.conf
|
||||
palette = 0=#45475a
|
||||
palette = 1=#f38ba8
|
||||
palette = 2=#a6e3a1
|
||||
palette = 3=#f9e2af
|
||||
palette = 4=#89b4fa
|
||||
palette = 5=#f5c2e7
|
||||
palette = 6=#94e2d5
|
||||
palette = 7=#bac2de
|
||||
palette = 8=#585b70
|
||||
palette = 9=#f38ba8
|
||||
palette = 10=#a6e3a1
|
||||
palette = 11=#f9e2af
|
||||
palette = 12=#89b4fa
|
||||
palette = 13=#f5c2e7
|
||||
palette = 14=#94e2d5
|
||||
palette = 15=#a6adc8
|
||||
background = 1e1e2e
|
||||
foreground = cdd6f4
|
||||
cursor-color = f5e0dc
|
||||
cursor-text = 1e1e2e
|
||||
selection-background = 353749
|
||||
selection-foreground = cdd6f4
|
||||
@@ -0,0 +1,21 @@
|
||||
# Melange Dark - Adapted From: https://github.com/savq/melange-nvim/blob/master/term/kitty/melange_dark.conf
|
||||
palette = 0=#34302C
|
||||
palette = 1=#BD8183
|
||||
palette = 2=#78997A
|
||||
palette = 3=#E49B5D
|
||||
palette = 4=#7F91B2
|
||||
palette = 5=#B380B0
|
||||
palette = 6=#7B9695
|
||||
palette = 7=#C1A78E
|
||||
palette = 8=#867462
|
||||
palette = 9=#D47766
|
||||
palette = 10=#85B695
|
||||
palette = 11=#EBC06D
|
||||
palette = 12=#A3A9CE
|
||||
palette = 13=#CF9BC2
|
||||
palette = 14=#89B3B6
|
||||
palette = 15=#ECE1D7
|
||||
background = 292522
|
||||
foreground = ECE1D7
|
||||
selection-background = 403A36
|
||||
selection-foreground = ECE1D7
|
||||
58
modules/home/programs/graphical/ghostty/config/ghostty.conf
Executable file
58
modules/home/programs/graphical/ghostty/config/ghostty.conf
Executable file
@@ -0,0 +1,58 @@
|
||||
command = @BASH_PATH@ --login
|
||||
macos-titlebar-style = tabs
|
||||
auto-update = off
|
||||
font-family = "MesloLGM Nerd Font Mono"
|
||||
confirm-close-surface = true
|
||||
|
||||
# Keybindings - Tabs & Splits
|
||||
keybind = cmd+t=new_tab
|
||||
keybind = cmd+w=close_surface
|
||||
keybind = cmd+d=new_split:right
|
||||
keybind = cmd+shift+d=new_split:down
|
||||
keybind = cmd+shift+enter=toggle_split_zoom
|
||||
|
||||
# Keybindings - Navigation - Splits
|
||||
keybind = cmd+left=goto_split:left
|
||||
keybind = cmd+right=goto_split:right
|
||||
keybind = cmd+up=goto_split:up
|
||||
keybind = cmd+down=goto_split:down
|
||||
keybind = cmd+]=goto_split:next
|
||||
keybind = cmd+[=goto_split:previous
|
||||
|
||||
# Keybindings - Navigation - Tabs
|
||||
keybind = cmd+1=goto_tab:1
|
||||
keybind = cmd+2=goto_tab:2
|
||||
keybind = cmd+3=goto_tab:3
|
||||
keybind = cmd+4=goto_tab:4
|
||||
keybind = cmd+5=goto_tab:5
|
||||
keybind = cmd+6=goto_tab:6
|
||||
keybind = cmd+7=goto_tab:7
|
||||
keybind = cmd+8=goto_tab:8
|
||||
keybind = cmd+9=goto_tab:9
|
||||
|
||||
keybind = performable:cmd+c=copy_to_clipboard
|
||||
keybind = performable:cmd+v=paste_from_clipboard
|
||||
|
||||
# https://github.com/catppuccin/ghostty/blob/main/themes/catppuccin-mocha.conf
|
||||
palette = 0=#45475a
|
||||
palette = 1=#f38ba8
|
||||
palette = 2=#a6e3a1
|
||||
palette = 3=#f9e2af
|
||||
palette = 4=#89b4fa
|
||||
palette = 5=#f5c2e7
|
||||
palette = 6=#94e2d5
|
||||
palette = 7=#bac2de
|
||||
palette = 8=#585b70
|
||||
palette = 9=#f38ba8
|
||||
palette = 10=#a6e3a1
|
||||
palette = 11=#f9e2af
|
||||
palette = 12=#89b4fa
|
||||
palette = 13=#f5c2e7
|
||||
palette = 14=#94e2d5
|
||||
palette = 15=#a6adc8
|
||||
background = 1e1e2e
|
||||
foreground = cdd6f4
|
||||
cursor-color = f5e0dc
|
||||
cursor-text = 1e1e2e
|
||||
selection-background = 353749
|
||||
selection-foreground = cdd6f4
|
||||
78
modules/home/programs/graphical/ghostty/default.nix
Executable file
78
modules/home/programs/graphical/ghostty/default.nix
Executable file
@@ -0,0 +1,78 @@
|
||||
{ pkgs, lib, config, namespace, ... }:
|
||||
let
|
||||
inherit (pkgs.stdenv) isLinux;
|
||||
inherit (lib) mkIf mkEnableOption optionals;
|
||||
cfg = config.${namespace}.programs.graphical.ghostty;
|
||||
in
|
||||
{
|
||||
options.${namespace}.programs.graphical.ghostty = {
|
||||
enable = mkEnableOption "Ghostty";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
grep = "grep --color";
|
||||
ssh = "TERM=xterm-256color ssh";
|
||||
flush_dns = "sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder";
|
||||
};
|
||||
profileExtra = ''
|
||||
SHELL="$BASH"
|
||||
PATH=~/.bin:$PATH
|
||||
bind "set show-mode-in-prompt on"
|
||||
|
||||
set -o vi || true
|
||||
VISUAL=vim
|
||||
EDITOR="$VISUAL"
|
||||
|
||||
fastfetch
|
||||
eval "$(thefuck --alias)"
|
||||
'';
|
||||
};
|
||||
|
||||
programs.powerline-go = {
|
||||
enable = true;
|
||||
settings = {
|
||||
git-mode = "compact";
|
||||
theme = "gruvbox";
|
||||
};
|
||||
modules = [
|
||||
"host"
|
||||
"cwd"
|
||||
"git"
|
||||
"docker"
|
||||
"venv"
|
||||
];
|
||||
};
|
||||
|
||||
programs.readline = {
|
||||
enable = true;
|
||||
extraConfig = ''
|
||||
# Approximate VIM Dracula Colors
|
||||
set vi-ins-mode-string \1\e[01;38;5;23;48;5;231m\2 I \1\e[38;5;231;48;5;238m\2\1\e[0m\2
|
||||
set vi-cmd-mode-string \1\e[01;38;5;22;48;5;148m\2 C \1\e[38;5;148;48;5;238m\2\1\e[0m\2
|
||||
'';
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
thefuck
|
||||
fastfetch
|
||||
bashInteractive
|
||||
(nerdfonts.override { fonts = [ "Meslo" ]; })
|
||||
] ++ optionals isLinux [
|
||||
# Pending Darwin @ https://github.com/NixOS/nixpkgs/pull/369788
|
||||
ghostty
|
||||
];
|
||||
|
||||
home.file.".config/fastfetch/config.jsonc".text = builtins.readFile ./config/fastfetch.jsonc;
|
||||
home.file.".config/ghostty/config".text =
|
||||
let
|
||||
bashPath = "${pkgs.bashInteractive}/bin/bash";
|
||||
in
|
||||
builtins.replaceStrings
|
||||
[ "@BASH_PATH@" ]
|
||||
[ bashPath ]
|
||||
(builtins.readFile ./config/ghostty.conf);
|
||||
};
|
||||
}
|
||||
290
modules/home/programs/graphical/wms/hyprland/config/hyprland.conf
Executable file
290
modules/home/programs/graphical/wms/hyprland/config/hyprland.conf
Executable file
@@ -0,0 +1,290 @@
|
||||
################
|
||||
### MONITORS ###
|
||||
################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
# debug:disable_scale_checks = true
|
||||
monitor=,highres,auto,2 # 1.68
|
||||
|
||||
###################
|
||||
### MY PROGRAMS ###
|
||||
###################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
|
||||
# Set programs that you use
|
||||
$terminal = ghostty
|
||||
$fileManager = dolphin
|
||||
$menu = wofi --show drun
|
||||
|
||||
|
||||
#################
|
||||
### AUTOSTART ###
|
||||
#################
|
||||
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
# exec-once = $terminal
|
||||
# exec-once = nm-applet &
|
||||
exec-once = uwsm app -- waybar
|
||||
exec-once = uwsm app -- $terminal
|
||||
exec-once = uwsm app -- firefox
|
||||
|
||||
|
||||
#############################
|
||||
### ENVIRONMENT VARIABLES ###
|
||||
#############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Environment-variables/
|
||||
|
||||
# env = XCURSOR_SIZE,24
|
||||
# env = HYPRCURSOR_SIZE,24
|
||||
|
||||
|
||||
#####################
|
||||
### LOOK AND FEEL ###
|
||||
#####################
|
||||
|
||||
# Refer to https://wiki.hyprland.org/Configuring/Variables/
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||
general {
|
||||
gaps_in = 5
|
||||
gaps_out = 12
|
||||
|
||||
border_size = 2
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
|
||||
col.active_border = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||
col.inactive_border = rgba(595959aa)
|
||||
|
||||
# Set to true enable resizing windows by clicking and dragging on borders and gaps
|
||||
resize_on_border = false
|
||||
|
||||
# Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
|
||||
allow_tearing = false
|
||||
|
||||
layout = dwindle
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#decoration
|
||||
decoration {
|
||||
rounding = 10
|
||||
|
||||
active_opacity = 1.0
|
||||
inactive_opacity = 1.0
|
||||
|
||||
shadow {
|
||||
enabled = true
|
||||
range = 4
|
||||
render_power = 3
|
||||
color = rgba(1a1a1aee)
|
||||
}
|
||||
|
||||
blur {
|
||||
enabled = true
|
||||
size = 3
|
||||
passes = 1
|
||||
vibrancy = 0.1696
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#animations
|
||||
#https://wiki.hyprland.org/Configuring/Animations/
|
||||
animations {
|
||||
enabled = yes, please :)
|
||||
|
||||
|
||||
bezier = easeOutQuint,0.23,1,0.32,1
|
||||
bezier = easeInOutCubic,0.65,0.05,0.36,1
|
||||
bezier = linear,0,0,1,1
|
||||
bezier = almostLinear,0.5,0.5,0.75,1.0
|
||||
bezier = quick,0.15,0,0.1,1
|
||||
|
||||
animation = global, 1, 10, default
|
||||
animation = border, 1, 5.39, easeOutQuint
|
||||
animation = windows, 1, 4.79, easeOutQuint
|
||||
animation = windowsIn, 1, 4.1, easeOutQuint, popin 87%
|
||||
animation = windowsOut, 1, 1.49, linear, popin 87%
|
||||
animation = fadeIn, 1, 1.73, almostLinear
|
||||
animation = fadeOut, 1, 1.46, almostLinear
|
||||
animation = fade, 1, 3.03, quick
|
||||
animation = layers, 1, 3.81, easeOutQuint
|
||||
animation = layersIn, 1, 4, easeOutQuint, fade
|
||||
animation = layersOut, 1, 1.5, linear, fade
|
||||
animation = fadeLayersIn, 1, 1.79, almostLinear
|
||||
animation = fadeLayersOut, 1, 1.39, almostLinear
|
||||
animation = workspaces, 1, 1.94, almostLinear, fade
|
||||
animation = workspacesIn, 1, 1.21, almostLinear, fade
|
||||
animation = workspacesOut, 1, 1.94, almostLinear, fade
|
||||
}
|
||||
|
||||
# Ref https://wiki.hyprland.org/Configuring/Workspace-Rules/
|
||||
# "Smart gaps" / "No gaps when only"
|
||||
# uncomment all if you wish to use that.
|
||||
# workspace = w[tv1], gapsout:0, gapsin:0
|
||||
# workspace = f[1], gapsout:0, gapsin:0
|
||||
# windowrulev2 = bordersize 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrulev2 = rounding 0, floating:0, onworkspace:w[tv1]
|
||||
# windowrulev2 = bordersize 0, floating:0, onworkspace:f[1]
|
||||
# windowrulev2 = rounding 0, floating:0, onworkspace:f[1]
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
|
||||
dwindle {
|
||||
pseudotile = true # Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||
preserve_split = true # You probably want this
|
||||
}
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
|
||||
master {
|
||||
new_status = master
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#misc
|
||||
misc {
|
||||
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
|
||||
disable_hyprland_logo = false # If true disables the random hyprland logo / anime girl background. :(
|
||||
}
|
||||
|
||||
|
||||
#############
|
||||
### INPUT ###
|
||||
#############
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#input
|
||||
input {
|
||||
kb_layout = us
|
||||
kb_variant =
|
||||
kb_model =
|
||||
kb_options =
|
||||
kb_rules =
|
||||
|
||||
follow_mouse = 1
|
||||
|
||||
sensitivity = 0.0 # -1.0 - 1.0, 0 means no modification.
|
||||
|
||||
touchpad {
|
||||
scroll_factor = 0.5
|
||||
disable_while_typing = true
|
||||
natural_scroll = true
|
||||
clickfinger_behavior = true
|
||||
tap-to-click = false
|
||||
}
|
||||
}
|
||||
|
||||
# https://wiki.hyprland.org/Configuring/Variables/#gestures
|
||||
gestures {
|
||||
workspace_swipe = true
|
||||
workspace_swipe_fingers = 4
|
||||
workspace_swipe_invert = true
|
||||
}
|
||||
|
||||
# Example per-device config
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/#per-device-input-configs for more
|
||||
# device {
|
||||
# name = epic-mouse-v1
|
||||
# sensitivity = -0.5
|
||||
# }
|
||||
|
||||
|
||||
###################
|
||||
### KEYBINDINGS ###
|
||||
###################
|
||||
|
||||
# Super Bindings (macOS Transition)
|
||||
bind = SUPER_SHIFT, 1, exec, hyprshot -m output
|
||||
bind = SUPER_SHIFT, 2, exec, hyprshot -m window
|
||||
bind = SUPER_SHIFT, 3, exec, hyprshot -m region
|
||||
bind = SUPER, Q, killactive,
|
||||
bind = SUPER, SPACE, exec, $menu
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Keywords/
|
||||
$mainMod = ALT # Sets "Windows" key as main modifier
|
||||
|
||||
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
|
||||
bind = $mainMod, RETURN, exec, $terminal
|
||||
bind = $mainMod, M, exit,
|
||||
bind = $mainMod, E, exec, $fileManager
|
||||
bind = $mainMod, V, togglefloating,
|
||||
bind = $mainMod, P, pseudo, # dwindle
|
||||
bind = $mainMod, J, togglesplit, # dwindle
|
||||
|
||||
# Move focus with mainMod + arrow keys
|
||||
bind = $mainMod, left, movefocus, l
|
||||
bind = $mainMod, right, movefocus, r
|
||||
bind = $mainMod, up, movefocus, u
|
||||
bind = $mainMod, down, movefocus, d
|
||||
|
||||
# Switch workspaces with mainMod + [0-9]
|
||||
bind = $mainMod, 1, workspace, 1
|
||||
bind = $mainMod, 2, workspace, 2
|
||||
bind = $mainMod, 3, workspace, 3
|
||||
bind = $mainMod, 4, workspace, 4
|
||||
bind = $mainMod, 5, workspace, 5
|
||||
bind = $mainMod, 6, workspace, 6
|
||||
bind = $mainMod, 7, workspace, 7
|
||||
bind = $mainMod, 8, workspace, 8
|
||||
bind = $mainMod, 9, workspace, 9
|
||||
bind = $mainMod, 0, workspace, 10
|
||||
|
||||
# Move active window to a workspace with mainMod + SHIFT + [0-9]
|
||||
bind = $mainMod SHIFT, 1, movetoworkspace, 1
|
||||
bind = $mainMod SHIFT, 2, movetoworkspace, 2
|
||||
bind = $mainMod SHIFT, 3, movetoworkspace, 3
|
||||
bind = $mainMod SHIFT, 4, movetoworkspace, 4
|
||||
bind = $mainMod SHIFT, 5, movetoworkspace, 5
|
||||
bind = $mainMod SHIFT, 6, movetoworkspace, 6
|
||||
bind = $mainMod SHIFT, 7, movetoworkspace, 7
|
||||
bind = $mainMod SHIFT, 8, movetoworkspace, 8
|
||||
bind = $mainMod SHIFT, 9, movetoworkspace, 9
|
||||
bind = $mainMod SHIFT, 0, movetoworkspace, 10
|
||||
|
||||
# Example special workspace (scratchpad)
|
||||
bind = $mainMod, S, togglespecialworkspace, magic
|
||||
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
|
||||
|
||||
# Scroll through existing workspaces with mainMod + scroll
|
||||
bind = $mainMod, mouse_down, workspace, e+1
|
||||
bind = $mainMod, mouse_up, workspace, e-1
|
||||
|
||||
# Move/resize windows with mainMod + LMB/RMB and dragging
|
||||
bindm = $mainMod, mouse:272, movewindow
|
||||
bindm = $mainMod, mouse:273, resizewindow
|
||||
|
||||
# Generic Laptop Multimedia Keys for Volume and LCD brightness
|
||||
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+
|
||||
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
|
||||
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
|
||||
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
|
||||
bindel = ,XF86MonBrightnessUp, exec, brightnessctl s 10%+
|
||||
bindel = ,XF86MonBrightnessDown, exec, brightnessctl s 10%-
|
||||
|
||||
# macOS Keyboard Brightness
|
||||
bindel = ALT, XF86MonBrightnessUp, exec, brightnessctl -d kbd_backlight s 10%+
|
||||
bindel = ALT, XF86MonBrightnessDown, exec, brightnessctl -d kbd_backlight s 10%-
|
||||
|
||||
# Requires playerctl
|
||||
bindl = , XF86AudioNext, exec, playerctl next
|
||||
bindl = , XF86AudioPause, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPlay, exec, playerctl play-pause
|
||||
bindl = , XF86AudioPrev, exec, playerctl previous
|
||||
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Example windowrule v1
|
||||
# windowrule = float, ^(kitty)$
|
||||
|
||||
# Example windowrule v2
|
||||
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrulev2 = suppressevent maximize, class:.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrulev2 = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
@@ -0,0 +1,146 @@
|
||||
@define-color rosewater #f5e0dc;
|
||||
@define-color flamingo #f2cdcd;
|
||||
@define-color pink #f5c2e7;
|
||||
@define-color mauve #cba6f7;
|
||||
@define-color red #f38ba8;
|
||||
@define-color maroon #eba0ac;
|
||||
@define-color peach #fab387;
|
||||
@define-color yellow #f9e2af;
|
||||
@define-color green #a6e3a1;
|
||||
@define-color teal #94e2d5;
|
||||
@define-color sky #89dceb;
|
||||
@define-color sapphire #74c7ec;
|
||||
@define-color blue #89b4fa;
|
||||
@define-color lavender #b4befe;
|
||||
@define-color text #cdd6f4;
|
||||
@define-color subtext1 #bac2de;
|
||||
@define-color subtext0 #a6adc8;
|
||||
@define-color overlay2 #9399b2;
|
||||
@define-color overlay1 #7f849c;
|
||||
@define-color overlay0 #6c7086;
|
||||
@define-color surface2 #585b70;
|
||||
@define-color surface1 #45475a;
|
||||
@define-color surface0 #313244;
|
||||
@define-color base #1e1e2e;
|
||||
@define-color mantle #181825;
|
||||
@define-color crust #11111b;
|
||||
|
||||
/* Common Styles */
|
||||
* {
|
||||
font-family: FantasqueSansMono Nerd Font;
|
||||
font-size: 14px;
|
||||
min-height: 0;
|
||||
}
|
||||
|
||||
/* Primary Waybar */
|
||||
#waybar {
|
||||
background: transparent;
|
||||
color: @text;
|
||||
}
|
||||
|
||||
/* Icon Only Sizes */
|
||||
#network,
|
||||
#backlight,
|
||||
#battery {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
/* Node Styles */
|
||||
#workspaces,
|
||||
#window,
|
||||
#tray,
|
||||
#cpu,
|
||||
#memory,
|
||||
#pulseaudio,
|
||||
#network,
|
||||
#backlight,
|
||||
#battery,
|
||||
#clock {
|
||||
margin-top: 1rem;
|
||||
padding: 0.2px 1rem;
|
||||
background-color: @surface0;
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
color: @lavender;
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
#workspaces button.active {
|
||||
color: @sky;
|
||||
background-color: @surface2;
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
color: @sapphire;
|
||||
}
|
||||
|
||||
#window {
|
||||
background: transparent;
|
||||
margin-left: 0.5rem;
|
||||
margin-right: 8rem; /* Notch */
|
||||
}
|
||||
|
||||
#memory {
|
||||
color: @blue;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
color: @maroon;
|
||||
}
|
||||
|
||||
#network {
|
||||
color: @mauve;
|
||||
}
|
||||
|
||||
#cpu {
|
||||
color: @peach;
|
||||
}
|
||||
|
||||
#backlight {
|
||||
color: @yellow;
|
||||
}
|
||||
|
||||
#battery {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#battery.charging {
|
||||
color: @green;
|
||||
}
|
||||
|
||||
#battery.warning:not(.charging) {
|
||||
color: @red;
|
||||
}
|
||||
|
||||
/* Left Border Radius */
|
||||
#clock,
|
||||
#network,
|
||||
#cpu,
|
||||
#tray,
|
||||
#workspaces {
|
||||
margin-left: 0.5rem;
|
||||
border-top-left-radius: 1rem;
|
||||
border-bottom-left-radius: 1rem;
|
||||
}
|
||||
|
||||
/* Right Border Radius */
|
||||
#pulseaudio,
|
||||
#clock,
|
||||
#tray,
|
||||
#battery,
|
||||
#workspaces {
|
||||
margin-right: 0.5rem;
|
||||
border-top-right-radius: 1rem;
|
||||
border-bottom-right-radius: 1rem;
|
||||
}
|
||||
|
||||
#workspaces {
|
||||
padding: 0px;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
#clock {
|
||||
color: @blue;
|
||||
margin-right: 1rem;
|
||||
}
|
||||
127
modules/home/programs/graphical/wms/hyprland/config/wofi-style.css
Executable file
127
modules/home/programs/graphical/wms/hyprland/config/wofi-style.css
Executable file
@@ -0,0 +1,127 @@
|
||||
window {
|
||||
font-family: "Hack Nerd Font";
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#outer-box {
|
||||
padding: 10px;
|
||||
border-radius: 8px;
|
||||
background: #2e3440;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
/* The Nordic gtk theme adds an outline to show scroll areas... */
|
||||
outline-color: transparent;
|
||||
}
|
||||
|
||||
#input {
|
||||
color: #e5e9f0;
|
||||
caret-color: #e5e9f0;
|
||||
background: #3b4252;
|
||||
border-top-color: #3b4252;
|
||||
border-left-color: #3b4252;
|
||||
border-right-color: #3b4252;
|
||||
border-bottom-color: #3b4252;
|
||||
box-shadow: 0 0 0 1px transparent inset;
|
||||
outline-color: transparent !important;
|
||||
}
|
||||
|
||||
#input:focus {
|
||||
background: #3b4252;
|
||||
border-color: #3b4252 !important;
|
||||
box-shadow: 0 0 0 1px transparent inset;
|
||||
border-top-color: #3b4252 !important;
|
||||
border-left-color: #3b4252 !important;
|
||||
border-right-color: #3b4252 !important;
|
||||
border-bottom-color: #3b4252 !important;
|
||||
box-shadow: none !important;
|
||||
outline-color: transparent !important;
|
||||
}
|
||||
|
||||
#input image.left {
|
||||
color: #d8dee9;
|
||||
}
|
||||
|
||||
#input:focus image.left {
|
||||
color: #e5e9f0;
|
||||
}
|
||||
|
||||
#input image.right {
|
||||
color: #d8dee9;
|
||||
}
|
||||
|
||||
#input:focus image.right {
|
||||
color: #e5e9f0;
|
||||
}
|
||||
|
||||
label {
|
||||
/* We set backgrounds on the block level. */
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#scroll {
|
||||
padding-top: 6px;
|
||||
}
|
||||
|
||||
#entry {
|
||||
color: #4c566a;
|
||||
padding: 8px 8px;
|
||||
border-radius: 4px;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
#entry:selected {
|
||||
color: #eceff4;
|
||||
background: #8fbcbb;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
expander arrow {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
#entry #selected #text {
|
||||
color: #eceff4;
|
||||
}
|
||||
|
||||
expander list {
|
||||
margin-top: 8px;
|
||||
/* background: #8fbcbb; */
|
||||
background: transparent;
|
||||
padding-left: 16px;
|
||||
}
|
||||
|
||||
expander list #entry {
|
||||
transition: none;
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
expander list #entry:hover,
|
||||
expander list #entry:active {
|
||||
/* color: #8fbcbb;
|
||||
background: #e5e9f0; */
|
||||
}
|
||||
|
||||
expander list #entry #selected {
|
||||
background: #8fbcbb;
|
||||
}
|
||||
|
||||
expander list #entry #selected label {
|
||||
color: #eceff4;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
expander list #entry:hover,
|
||||
expander list #entry:active {
|
||||
background: #8fbcbb;
|
||||
}
|
||||
|
||||
expander list #entry:hover label,
|
||||
expander list #entry:active label {
|
||||
color: #eceff4;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
expander list label {
|
||||
color: #d8dee9;
|
||||
}
|
||||
3
modules/home/programs/graphical/wms/hyprland/config/wofi.conf
Executable file
3
modules/home/programs/graphical/wms/hyprland/config/wofi.conf
Executable file
@@ -0,0 +1,3 @@
|
||||
stylesheet=./style.css
|
||||
term=foot
|
||||
insensitive=true
|
||||
188
modules/home/programs/graphical/wms/hyprland/default.nix
Executable file
188
modules/home/programs/graphical/wms/hyprland/default.nix
Executable file
@@ -0,0 +1,188 @@
|
||||
{ lib, pkgs, config, namespace, ... }:
|
||||
let
|
||||
inherit (lib) mkIf;
|
||||
inherit (lib.${namespace}) enabled;
|
||||
|
||||
cfg = config.${namespace}.programs.graphical.wms.hyprland;
|
||||
in
|
||||
{
|
||||
options.${namespace}.programs.graphical.wms.hyprland = {
|
||||
enable = lib.mkEnableOption "Hyprland";
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.swaync = enabled;
|
||||
|
||||
wayland.windowManager.hyprland = {
|
||||
enable = true;
|
||||
extraConfig = builtins.readFile ./config/hyprland.conf;
|
||||
};
|
||||
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
style = builtins.readFile ./config/waybar-style.css;
|
||||
settings = [{
|
||||
layer = "top";
|
||||
position = "top";
|
||||
mod = "dock";
|
||||
exclusive = true;
|
||||
passtrough = false;
|
||||
gtk-layer-shell = true;
|
||||
height = 0;
|
||||
modules-left = [
|
||||
"hyprland/workspaces"
|
||||
"hyprland/window"
|
||||
];
|
||||
# modules-center = [ "hyprland/window" ];
|
||||
modules-right = [
|
||||
"tray"
|
||||
"cpu"
|
||||
"memory"
|
||||
"pulseaudio"
|
||||
"network"
|
||||
"backlight"
|
||||
"battery"
|
||||
"clock"
|
||||
];
|
||||
"hyprland/window" = { format = "{}"; };
|
||||
"wlr/workspaces" = {
|
||||
on-scroll-up = "hyprctl dispatch workspace e+1";
|
||||
on-scroll-down = "hyprctl dispatch workspace e-1";
|
||||
all-outputs = true;
|
||||
on-click = "activate";
|
||||
};
|
||||
battery = {
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon}";
|
||||
format-charging = "";
|
||||
format-plugged = "";
|
||||
format-alt = "{icon}";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
};
|
||||
cpu = {
|
||||
interval = 10;
|
||||
format = " {}%";
|
||||
max-length = 10;
|
||||
on-click = "";
|
||||
};
|
||||
memory = {
|
||||
interval = 30;
|
||||
format = " {}%";
|
||||
format-alt = " {used:0.1f}G";
|
||||
max-length = 10;
|
||||
};
|
||||
|
||||
backlight = {
|
||||
format = "{icon}";
|
||||
format-icons = [
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
""
|
||||
];
|
||||
on-scroll-up = "brightnessctl s 1%-";
|
||||
on-scroll-down = "brightnessctl s +1%";
|
||||
};
|
||||
tray = {
|
||||
icon-size = 13;
|
||||
tooltip = false;
|
||||
spacing = 10;
|
||||
};
|
||||
network = {
|
||||
interval = 1;
|
||||
format-wifi = "";
|
||||
format-ethernet = "";
|
||||
format-linked = "";
|
||||
format-disconnected = "";
|
||||
on-click-right = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor";
|
||||
# tooltip-format = ''
|
||||
# <big>Network Details</big>
|
||||
# <tt><small>Interface: {ifname}</small></tt>
|
||||
# <tt><small>IP: {ipaddr}/{cidr}</small></tt>
|
||||
# <tt><small>Gateway: {gwaddr}</small></tt>
|
||||
# <tt><small> {bandwidthUpBytes}\n {bandwidthDownBytes}</small></tt>'';
|
||||
tooltip-format = ''
|
||||
<big>Network Details</big>
|
||||
<small>
|
||||
Interface: {ifname}
|
||||
SSID: {essid}
|
||||
IP Address: {ipaddr}/{cidr}
|
||||
Gateway: {gwaddr}
|
||||
|
||||
{bandwidthUpBytes} / {bandwidthDownBytes}
|
||||
</small>'';
|
||||
|
||||
};
|
||||
clock = {
|
||||
format = " {:%Y-%m-%d %H:%M:%S}";
|
||||
interval = 1;
|
||||
tooltip-format = ''
|
||||
<big>{:%Y %B}</big>
|
||||
<tt><small>{calendar}</small></tt>'';
|
||||
};
|
||||
pulseaudio = {
|
||||
format = "{icon} {volume}%";
|
||||
tooltip = false;
|
||||
format-muted = " Muted";
|
||||
on-click = "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 = " 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;
|
||||
};
|
||||
}];
|
||||
};
|
||||
|
||||
home.packages = with pkgs; [
|
||||
brightnessctl
|
||||
hyprshot
|
||||
wofi
|
||||
wofi-emoji
|
||||
];
|
||||
|
||||
xdg.configFile = {
|
||||
"wofi/config".source = ./config/wofi.conf;
|
||||
"wofi/style.css".source = ./config/wofi-style.css;
|
||||
"uwsp/env".text = ''
|
||||
export XCURSOR_SIZE=64
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user