mirror of
https://github.com/JulienMalka/snowfield.git
synced 2025-03-29 07:10:51 +01:00
feat: hyprland init
This commit is contained in:
parent
91fa5f57d2
commit
a55a8ee9a4
8 changed files with 400 additions and 5 deletions
|
@ -80,7 +80,7 @@
|
||||||
})
|
})
|
||||||
(builtins.attrNames (builtins.readDir ./modules)));
|
(builtins.attrNames (builtins.readDir ./modules)));
|
||||||
|
|
||||||
nixosConfigurations = builtins.mapAttrs (name: value: (lib.mkMachine { host = name; host-config = value; modules = self.nixosModules; nixpkgs = inputs.${lib.luj.machines.${name}.nixpkgs_version}; system = lib.luj.machines.${name}.arch; })) (lib.importConfig ./machines);
|
nixosConfigurations = builtins.mapAttrs (name: value: (lib.mkMachine { host = name; host-config = value; modules = self.nixosModules; nixpkgs = inputs.nixos-apple-silicon.inputs.nixpkgs; system = lib.luj.machines.${name}.arch; })) (lib.importConfig ./machines);
|
||||||
|
|
||||||
deploy.nodes.lambda = {
|
deploy.nodes.lambda = {
|
||||||
hostname = "lambda.julienmalka.me";
|
hostname = "lambda.julienmalka.me";
|
||||||
|
|
232
home-manager-modules/hyprland/default.nix
Normal file
232
home-manager-modules/hyprland/default.nix
Normal file
|
@ -0,0 +1,232 @@
|
||||||
|
{ config, pkgs, lib, inputs, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.luj.programs.hyprland;
|
||||||
|
terminal = "${pkgs.kitty}/bin/kitty";
|
||||||
|
menu = "${pkgs.rofi-wayland}/bin/rofi -no-lazy-grab -show";
|
||||||
|
in
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options.luj.programs.hyprland = {
|
||||||
|
enable = mkEnableOption "Enable HyprLand";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable
|
||||||
|
{
|
||||||
|
wayland.windowManager.hyprland = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.hyprland;
|
||||||
|
|
||||||
|
};
|
||||||
|
xdg.configFile."hypr/hyprland.conf".text = ''
|
||||||
|
exec-once=${pkgs.dbus}/bin/dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY HYPRLAND_INSTANCE_SIGNATURE XDG_CURRENT_DESKTOP && systemctl --user start hyprland-session.target
|
||||||
|
exec-once = waybar
|
||||||
|
# Monitors
|
||||||
|
monitor = eDP-1, preferred, auto, auto
|
||||||
|
|
||||||
|
# Input
|
||||||
|
input {
|
||||||
|
kb_layout = fr
|
||||||
|
kb_variant = mac
|
||||||
|
follow_mouse = 1
|
||||||
|
touchpad {
|
||||||
|
disable_while_typing = false
|
||||||
|
natural_scroll = true
|
||||||
|
tap-to-click = true
|
||||||
|
}
|
||||||
|
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
|
||||||
|
}
|
||||||
|
|
||||||
|
# General
|
||||||
|
general {
|
||||||
|
gaps_in = 7.5
|
||||||
|
gaps_out = 15
|
||||||
|
border_size = 2
|
||||||
|
col.active_border = rgb(11111b)
|
||||||
|
col.inactive_border = rgb(11111b)
|
||||||
|
cursor_inactive_timeout = 1
|
||||||
|
layout = master
|
||||||
|
}
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
misc {
|
||||||
|
disable_hyprland_logo = true
|
||||||
|
disable_splash_rendering = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# Decorations
|
||||||
|
decoration {
|
||||||
|
# Opacity
|
||||||
|
active_opacity = 1.0
|
||||||
|
inactive_opacity = 1.0
|
||||||
|
|
||||||
|
# Blur
|
||||||
|
blur = false
|
||||||
|
blur_size = 10
|
||||||
|
blur_passes = 4
|
||||||
|
blur_new_optimizations = true
|
||||||
|
|
||||||
|
# Shadow
|
||||||
|
drop_shadow = true
|
||||||
|
shadow_ignore_window = true
|
||||||
|
shadow_offset = 2 2
|
||||||
|
shadow_range = 4
|
||||||
|
shadow_render_power = 2
|
||||||
|
col.shadow = 0x66000000
|
||||||
|
}
|
||||||
|
|
||||||
|
# Blurring layerSurfaces
|
||||||
|
blurls = gtk-layer-shell
|
||||||
|
blurls = lockscreen
|
||||||
|
|
||||||
|
# Animations
|
||||||
|
animations {
|
||||||
|
enabled = true
|
||||||
|
|
||||||
|
# bezier curve
|
||||||
|
bezier = overshot, 0.05, 0.9, 0.1, 1.05
|
||||||
|
bezier = smoothOut, 0.36, 0, 0.66, -0.56
|
||||||
|
bezier = smoothIn, 0.25, 1, 0.5, 1
|
||||||
|
|
||||||
|
# animation list
|
||||||
|
animation = windows, 1, 5, overshot, slide
|
||||||
|
animation = windowsOut, 1, 4, smoothOut, slide
|
||||||
|
animation = windowsMove, 1, 4, default
|
||||||
|
animation = border, 1, 10, default
|
||||||
|
animation = fade, 1, 10, smoothIn
|
||||||
|
animation = fadeDim, 1, 10, smoothIn
|
||||||
|
animation = workspaces, 1, 6, overshot, slidevert
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gestures
|
||||||
|
gestures {
|
||||||
|
workspace_swipe = true
|
||||||
|
workspace_swipe_fingers = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
# Layouts
|
||||||
|
dwindle {
|
||||||
|
no_gaps_when_only = true
|
||||||
|
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
|
||||||
|
preserve_split = true # you probably want this
|
||||||
|
}
|
||||||
|
|
||||||
|
# Window rules
|
||||||
|
windowrule = float, file_progress
|
||||||
|
windowrule = float, confirm
|
||||||
|
windowrule = float, dialog
|
||||||
|
windowrule = float, download
|
||||||
|
windowrule = float, notification
|
||||||
|
windowrule = float, error
|
||||||
|
windowrule = float, splash
|
||||||
|
windowrule = float, confirmreset
|
||||||
|
windowrule = float, title:Open File
|
||||||
|
windowrule = float, title:branchdialog
|
||||||
|
windowrule = float, zoom
|
||||||
|
windowrule = float, vlc
|
||||||
|
windowrule = float, Lxappearance
|
||||||
|
windowrule = float, ncmpcpp
|
||||||
|
windowrule = float, Rofi
|
||||||
|
windowrule = animation none, Rofi
|
||||||
|
windowrule = float, viewnior
|
||||||
|
windowrule = float, pavucontrol-qt
|
||||||
|
windowrule = float, gucharmap
|
||||||
|
windowrule = float, gnome-font
|
||||||
|
windowrule = float, org.gnome.Settings
|
||||||
|
windowrule = float, file-roller
|
||||||
|
windowrule = float, nautilus
|
||||||
|
windowrule = float, nemo
|
||||||
|
windowrule = float, thunar
|
||||||
|
windowrule = float, wdisplays
|
||||||
|
windowrule = fullscreen, wlogout
|
||||||
|
windowrule = float, title:wlogout
|
||||||
|
windowrule = fullscreen, title:wlogout
|
||||||
|
windowrule = float, pavucontrol-qt
|
||||||
|
windowrule = float, keepassxc
|
||||||
|
windowrule = idleinhibit focus, mpv
|
||||||
|
windowrule = idleinhibit fullscreen, firefox
|
||||||
|
windowrule = float, title:^(Media viewer)$
|
||||||
|
windowrule = float, title:^(Transmission)$
|
||||||
|
windowrule = float, title:^(Volume Control)$
|
||||||
|
windowrule = float, title:^(Picture-in-Picture)$
|
||||||
|
windowrule = float, title:^(Firefox — Sharing Indicator)$
|
||||||
|
windowrule = move 0 0, title:^(Firefox — Sharing Indicator)$
|
||||||
|
windowrule = size 800 600, title:^(Volume Control)$
|
||||||
|
windowrule = move 75 44%, title:^(Volume Control)$
|
||||||
|
|
||||||
|
# Variables
|
||||||
|
$term = ${terminal}
|
||||||
|
$browser = firefox
|
||||||
|
$editor = nvim
|
||||||
|
$files = nemo
|
||||||
|
$launcher = ${menu}
|
||||||
|
|
||||||
|
# Apps
|
||||||
|
bind = SUPER, RETURN, exec, $term
|
||||||
|
bind = SUPER SHIFT, E, exec, $editor
|
||||||
|
bind = SUPER SHIFT, F, exec, $files
|
||||||
|
bind = SUPER SHIFT, B, exec, $browser
|
||||||
|
bind = SUPER, SPACE, exec, $launcher
|
||||||
|
bind = SUPER, E, exec, $emoji
|
||||||
|
bind = SUPER, X, exec, power-menu
|
||||||
|
|
||||||
|
# Function keys
|
||||||
|
bind = ,XF86MonBrightnessUp, exec, brightnessctl s +10
|
||||||
|
bind = ,XF86MonBrightnessDown, exec, brightnessctl s 10-
|
||||||
|
|
||||||
|
# Screenshots
|
||||||
|
bind = , Print, exec, $screenshotarea
|
||||||
|
bind = CTRL, Print, exec, grimblast --notify --cursor copysave output
|
||||||
|
bind = SUPER SHIFT CTRL, R, exec, grimblast --notify --cursor copysave output
|
||||||
|
bind = ALT, Print, exec, grimblast --notify --cursor copysave screen
|
||||||
|
bind = SUPER SHIFT ALT, R, exec, grimblast --notify --cursor copysave screen
|
||||||
|
|
||||||
|
# Misc
|
||||||
|
bind = CTRL ALT, L, exec, swaylock
|
||||||
|
|
||||||
|
# Window management
|
||||||
|
bind = SUPER, Q, killactive,
|
||||||
|
bind = SUPER, M, exit,
|
||||||
|
bind = SUPER, F, fullscreen,
|
||||||
|
bind = SUPER, Space, togglefloating,
|
||||||
|
bind = SUPER, P, pseudo, # dwindle
|
||||||
|
bind = SUPER, J, togglesplit, # dwindle
|
||||||
|
|
||||||
|
# Focus
|
||||||
|
bind = SUPER, left, movefocus, l
|
||||||
|
bind = SUPER, right, movefocus, r
|
||||||
|
bind = SUPER, up, movefocus, u
|
||||||
|
bind = SUPER, down, movefocus, d
|
||||||
|
|
||||||
|
# Move
|
||||||
|
bind = SUPER SHIFT, left, movewindow, l
|
||||||
|
bind = SUPER SHIFT, right, movewindow, r
|
||||||
|
bind = SUPER SHIFT, up, movewindow, u
|
||||||
|
bind = SUPER SHIFT, down, movewindow, d
|
||||||
|
|
||||||
|
# Resize
|
||||||
|
bind = SUPER CTRL, left, resizeactive, -20 0
|
||||||
|
bind = SUPER CTRL, right, resizeactive, 20 0
|
||||||
|
bind = SUPER CTRL, up, resizeactive, 0 -20
|
||||||
|
bind = SUPER CTRL, down, resizeactive, 0 20
|
||||||
|
|
||||||
|
# Tabbed
|
||||||
|
bind= SUPER, g, togglegroup
|
||||||
|
bind= SUPER, tab, changegroupactive
|
||||||
|
|
||||||
|
# Special workspace
|
||||||
|
bind = SUPER, grave, togglespecialworkspace
|
||||||
|
bind = SUPERSHIFT, grave, movetoworkspace, special
|
||||||
|
|
||||||
|
# Switch workspaces
|
||||||
|
bind = SUPER, ampersand, workspace, 1
|
||||||
|
bind = SUPER, eacute, workspace, 2
|
||||||
|
bind = SUPER, quotedbl, workspace,
|
||||||
|
bindm = SUPER, mouse:272, movewindow
|
||||||
|
bindm = SUPER, mouse:273, resizewindow
|
||||||
|
bind = SUPER, mouse_down, workspace, e+1
|
||||||
|
bind = SUPER, mouse_up, workspace, e-1
|
||||||
|
'';
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
153
home-manager-modules/waybar/default.nix
Normal file
153
home-manager-modules/waybar/default.nix
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.luj.programs.waybar;
|
||||||
|
in
|
||||||
|
with lib;
|
||||||
|
{
|
||||||
|
options.luj.programs.waybar = {
|
||||||
|
enable = mkEnableOption "Enable waybar";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
mainBar = {
|
||||||
|
layer = "top";
|
||||||
|
modules-left = [ "custom/arch" "wlr/workspaces" ];
|
||||||
|
modules-center = [ "clock" ];
|
||||||
|
modules-right = [ "backlight" "pulseaudio" "network" "battery" ];
|
||||||
|
"custom/arch" = {
|
||||||
|
format = " ❄ ";
|
||||||
|
tooltip = false;
|
||||||
|
on-click = "sh $HOME/.config/rofi/bin/powermenu";
|
||||||
|
};
|
||||||
|
"wlr/workspaces" = {
|
||||||
|
format = "{name}";
|
||||||
|
tooltip = false;
|
||||||
|
all-outputs = true;
|
||||||
|
};
|
||||||
|
"clock" = { };
|
||||||
|
"backlight" = {
|
||||||
|
device = "intel_backlight";
|
||||||
|
format = "<span color='#cba6f7'>{icon}</span> {percent}%";
|
||||||
|
format-icons = [ "" "" "" "" "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
"pulseaudio" = {
|
||||||
|
format = "<span color='#cba6f7'>{icon}</span> {volume}%";
|
||||||
|
format-muted = "";
|
||||||
|
tooltip = false;
|
||||||
|
format-icons = {
|
||||||
|
headphone = "";
|
||||||
|
default = [ "" "" "" "" "" "" "" "" ];
|
||||||
|
};
|
||||||
|
scroll-step = 1;
|
||||||
|
};
|
||||||
|
"bluetooth" = {
|
||||||
|
format = "<span color='#cba6f7'></span> {status}";
|
||||||
|
format-disabled = "";
|
||||||
|
format-connected = "<span color='#cba6f7'></span> {num_connections}";
|
||||||
|
tooltip-format = "{device_enumerate}";
|
||||||
|
tooltip-format-enumerate-connected = "{device_alias} {device_address}";
|
||||||
|
};
|
||||||
|
"network" = {
|
||||||
|
interface = "wlp1s0f0";
|
||||||
|
format = "{ifname}";
|
||||||
|
format-wifi = "<span color='#cba6f7'> </span>{essid}";
|
||||||
|
format-ethernet = "{ipaddr}/{cidr} ";
|
||||||
|
format-disconnected = "<span color='#cba6f7'> </span>No Network";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
"battery" = {
|
||||||
|
format = "<span color='#cba6f7'>{icon}</span> {capacity}%";
|
||||||
|
format-icons = [ "" "" "" "" "" "" "" "" "" "" ];
|
||||||
|
format-charging = "<span color='#cba6f7'></span> {capacity}%";
|
||||||
|
tooltip = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
style = ''
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
font-family: 'Fira Code', 'Symbols Nerd Font Mono';
|
||||||
|
font-size: 12px;
|
||||||
|
font-feature-settings: '"zero", "ss01", "ss02", "ss03", "ss04", "ss05", "cv31"';
|
||||||
|
min-height: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: transparent;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-arch, #workspaces {
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: #11111b;
|
||||||
|
color: #cba6f7;
|
||||||
|
margin-top: 15px;
|
||||||
|
margin-right: 15px;
|
||||||
|
padding-top: 1px;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-arch {
|
||||||
|
font-size: 20px;
|
||||||
|
margin-left: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
background: #11111b;
|
||||||
|
color: #cdd6f4;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
color: #cba6f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock, #backlight, #pulseaudio, #bluetooth, #network, #battery{
|
||||||
|
border-radius: 10px;
|
||||||
|
background-color: #11111b;
|
||||||
|
color: #cdd6f4;
|
||||||
|
margin-top: 15px;
|
||||||
|
padding-left: 10px;
|
||||||
|
padding-right: 10px;
|
||||||
|
margin-right: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#backlight, #bluetooth {
|
||||||
|
border-top-right-radius: 0;
|
||||||
|
border-bottom-right-radius: 0;
|
||||||
|
padding-right: 5px;
|
||||||
|
margin-right: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
#pulseaudio, #network {
|
||||||
|
border-top-left-radius: 0;
|
||||||
|
border-bottom-left-radius: 0;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#clock {
|
||||||
|
margin-right: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
@keyframes blink {
|
||||||
|
to {
|
||||||
|
background-color: #ffffff;
|
||||||
|
color: black;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#battery.warning:not(.charging) {
|
||||||
|
background: #f38ba8;
|
||||||
|
color: white;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-timing-function: linear;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -28,6 +28,15 @@ in
|
||||||
(overlay-unstable system)
|
(overlay-unstable system)
|
||||||
(final: prev:
|
(final: prev:
|
||||||
{
|
{
|
||||||
|
hyprland = inputs.hyprland.packages.${system}.default.override {
|
||||||
|
enableXWayland = true;
|
||||||
|
hidpiXWayland = true;
|
||||||
|
nvidiaPatches = false;
|
||||||
|
legacyRenderer = true;
|
||||||
|
};
|
||||||
|
waybar = prev.waybar.overrideAttrs (oldAttrs: {
|
||||||
|
mesonFlags = oldAttrs.mesonFlags ++ [ "-Dexperimental=true" ];
|
||||||
|
});
|
||||||
tinystatus = prev.pkgs.callPackage ../packages/tinystatus { };
|
tinystatus = prev.pkgs.callPackage ../packages/tinystatus { };
|
||||||
jackett = prev.unstable.jackett;
|
jackett = prev.unstable.jackett;
|
||||||
radarr = prev.unstable.radarr;
|
radarr = prev.unstable.radarr;
|
||||||
|
|
|
@ -34,7 +34,7 @@ lib: with lib; let
|
||||||
};
|
};
|
||||||
macintosh = {
|
macintosh = {
|
||||||
arch = "aarch64-linux";
|
arch = "aarch64-linux";
|
||||||
nixpkgs_version = "unstable";
|
nixpkgs_version = "nixos-apple-silicon.inputs";
|
||||||
};
|
};
|
||||||
lambda = {
|
lambda = {
|
||||||
arch = "aarch64-linux";
|
arch = "aarch64-linux";
|
||||||
|
|
|
@ -29,8 +29,7 @@
|
||||||
|
|
||||||
|
|
||||||
programs.hyprland.enable = true;
|
programs.hyprland.enable = true;
|
||||||
|
programs.hyprland.package = pkgs.hyprland;
|
||||||
|
|
||||||
|
|
||||||
programs.fish.shellInit = ''
|
programs.fish.shellInit = ''
|
||||||
if test -z (pgrep ssh-agent)
|
if test -z (pgrep ssh-agent)
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
luj.programs.git.enable = true;
|
luj.programs.git.enable = true;
|
||||||
luj.programs.gtk.enable = true;
|
luj.programs.gtk.enable = true;
|
||||||
luj.programs.alacritty.enable = true;
|
luj.programs.alacritty.enable = true;
|
||||||
luj.programs.sway.enable = true;
|
luj.programs.hyprland.enable = true;
|
||||||
|
luj.programs.waybar.enable = true;
|
||||||
|
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -53,6 +54,7 @@
|
||||||
home.packages = with pkgs;
|
home.packages = with pkgs;
|
||||||
[
|
[
|
||||||
du-dust
|
du-dust
|
||||||
|
kitty
|
||||||
jq
|
jq
|
||||||
lazygit
|
lazygit
|
||||||
fira-code
|
fira-code
|
||||||
|
|
BIN
machines/macintosh/wallpaper.jpg
Normal file
BIN
machines/macintosh/wallpaper.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 467 KiB |
Loading…
Add table
Reference in a new issue