Compare commits
16 Commits
32393d5ffe
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bbb5ea812 | |||
| f177f112ce | |||
| fdae46f7a0 | |||
| c23eba7e66 | |||
| 9d2af374c1 | |||
| 50b2993488 | |||
| 8276c65d0f | |||
| 59de16ea4c | |||
| 9261ce133b | |||
| 7fd462a791 | |||
| e936b9da8f | |||
| e078067a5e | |||
| fc1698a5d9 | |||
| 3d2bb28eec | |||
| 2b33bbca32 | |||
| 8d2fa682b3 |
23
flake.lock
generated
23
flake.lock
generated
@@ -530,8 +530,7 @@
|
|||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"hyprsplit": "hyprsplit",
|
"hyprsplit": "hyprsplit",
|
||||||
"nixpkgs": "nixpkgs_2",
|
"nixpkgs": "nixpkgs_2",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix"
|
||||||
"zen-browser": "zen-browser"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"sops-nix": {
|
"sops-nix": {
|
||||||
@@ -615,26 +614,6 @@
|
|||||||
"repo": "xdg-desktop-portal-hyprland",
|
"repo": "xdg-desktop-portal-hyprland",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"zen-browser": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1779946062,
|
|
||||||
"narHash": "sha256-M/2bCPYjiBTkDNV29J/00z10RM3yYnL9X74RqAHDme0=",
|
|
||||||
"owner": "youwen5",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"rev": "2e2c38ba20a3d614d0196e0aa44851547306e861",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "youwen5",
|
|
||||||
"repo": "zen-browser-flake",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"root": "root",
|
"root": "root",
|
||||||
|
|||||||
@@ -11,10 +11,6 @@
|
|||||||
url = "github:Mic92/sops-nix";
|
url = "github:Mic92/sops-nix";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
zen-browser = {
|
|
||||||
url = "github:youwen5/zen-browser-flake";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
hyprsplit = {
|
hyprsplit = {
|
||||||
url = "github:shezdy/hyprsplit";
|
url = "github:shezdy/hyprsplit";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
|||||||
@@ -1,15 +1,48 @@
|
|||||||
{ pkgs, ... }:
|
|
||||||
{
|
{
|
||||||
home = {
|
config,
|
||||||
packages = with pkgs; [
|
pkgs,
|
||||||
# For Noto Sans NF
|
lib,
|
||||||
nerd-fonts.noto
|
...
|
||||||
];
|
}:
|
||||||
|
{
|
||||||
file.".config/eww".source = ./config;
|
options = {
|
||||||
|
programs.eww.widgets = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.eww = {
|
config = {
|
||||||
enable = true;
|
home = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
# For Noto Sans NF
|
||||||
|
nerd-fonts.noto
|
||||||
|
];
|
||||||
|
|
||||||
|
file.".config/eww".source = ./config;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.eww = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.eww = lib.mkIf (config.programs.eww.widgets != [ ]) {
|
||||||
|
Unit = {
|
||||||
|
Description = "Eww widgets";
|
||||||
|
After = [ "hyprland-session.target" ]; # Start only after hyprland
|
||||||
|
PartOf = [ "hyprland-session.target" ]; # Force it to exit if hyprland does
|
||||||
|
};
|
||||||
|
|
||||||
|
Service = {
|
||||||
|
Type = "oneshot";
|
||||||
|
RemainAfterExit = true;
|
||||||
|
ExecStart = "${pkgs.eww}/bin/eww open-many ${lib.concatStringsSep " " config.programs.eww.widgets}";
|
||||||
|
ExecStop = "${pkgs.eww}/bin/eww kill";
|
||||||
|
};
|
||||||
|
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "hyprland-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
124
home-manager/features/hypr/config/animation.lua
Normal file
124
home-manager/features/hypr/config/animation.lua
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
hl.curve("easeOutQuint", {
|
||||||
|
type = "bezier",
|
||||||
|
points = { { 0.23, 1.0 }, { 0.32, 1.0 } },
|
||||||
|
})
|
||||||
|
hl.curve("easeInOutCubic", {
|
||||||
|
type = "bezier",
|
||||||
|
points = { { 0.65, 0.05 }, { 0.36, 1.0 } },
|
||||||
|
})
|
||||||
|
hl.curve("linear", {
|
||||||
|
type = "bezier",
|
||||||
|
points = { { 0.0, 0.0 }, { 1.0, 1.0 } },
|
||||||
|
})
|
||||||
|
hl.curve("almostLinear", {
|
||||||
|
type = "bezier",
|
||||||
|
points = { { 0.5, 0.5 }, { 0.75, 1.0 } },
|
||||||
|
})
|
||||||
|
hl.curve("quick", {
|
||||||
|
type = "bezier",
|
||||||
|
points = { { 0.15, 0.0 }, { 0.1, 1.0 } },
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.animation({
|
||||||
|
leaf = "global",
|
||||||
|
enabled = true,
|
||||||
|
speed = 10.0,
|
||||||
|
bezier = "default",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "border",
|
||||||
|
enabled = true,
|
||||||
|
speed = 5.39,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "windows",
|
||||||
|
enabled = true,
|
||||||
|
speed = 4.79,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "windowsIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 4.1,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
style = "popin 87%",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "windowsOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.49,
|
||||||
|
bezier = "linear",
|
||||||
|
style = "popin 87%",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.73,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.46,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fade",
|
||||||
|
enabled = true,
|
||||||
|
speed = 3.03,
|
||||||
|
bezier = "quick",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "layers",
|
||||||
|
enabled = true,
|
||||||
|
speed = 3.81,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "layersIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 4.0,
|
||||||
|
bezier = "easeOutQuint",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "layersOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.5,
|
||||||
|
bezier = "linear",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeLayersIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.79,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "fadeLayersOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.39,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "workspaces",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.94,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "workspacesIn",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.21,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
|
hl.animation({
|
||||||
|
leaf = "workspacesOut",
|
||||||
|
enabled = true,
|
||||||
|
speed = 1.94,
|
||||||
|
bezier = "almostLinear",
|
||||||
|
style = "fade",
|
||||||
|
})
|
||||||
@@ -1,3 +1,5 @@
|
|||||||
hl.on("hyprland.start", function()
|
hl.on("hyprland.start", function()
|
||||||
hl.exec_cmd("eww open-many primary-statusbar secondary-statusbar")
|
hl.exec_cmd("nm-applet")
|
||||||
|
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'")
|
||||||
|
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'")
|
||||||
end)
|
end)
|
||||||
|
|||||||
99
home-manager/features/hypr/config/binds.lua
Normal file
99
home-manager/features/hypr/config/binds.lua
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
local browser = "firefox --new-window"
|
||||||
|
local mainMod = "SUPER + ALT"
|
||||||
|
local menu = "rofi -show combi -combi-modes drun,ssh,run -theme ~/.config/rofi/launcher/style.rasi"
|
||||||
|
local terminal = "foot"
|
||||||
|
|
||||||
|
local split = require("hyprsplit")
|
||||||
|
|
||||||
|
hl.bind("SUPER + ALT + T", function()
|
||||||
|
hl.exec_cmd(terminal)
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + B", function()
|
||||||
|
hl.exec_cmd(browser)
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + D", function()
|
||||||
|
hl.exec_cmd(menu)
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + S", function()
|
||||||
|
hl.exec_cmd("hyprshot -m region --clipboard-only")
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + CTRL + SHIFT + S", function()
|
||||||
|
hl.exec_cmd("hyprshot -m region -o ~/Pictures")
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + C", function()
|
||||||
|
hl.exec_cmd("swaync-client -t")
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + CTRL + Q", function()
|
||||||
|
hl.exec_cmd("/home/drew/.config/rofi/powermenu/powermenu.sh")
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + X", function()
|
||||||
|
hl.exec_cmd("/home/drew/.config/rofi/powermenu/powermenu.sh")
|
||||||
|
end)
|
||||||
|
hl.bind("SUPER + ALT + F", hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + F", hl.dsp.window.fullscreen({ action = "toggle" }))
|
||||||
|
hl.bind("SUPER + ALT + CTRL + left", hl.dsp.window.resize({ x = -20, y = 0 }))
|
||||||
|
hl.bind("SUPER + ALT + CTRL + right", hl.dsp.window.resize({ x = 20, y = 0 }))
|
||||||
|
hl.bind("SUPER + ALT + CTRL + down", hl.dsp.window.resize({ x = 0, y = 20 }))
|
||||||
|
hl.bind("SUPER + ALT + CTRL + up", hl.dsp.window.resize({ x = 0, y = -20 }))
|
||||||
|
hl.bind("SUPER + ALT + R", hl.dsp.focus({ monitor = "next" }))
|
||||||
|
--
|
||||||
|
hl.bind("SUPER + ALT + r", hl.dsp.focus({ monitor = "l" }))
|
||||||
|
hl.bind("SUPER + ALT + s", hl.dsp.focus({ monitor = "r" }))
|
||||||
|
|
||||||
|
local hy3 = hl.plugin.hy3
|
||||||
|
|
||||||
|
hl.bind("SUPER + ALT + Q", hy3.kill_active())
|
||||||
|
hl.bind("SUPER + ALT + G", hy3.make_group("opposite"))
|
||||||
|
hl.bind("SUPER + ALT + W", hy3.make_group("tab", { toggle = true }))
|
||||||
|
hl.bind("SUPER + ALT + A", hy3.change_focus("raise"))
|
||||||
|
hl.bind("SUPER + ALT + Z", hy3.change_focus("lower"))
|
||||||
|
hl.bind("SUPER + ALT + O", hy3.change_group("opposite"))
|
||||||
|
hl.bind("SUPER + ALT + left", hy3.move_focus("left"))
|
||||||
|
hl.bind("SUPER + ALT + right", hy3.move_focus("right"))
|
||||||
|
hl.bind("SUPER + ALT + up", hy3.move_focus("up"))
|
||||||
|
hl.bind("SUPER + ALT + down", hy3.move_focus("down"))
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + left", hy3.move_window("left"))
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + right", hy3.move_window("right"))
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + up", hy3.move_window("up"))
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + down", hy3.move_window("down"))
|
||||||
|
|
||||||
|
-- Workspace binds
|
||||||
|
for i = 1, 10 do
|
||||||
|
hl.bind("SUPER + ALT + " .. (i % 10), split.dsp.focus({ workspace = tostring(i) }))
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + " .. (i % 10), split.dsp.window.move({ workspace = tostring(i) }))
|
||||||
|
end
|
||||||
|
|
||||||
|
hl.bind("SUPER + ALT + SHIFT + r", hl.dsp.window.move({ monitor = "+1" }))
|
||||||
|
hl.bind(" + XF86AudioRaiseVolume", function()
|
||||||
|
hl.exec_cmd("swayosd-client --output-volume raise")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioLowerVolume", function()
|
||||||
|
hl.exec_cmd("swayosd-client --output-volume lower")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioMute", function()
|
||||||
|
hl.exec_cmd("swayosd-client --output-volume mute-toggle")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioMicMute", function()
|
||||||
|
hl.exec_cmd("swayosd-client --input-volume mute-toggle")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86MonBrightnessUp", function()
|
||||||
|
hl.exec_cmd("brightnessctl s 10%+")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86MonBrightnessDown", function()
|
||||||
|
hl.exec_cmd("brightnessctl s 10%-")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioNext", function()
|
||||||
|
hl.exec_cmd("playerctl next")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioPause", function()
|
||||||
|
hl.exec_cmd("playerctl play-pause")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioPlay", function()
|
||||||
|
hl.exec_cmd("playerctl play-pause")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind(" + XF86AudioPrev", function()
|
||||||
|
hl.exec_cmd("playerctl previous")
|
||||||
|
end, { locked = true })
|
||||||
|
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
||||||
|
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouce = true })
|
||||||
|
-- hl.bind(" + mouse:272", hl.dsp.hy3:focustab({ mouse })) --, { non_consuming = true }
|
||||||
@@ -1,8 +1,3 @@
|
|||||||
local browser = "zen --new-window"
|
|
||||||
local mainMod = "SUPER + ALT"
|
|
||||||
local menu = "rofi -show combi -combi-modes drun,ssh,run -theme ~/.config/rofi/launcher/style.rasi"
|
|
||||||
local terminal = "foot"
|
|
||||||
|
|
||||||
local split = require("hyprsplit")
|
local split = require("hyprsplit")
|
||||||
|
|
||||||
split.config({
|
split.config({
|
||||||
@@ -16,10 +11,13 @@ hl.config({
|
|||||||
border_size = 2,
|
border_size = 2,
|
||||||
col = {
|
col = {
|
||||||
active_border = {
|
active_border = {
|
||||||
colors = { "rgba(eeeeffee)", "rgba(3366ffee)" },
|
colors = { "rgba(ff00ffee)", "rgba(ff9900ee)" },
|
||||||
|
angle = 45,
|
||||||
|
},
|
||||||
|
inactive_border = {
|
||||||
|
colors = { "rgba(00ffff99)", "rgba(0000cc99)" },
|
||||||
angle = 45,
|
angle = 45,
|
||||||
},
|
},
|
||||||
inactive_border = "rgba(595959aa)",
|
|
||||||
},
|
},
|
||||||
gaps_in = 5,
|
gaps_in = 5,
|
||||||
gaps_out = 10,
|
gaps_out = 10,
|
||||||
@@ -86,299 +84,8 @@ hl.device({
|
|||||||
sensitivity = -0.200000,
|
sensitivity = -0.200000,
|
||||||
})
|
})
|
||||||
|
|
||||||
hl.monitor({
|
|
||||||
output = "DP-2",
|
|
||||||
mode = "3440x1440@164",
|
|
||||||
position = "0x0",
|
|
||||||
})
|
|
||||||
hl.monitor({
|
|
||||||
output = "DP-1",
|
|
||||||
mode = "2560x1440",
|
|
||||||
position = "-1440x-510",
|
|
||||||
-- 0 -> normal (no transforms)
|
|
||||||
-- 1 -> 90 degrees
|
|
||||||
-- 2 -> 180 degrees
|
|
||||||
-- 3 -> 270 degrees
|
|
||||||
-- 4 -> flipped
|
|
||||||
-- 5 -> flipped + 90 degrees
|
|
||||||
-- 6 -> flipped + 180 degrees
|
|
||||||
-- 7 -> flipped + 270 degrees
|
|
||||||
transform = 1,
|
|
||||||
})
|
|
||||||
|
|
||||||
hl.workspace_rule({ workspace = "1" })
|
|
||||||
hl.workspace_rule({ workspace = "2" })
|
|
||||||
hl.workspace_rule({ workspace = "3" })
|
|
||||||
hl.workspace_rule({ workspace = "4" })
|
|
||||||
hl.workspace_rule({ workspace = "5" })
|
|
||||||
hl.workspace_rule({ workspace = "6" })
|
|
||||||
hl.workspace_rule({ workspace = "7" })
|
|
||||||
hl.workspace_rule({ workspace = "8" })
|
|
||||||
hl.workspace_rule({ workspace = "9" })
|
|
||||||
hl.workspace_rule({ workspace = "10" })
|
|
||||||
hl.workspace_rule({ workspace = "11" })
|
|
||||||
hl.workspace_rule({ workspace = "12" })
|
|
||||||
hl.workspace_rule({ workspace = "13" })
|
|
||||||
hl.workspace_rule({ workspace = "14" })
|
|
||||||
hl.workspace_rule({ workspace = "15" })
|
|
||||||
hl.workspace_rule({ workspace = "16" })
|
|
||||||
hl.workspace_rule({ workspace = "17" })
|
|
||||||
hl.workspace_rule({ workspace = "18" })
|
|
||||||
hl.workspace_rule({ workspace = "19" })
|
|
||||||
hl.workspace_rule({ workspace = "20" })
|
|
||||||
|
|
||||||
hl.window_rule({ match = "match:class Rofi", stay_focused = true })
|
|
||||||
-- hl.window_rule({ match = { class = "suppress_event maximize" }, "match:class" = ".*" })
|
|
||||||
-- hl.window_rule({ match = { class = "fullscreen 1" }, "match:class" = "^steam_app_d+$" })
|
|
||||||
-- PATTERN: MERGED with line 208
|
|
||||||
-- MIGRATION_WARNING: Window rule conflict for 'center on': 'match:class ^steam_app_d+$' (line 199) vs 'match:class Rofi' (line 208)
|
|
||||||
-- hl.window_rule({ match = { class = "center on" }, match:class = "^steam_app_d+$", match:class = "Rofi" })
|
|
||||||
-- PATTERN: MERGED with line 202
|
|
||||||
-- MIGRATION_WARNING: Window rule conflict for 'monitor 1': 'match:title ^World of Warcraft$' (line 200) vs 'match:title ^Battle.net$' (line 202)
|
|
||||||
-- MIGRATION_WARNING: Window rule conflict for 'monitor 1': 'match:title ^World of Warcraft$' (line 200) vs 'match:title ^Balatro$' (line 204)
|
|
||||||
-- MIGRATION_WARNING: Window rule conflict for 'monitor 1': 'match:title ^World of Warcraft$' (line 200) vs 'match:class steam_app_1091500' (line 206)
|
|
||||||
-- hl.window_rule({
|
|
||||||
-- match = { class = "monitor 1" },
|
|
||||||
-- match:title = "^World of Warcraft$",
|
|
||||||
-- match:title = "^Battle.net$",
|
|
||||||
-- match:title = "^Balatro$",
|
|
||||||
-- match:class = "steam_app_1091500",
|
|
||||||
-- })
|
|
||||||
-- PATTERN: MERGED with line 207
|
|
||||||
-- MIGRATION_WARNING: Window rule conflict for 'fullscreen on': 'match:title ^World of Warcraft$' (line 201) vs 'match:class steam_app_1091500' (line 207)
|
|
||||||
-- hl.window_rule({ match = { class = "fullscreen on" }, match:title = "^World of Warcraft$", match:class = "steam_app_1091500" })
|
|
||||||
-- hl.window_rule({ match = { class = "float on" }, match:title = "^Battle.net$" })
|
|
||||||
-- hl.window_rule({ match = { class = "tile on" }, match:title = "^Balatro$" })
|
|
||||||
|
|
||||||
hl.bind("SUPER + ALT + T", function()
|
|
||||||
hl.exec_cmd(terminal)
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + B", function()
|
|
||||||
hl.exec_cmd(browser)
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + D", function()
|
|
||||||
hl.exec_cmd(menu)
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + S", function()
|
|
||||||
hl.exec_cmd("hyprshot -m region --clipboard-only")
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + CTRL + SHIFT + S", function()
|
|
||||||
hl.exec_cmd("hyprshot -m region -o ~/Pictures")
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + C", function()
|
|
||||||
hl.exec_cmd("swaync-client -t")
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + CTRL + Q", function()
|
|
||||||
hl.exec_cmd("/home/drew/.config/rofi/powermenu/powermenu.sh")
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + X", function()
|
|
||||||
hl.exec_cmd("/home/drew/.config/rofi/powermenu/powermenu.sh")
|
|
||||||
end)
|
|
||||||
hl.bind("SUPER + ALT + F", hl.dsp.window.float({ action = "toggle" }))
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + F", hl.dsp.window.fullscreen({ action = "toggle" }))
|
|
||||||
hl.bind("SUPER + ALT + CTRL + left", hl.dsp.window.resize({ x = -20, y = 0 }))
|
|
||||||
hl.bind("SUPER + ALT + CTRL + right", hl.dsp.window.resize({ x = 20, y = 0 }))
|
|
||||||
hl.bind("SUPER + ALT + CTRL + down", hl.dsp.window.resize({ x = 0, y = 20 }))
|
|
||||||
hl.bind("SUPER + ALT + CTRL + up", hl.dsp.window.resize({ x = 0, y = -20 }))
|
|
||||||
hl.bind("SUPER + ALT + R", hl.dsp.focus({ monitor = "next" }))
|
|
||||||
--
|
|
||||||
hl.bind("SUPER + ALT + r", hl.dsp.focus({ monitor = "l" }))
|
|
||||||
hl.bind("SUPER + ALT + s", hl.dsp.focus({ monitor = "r" }))
|
|
||||||
|
|
||||||
local hy3 = hl.plugin.hy3
|
|
||||||
|
|
||||||
hl.bind("SUPER + ALT + Q", hy3.kill_active())
|
|
||||||
hl.bind("SUPER + ALT + G", hy3.make_group("opposite"))
|
|
||||||
hl.bind("SUPER + ALT + W", hy3.make_group("tab", { toggle = true }))
|
|
||||||
hl.bind("SUPER + ALT + A", hy3.change_focus("raise"))
|
|
||||||
hl.bind("SUPER + ALT + Z", hy3.change_focus("lower"))
|
|
||||||
hl.bind("SUPER + ALT + O", hy3.change_group("opposite"))
|
|
||||||
hl.bind("SUPER + ALT + left", hy3.move_focus("left"))
|
|
||||||
hl.bind("SUPER + ALT + right", hy3.move_focus("right"))
|
|
||||||
hl.bind("SUPER + ALT + up", hy3.move_focus("up"))
|
|
||||||
hl.bind("SUPER + ALT + down", hy3.move_focus("down"))
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + left", hy3.move_window("left"))
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + right", hy3.move_window("right"))
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + up", hy3.move_window("up"))
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + down", hy3.move_window("down"))
|
|
||||||
|
|
||||||
-- Workspace binds
|
|
||||||
for i = 1, 10 do
|
|
||||||
hl.bind("SUPER + ALT + " .. (i % 10), split.dsp.focus({ workspace = tostring(i) }))
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + " .. (i % 10), hy3.move_to_workspace(tostring(i)))
|
|
||||||
end
|
|
||||||
|
|
||||||
hl.bind("SUPER + ALT + SHIFT + r", hl.dsp.window.move({ monitor = "+1" }))
|
|
||||||
hl.bind(" + XF86AudioRaiseVolume", function()
|
|
||||||
hl.exec_cmd("swayosd-client --output-volume raise")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioLowerVolume", function()
|
|
||||||
hl.exec_cmd("swayosd-client --output-volume lower")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioMute", function()
|
|
||||||
hl.exec_cmd("swayosd-client --output-volume mute-toggle")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioMicMute", function()
|
|
||||||
hl.exec_cmd("swayosd-client --input-volume mute-toggle")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86MonBrightnessUp", function()
|
|
||||||
hl.exec_cmd("brightnessctl s 10%+")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86MonBrightnessDown", function()
|
|
||||||
hl.exec_cmd("brightnessctl s 10%-")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioNext", function()
|
|
||||||
hl.exec_cmd("playerctl next")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioPause", function()
|
|
||||||
hl.exec_cmd("playerctl play-pause")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioPlay", function()
|
|
||||||
hl.exec_cmd("playerctl play-pause")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind(" + XF86AudioPrev", function()
|
|
||||||
hl.exec_cmd("playerctl previous")
|
|
||||||
end, { locked = true })
|
|
||||||
hl.bind("SUPER + mouse:272", hl.dsp.window.drag(), { mouse = true })
|
|
||||||
hl.bind("SUPER + mouse:273", hl.dsp.window.resize(), { mouce = true })
|
|
||||||
-- hl.bind(" + mouse:272", hl.dsp.hy3:focustab({ mouse })) --, { non_consuming = true }
|
|
||||||
|
|
||||||
hl.on("hyprland.start", function()
|
|
||||||
hl.exec_cmd("hyprctl plugin load /nix/store/faphbyy63c9v1m6a7dl3ash30vy8bap9-hy3-0.55.0/lib/libhy3.so")
|
|
||||||
hl.exec_cmd("nm-applet")
|
|
||||||
hl.exec_cmd("sleep 2 && hyprpm reload -n")
|
|
||||||
hl.exec_cmd("systemctl --user start hyprpolkitagent")
|
|
||||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'")
|
|
||||||
hl.exec_cmd("gsettings set org.gnome.desktop.interface gtk-theme 'Adwaita-dark'")
|
|
||||||
hl.exec_cmd("wpaperd")
|
|
||||||
hl.exec_cmd("sleep 2 && eww open-many primary-statusbar secondary-statusbar")
|
|
||||||
hl.exec_cmd("xrandr --output DP-2 --primary")
|
|
||||||
end)
|
|
||||||
|
|
||||||
hl.curve("easeOutQuint", {
|
|
||||||
type = "bezier",
|
|
||||||
points = { { 0.23, 1.0 }, { 0.32, 1.0 } },
|
|
||||||
})
|
|
||||||
hl.curve("easeInOutCubic", {
|
|
||||||
type = "bezier",
|
|
||||||
points = { { 0.65, 0.05 }, { 0.36, 1.0 } },
|
|
||||||
})
|
|
||||||
hl.curve("linear", {
|
|
||||||
type = "bezier",
|
|
||||||
points = { { 0.0, 0.0 }, { 1.0, 1.0 } },
|
|
||||||
})
|
|
||||||
hl.curve("almostLinear", {
|
|
||||||
type = "bezier",
|
|
||||||
points = { { 0.5, 0.5 }, { 0.75, 1.0 } },
|
|
||||||
})
|
|
||||||
hl.curve("quick", {
|
|
||||||
type = "bezier",
|
|
||||||
points = { { 0.15, 0.0 }, { 0.1, 1.0 } },
|
|
||||||
})
|
|
||||||
|
|
||||||
hl.animation({
|
|
||||||
leaf = "global",
|
|
||||||
enabled = true,
|
|
||||||
speed = 10.0,
|
|
||||||
bezier = "default",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "border",
|
|
||||||
enabled = true,
|
|
||||||
speed = 5.39,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "windows",
|
|
||||||
enabled = true,
|
|
||||||
speed = 4.79,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "windowsIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 4.1,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
style = "popin 87%",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "windowsOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.49,
|
|
||||||
bezier = "linear",
|
|
||||||
style = "popin 87%",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.73,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.46,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fade",
|
|
||||||
enabled = true,
|
|
||||||
speed = 3.03,
|
|
||||||
bezier = "quick",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "layers",
|
|
||||||
enabled = true,
|
|
||||||
speed = 3.81,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "layersIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 4.0,
|
|
||||||
bezier = "easeOutQuint",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "layersOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.5,
|
|
||||||
bezier = "linear",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeLayersIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.79,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "fadeLayersOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.39,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "workspaces",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.94,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "workspacesIn",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.21,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
hl.animation({
|
|
||||||
leaf = "workspacesOut",
|
|
||||||
enabled = true,
|
|
||||||
speed = 1.94,
|
|
||||||
bezier = "almostLinear",
|
|
||||||
style = "fade",
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Additional configs
|
-- Additional configs
|
||||||
require("config.autostart")
|
require("config.autostart")
|
||||||
|
require("config.binds")
|
||||||
|
require("config.animation")
|
||||||
|
require("config.windows")
|
||||||
|
|||||||
20
home-manager/features/hypr/config/windows.lua
Normal file
20
home-manager/features/hypr/config/windows.lua
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
hl.window_rule({
|
||||||
|
match = {
|
||||||
|
class = "Rofi",
|
||||||
|
},
|
||||||
|
stay_focused = true,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Set border color to red if window is fullscreen
|
||||||
|
hl.window_rule({
|
||||||
|
match = { fullscreen = true },
|
||||||
|
border_color = "rgb(FF0000) rgb(880808)",
|
||||||
|
})
|
||||||
|
|
||||||
|
-- Suppress maximize events
|
||||||
|
hl.window_rule({
|
||||||
|
match = {
|
||||||
|
class = ".*",
|
||||||
|
},
|
||||||
|
suppress_event = "maximize",
|
||||||
|
})
|
||||||
@@ -1,8 +1,15 @@
|
|||||||
{ pkgs, inputs, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../swaylock.nix
|
../swaylock.nix
|
||||||
./hypridle.nix
|
./hypridle.nix
|
||||||
|
../../options/monitors.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
xdg.configFile = {
|
xdg.configFile = {
|
||||||
@@ -11,9 +18,6 @@
|
|||||||
recursive = true;
|
recursive = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
"hypr/base.lua" = {
|
|
||||||
source = ./config/hyprland.lua;
|
|
||||||
};
|
|
||||||
"hypr/config" = {
|
"hypr/config" = {
|
||||||
source = ./config;
|
source = ./config;
|
||||||
recursive = true;
|
recursive = true;
|
||||||
@@ -48,7 +52,6 @@
|
|||||||
|
|
||||||
# Disable systemd because it conflicts with UWSM
|
# Disable systemd because it conflicts with UWSM
|
||||||
systemd.enable = false;
|
systemd.enable = false;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
programs.hyprlock = {
|
programs.hyprlock = {
|
||||||
|
|||||||
17
home-manager/features/hyprpaper.nix
Normal file
17
home-manager/features/hyprpaper.nix
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
|
services.hyprpaper = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
splash = false; # Disable the little quotes they put on there
|
||||||
|
wallpaper = map (mon: {
|
||||||
|
monitor = mon;
|
||||||
|
# Each monitor gets a folder under wallpaper that containes the current images.
|
||||||
|
path = "~/Pictures/Wallpaper/${mon}";
|
||||||
|
timeout = 3600;
|
||||||
|
recursive = true;
|
||||||
|
fit_mode = "cover";
|
||||||
|
}) (builtins.attrNames config.hardware.monitors);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,10 @@
|
|||||||
{ pkgs, inputs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
let
|
let
|
||||||
zen-browser = inputs.zen-browser.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
browser = "firefox";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -11,6 +15,7 @@ in
|
|||||||
../apps/element.nix
|
../apps/element.nix
|
||||||
../apps/discord.nix
|
../apps/discord.nix
|
||||||
./terminal.nix
|
./terminal.nix
|
||||||
|
../options/monitors.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
@@ -19,9 +24,6 @@ in
|
|||||||
gimp3
|
gimp3
|
||||||
vlc
|
vlc
|
||||||
|
|
||||||
# Zen is not part of nixpkgs... yet
|
|
||||||
zen-browser
|
|
||||||
|
|
||||||
# Common utilities
|
# Common utilities
|
||||||
feh
|
feh
|
||||||
networkmanagerapplet # network control
|
networkmanagerapplet # network control
|
||||||
@@ -59,7 +61,10 @@ in
|
|||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
# browsers
|
# browsers
|
||||||
firefox.enable = true;
|
firefox = {
|
||||||
|
enable = true;
|
||||||
|
configPath = "${config.xdg.configHome}/mozilla/firefox";
|
||||||
|
};
|
||||||
chromium.enable = true;
|
chromium.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -101,13 +106,13 @@ in
|
|||||||
xdg.mimeApps = {
|
xdg.mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultApplications = {
|
defaultApplications = {
|
||||||
"text/html" = [ "zen.desktop" ];
|
"text/html" = [ "${browser}.desktop" ];
|
||||||
"default-web-browser" = [ "zen.desktop" ];
|
"default-web-browser" = [ "${browser}.desktop" ];
|
||||||
"x-scheme-handler/http" = [ "zen.desktop" ];
|
"x-scheme-handler/http" = [ "${browser}.desktop" ];
|
||||||
"x-scheme-handler/https" = [ "zen.desktop" ];
|
"x-scheme-handler/https" = [ "${browser}.desktop" ];
|
||||||
"x-scheme-handler/about" = [ "zen.desktop" ];
|
"x-scheme-handler/about" = [ "${browser}.desktop" ];
|
||||||
"x-scheme-handler/unknown" = [ "zen.desktop" ];
|
"x-scheme-handler/unknown" = [ "${browser}.desktop" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
home.sessionVariables.DEFAULT_BROWSER = "${zen-browser}/bin/zen";
|
home.sessionVariables.DEFAULT_BROWSER = "${pkgs."${browser}"}/bin/${browser}";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
Install = {
|
Install = {
|
||||||
WantedBy = [ "default.target" ];
|
# It doesn't like to disconnect on sleep, so not making it automount at all
|
||||||
|
# WantedBy = [ "default.target" ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -11,7 +11,8 @@
|
|||||||
"lazyvim.plugins.extras.lang.rust",
|
"lazyvim.plugins.extras.lang.rust",
|
||||||
"lazyvim.plugins.extras.lang.tailwind",
|
"lazyvim.plugins.extras.lang.tailwind",
|
||||||
"lazyvim.plugins.extras.lang.toml",
|
"lazyvim.plugins.extras.lang.toml",
|
||||||
"lazyvim.plugins.extras.lang.typescript"
|
"lazyvim.plugins.extras.lang.typescript",
|
||||||
|
"lazyvim.plugins.extras.ai.sidekick"
|
||||||
],
|
],
|
||||||
"install_version": 8,
|
"install_version": 8,
|
||||||
"version": 8
|
"version": 8
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ return {
|
|||||||
vtsls = {},
|
vtsls = {},
|
||||||
-- Haskell
|
-- Haskell
|
||||||
hls = {},
|
hls = {},
|
||||||
|
-- Copilot
|
||||||
|
copilot = { enabled = true },
|
||||||
},
|
},
|
||||||
codelens = {
|
codelens = {
|
||||||
enable = true,
|
enable = true,
|
||||||
|
|||||||
13
home-manager/features/neovim/config/lua/plugins/openscad.lua
Normal file
13
home-manager/features/neovim/config/lua/plugins/openscad.lua
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
return {
|
||||||
|
"salkin-mada/openscad.nvim",
|
||||||
|
config = function()
|
||||||
|
vim.g.openscad_load_snippets = true
|
||||||
|
vim.g.openscad_default_mappings = true
|
||||||
|
vim.g.openscad_fuzzy_finder = "snacks"
|
||||||
|
require("openscad")
|
||||||
|
end,
|
||||||
|
dependencies = {
|
||||||
|
-- Can fall back to Snacks instead.
|
||||||
|
-- "ibhagwan/fzf-lua",
|
||||||
|
},
|
||||||
|
}
|
||||||
95
home-manager/features/neovim/config/lua/plugins/sidekick.lua
Normal file
95
home-manager/features/neovim/config/lua/plugins/sidekick.lua
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
return {
|
||||||
|
-- https://github.com/folke/sidekick.nvim
|
||||||
|
"folke/sidekick.nvim",
|
||||||
|
opts = {
|
||||||
|
cli = {
|
||||||
|
mux = {
|
||||||
|
enabled = false, -- I haven't bothered to include tmux yet
|
||||||
|
backend = "tmux",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
keys = {
|
||||||
|
{
|
||||||
|
"<tab>",
|
||||||
|
function()
|
||||||
|
-- if there is a next edit, jump to it, otherwise apply it if any
|
||||||
|
if not require("sidekick").nes_jump_or_apply() then
|
||||||
|
return "<Tab>" -- fallback to normal tab
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
expr = true,
|
||||||
|
desc = "Goto/Apply Next Edit Suggestion",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<c-.>",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").focus()
|
||||||
|
end,
|
||||||
|
desc = "Sidekick Focus",
|
||||||
|
mode = { "n", "t", "i", "x" },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>aa",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").toggle()
|
||||||
|
end,
|
||||||
|
desc = "Sidekick Toggle CLI",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>as",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").select()
|
||||||
|
end,
|
||||||
|
-- Or to select only installed tools:
|
||||||
|
-- require("sidekick.cli").select({ filter = { installed = true } })
|
||||||
|
desc = "Select CLI",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ad",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").close()
|
||||||
|
end,
|
||||||
|
desc = "Detach a CLI Session",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>at",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").send({ msg = "{this}" })
|
||||||
|
end,
|
||||||
|
mode = { "x", "n" },
|
||||||
|
desc = "Send This",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>af",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").send({ msg = "{file}" })
|
||||||
|
end,
|
||||||
|
desc = "Send File",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>av",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").send({ msg = "{selection}" })
|
||||||
|
end,
|
||||||
|
mode = { "x" },
|
||||||
|
desc = "Send Visual Selection",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"<leader>ap",
|
||||||
|
function()
|
||||||
|
require("sidekick.cli").prompt()
|
||||||
|
end,
|
||||||
|
mode = { "n", "x" },
|
||||||
|
desc = "Sidekick Select Prompt",
|
||||||
|
},
|
||||||
|
-- Example of a keybinding to open Claude directly
|
||||||
|
-- {
|
||||||
|
-- "<leader>ac",
|
||||||
|
-- function()
|
||||||
|
-- require("sidekick.cli").toggle({ name = "claude", focus = true })
|
||||||
|
-- end,
|
||||||
|
-- desc = "Sidekick Toggle Claude",
|
||||||
|
-- },
|
||||||
|
},
|
||||||
|
}
|
||||||
@@ -2,6 +2,11 @@ return {
|
|||||||
"folke/snacks.nvim",
|
"folke/snacks.nvim",
|
||||||
opts = function(_, opts)
|
opts = function(_, opts)
|
||||||
vim.tbl_deep_extend("force", opts, {
|
vim.tbl_deep_extend("force", opts, {
|
||||||
|
styles = {
|
||||||
|
notification = {
|
||||||
|
wo = { wrap = true }, -- wrap notifications
|
||||||
|
},
|
||||||
|
},
|
||||||
picker = {
|
picker = {
|
||||||
smart = {
|
smart = {
|
||||||
-- Remove the "recent" picker so we don't get things from other directories.
|
-- Remove the "recent" picker so we don't get things from other directories.
|
||||||
|
|||||||
@@ -21,6 +21,7 @@
|
|||||||
sqlite # For Snacks
|
sqlite # For Snacks
|
||||||
imagemagick # For image conversion/display
|
imagemagick # For image conversion/display
|
||||||
vscode-langservers-extracted # For language servers (it wants this version of eslint for some reason)
|
vscode-langservers-extracted # For language servers (it wants this version of eslint for some reason)
|
||||||
|
copilot-language-server # Enable the copilot language server
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
monitors:
|
{ config }:
|
||||||
{ ... }:
|
|
||||||
{
|
{
|
||||||
# TODO: Merge into hyprland
|
# NOTE: Wpaperd displays wallpaper upside-down on 90´ ccw rotated
|
||||||
# wayland.windowManager.hyprland.settings.exec-once = [
|
# monitors as of 26.05
|
||||||
# "wpaperd"
|
|
||||||
# ];
|
|
||||||
|
|
||||||
services.wpaperd = {
|
services.wpaperd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings =
|
settings =
|
||||||
@@ -13,10 +9,11 @@ monitors:
|
|||||||
map (mon: {
|
map (mon: {
|
||||||
name = mon;
|
name = mon;
|
||||||
value = {
|
value = {
|
||||||
# Each monitor gets a folder under wallpaper that containes the current images.
|
# Each monitor gets a folder under wallpaper that
|
||||||
|
# containes the current images.
|
||||||
path = "~/Pictures/Wallpaper/${mon}";
|
path = "~/Pictures/Wallpaper/${mon}";
|
||||||
};
|
};
|
||||||
}) monitors
|
}) (builtins.attrNames config.hardware.monitors)
|
||||||
)
|
)
|
||||||
// {
|
// {
|
||||||
default = {
|
default = {
|
||||||
100
home-manager/options/monitors.nix
Normal file
100
home-manager/options/monitors.nix
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
{
|
||||||
|
options =
|
||||||
|
with lib;
|
||||||
|
with types;
|
||||||
|
{
|
||||||
|
hardware.monitors = mkOption {
|
||||||
|
type = lazyAttrsOf (submodule {
|
||||||
|
options = {
|
||||||
|
mode = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "auto";
|
||||||
|
};
|
||||||
|
position = mkOption {
|
||||||
|
type = str;
|
||||||
|
default = "auto";
|
||||||
|
};
|
||||||
|
rotation = mkOption {
|
||||||
|
type = enum [
|
||||||
|
"none"
|
||||||
|
"90"
|
||||||
|
"180"
|
||||||
|
"270"
|
||||||
|
];
|
||||||
|
default = "none";
|
||||||
|
};
|
||||||
|
flipped = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
});
|
||||||
|
default = { };
|
||||||
|
description = "Monitor configuration";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# config = {
|
||||||
|
# xdg.configFile."hypr/monitors.lua" = lib.mkIf config.wayland.windowManager.hyprland.enable {
|
||||||
|
# text =
|
||||||
|
# let
|
||||||
|
# workspaceSettings = (
|
||||||
|
# lib.imap0 (
|
||||||
|
# idx:
|
||||||
|
# { name, value }:
|
||||||
|
# let
|
||||||
|
# offset = idx * 10;
|
||||||
|
# in
|
||||||
|
# lib.concatMapStrings (
|
||||||
|
# i:
|
||||||
|
# let
|
||||||
|
# ws = offset + i;
|
||||||
|
# in
|
||||||
|
# ''
|
||||||
|
# hl.workspace_rule({ workspace = ${toString ws}, monitor = "${name}", default_name = "${toString i}" })
|
||||||
|
# ''
|
||||||
|
# ) (lib.range 1 10)
|
||||||
|
# ) (lib.attrsToList config.hardware.monitors)
|
||||||
|
# );
|
||||||
|
# transformMap = {
|
||||||
|
# "none" = {
|
||||||
|
# normal = 0;
|
||||||
|
# flipped = 4;
|
||||||
|
# };
|
||||||
|
# "90" = {
|
||||||
|
# normal = 1;
|
||||||
|
# flipped = 5;
|
||||||
|
# };
|
||||||
|
# "180" = {
|
||||||
|
# normal = 2;
|
||||||
|
# flipped = 6;
|
||||||
|
# };
|
||||||
|
# "270" = {
|
||||||
|
# normal = 3;
|
||||||
|
# flipped = 7;
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
#
|
||||||
|
# monitorTransform =
|
||||||
|
# m:
|
||||||
|
# let
|
||||||
|
# t = transformMap.${m.rotation};
|
||||||
|
# in
|
||||||
|
# if m.flipped then t.flipped else t.normal;
|
||||||
|
#
|
||||||
|
# monitorString = name: m: ''
|
||||||
|
# hl.monitor({
|
||||||
|
# output = "${name}",
|
||||||
|
# mode = "${m.mode}",
|
||||||
|
# position = "${m.position}",
|
||||||
|
# transform = ${toString (monitorTransform m)},
|
||||||
|
# })
|
||||||
|
# '';
|
||||||
|
#
|
||||||
|
# monitorSettings = lib.mapAttrsToList monitorString config.hardware.monitors;
|
||||||
|
# in
|
||||||
|
# lib.concatStringsSep "\n" (workspaceSettings ++ monitorSettings);
|
||||||
|
# };
|
||||||
|
# };
|
||||||
|
}
|
||||||
@@ -29,23 +29,32 @@ immich:
|
|||||||
database: ENC[AES256_GCM,data:1fjOQsLZcq/T+r+AkzomWwCQWw==,iv:c4pn2rC+3xkxLJ7uAdhnTE6zVTRQkfuKK3tjUyDhfAw=,tag:kvk7DOv6X/+RDxfPxVak7w==,type:str]
|
database: ENC[AES256_GCM,data:1fjOQsLZcq/T+r+AkzomWwCQWw==,iv:c4pn2rC+3xkxLJ7uAdhnTE6zVTRQkfuKK3tjUyDhfAw=,tag:kvk7DOv6X/+RDxfPxVak7w==,type:str]
|
||||||
sops:
|
sops:
|
||||||
age:
|
age:
|
||||||
|
- recipient: age1dstsz5g4qthwt2sssu5wp787ku7rnfqm02mqaefsaueswhvqzpmsyft4p4
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBVZnYrVnR1MlBjdzFpQnVi
|
||||||
|
RXFUcEN2N0Zoc2ZUUnprdXc0aElFaXU5c1VBCkxxcGd4QUhOaTl4K0paOTZ3d2Ez
|
||||||
|
Vks4blZLUVZPaklhQlE3WWhVelRFUEkKLS0tIGs2dU44NFdOVm41QXVJbHNkQTVo
|
||||||
|
b2NVRnVFNmF6a2hjRE9OOUxVMGpjSWcKA6Do+oddwMjc2XNJUCeGXY985gJZ4f2v
|
||||||
|
Dyo0/Oyuwz1jFMrjLmnmnmtyn079mT9wsm28KlaEEvzDIxOBnLjx6A==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1yvdzvuvu5wqztcx6ll2xk6x547uuyqy735tjjdd7zftkz53jsf9qf5ahue
|
- recipient: age1yvdzvuvu5wqztcx6ll2xk6x547uuyqy735tjjdd7zftkz53jsf9qf5ahue
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiL3FoUWN1NWlDQTAvRkFM
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBKeGhvQWp6WWx6N1JDdm1J
|
||||||
TkdCMWVXYThIYVZFSlVEVmxUb1JuQmpESWtrClFlTVlHdGhndFJjUWxUMVFybGtn
|
UWlWZTV5ellMd2ZIRWpkRnJDT2s4UVZJMEM4Cll2MnVNTnFWYit2bHpCVzcwbysy
|
||||||
bEpJNkFSVnpueXlvR0NkbU90RkZoTzAKLS0tIHdTTnRteWRNbW9MVmdKSVJLeWxB
|
NkxtMUZFcDJnb3Z1TmlTWDJLNVJ4cnMKLS0tIHdqVXB1U2xVdEtlY3BsemFIcXlC
|
||||||
Zkpxc1lLNVFSUFA2NTJUS0UrOXJCWXMKOuZmbFBdjPIcIUUWHHfGl8TD+HIRa9Hj
|
OHlxaytJTWlNSFRCd2dDaFVsUU1CbUkKp7J+mDnGFS9upV6QWi40ptG85+UZ5y1G
|
||||||
Eykvc7Iv5zl61kuJRorE7DWWS1I2C586c+MZtNo6GPQxUasxWRRgJQ==
|
9ic/sQEMHQe9VeAutVz1GPYWbF3Vt5iawXmtVxN+zx/bLAYGglv5yg==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
- recipient: age1jrk4h7x4qzhr6z5m4d099mlfyjc4n5n9s52r4gfsdz0slnqlqa9sss735v
|
- recipient: age1jrk4h7x4qzhr6z5m4d099mlfyjc4n5n9s52r4gfsdz0slnqlqa9sss735v
|
||||||
enc: |
|
enc: |
|
||||||
-----BEGIN AGE ENCRYPTED FILE-----
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBZck5tK3p6blhxZWp5YkNF
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBkM0RRaFhGKytkSjNMU3cy
|
||||||
b3lnMWI1dHBnQzlDOG05c0YyZlZDTzA5V2pvCis3N1BhNXlmamRFci9wWTBuRWFv
|
d1dlcms4TVMzU2xsSHBqcDJWQTdCU1dZcERJCktHRVZiWkZrbzk4QXRNSmpyY25X
|
||||||
cC9kdWV3RnpFWTFVRVEwaTVWQVdnZE0KLS0tIEhOTzExRzRLaGdKOTRwRmNXcW5P
|
ZUdOS2pSOVpITExpVVFyc1A3QTBDTGsKLS0tIDM4NFd1eWtZSnR4d0tLUnRFYmJW
|
||||||
by9aNFY4dXNxaWxnTXFTQS9reHhuQWMKh5rZ93nFtBV9EpFVRp+E+GXZ6xzVy2Jw
|
QlE3cFYxUXNVam1aMlJEVTRGV2xsN1kKXMeSXiEdXyb6c+dcxX3G/Q+s78lfi90g
|
||||||
vFh4deGcAb60q4odSaeWfk1Dr7L9Ua69oK9omjbCNUt+P7Kwlfca7Q==
|
dvKJPDYvGb/8JXSkZNkLlWvHEVnsAJ1mJFb1idenYzeQvJlsX07rYA==
|
||||||
-----END AGE ENCRYPTED FILE-----
|
-----END AGE ENCRYPTED FILE-----
|
||||||
lastmodified: "2026-02-25T00:28:13Z"
|
lastmodified: "2026-02-25T00:28:13Z"
|
||||||
mac: ENC[AES256_GCM,data:hDmqObrtfoVkQqz8JPkqlyXMbiuyBophjdZNLvTFrZw3pAVNCuzsH4zxFBOaxJttkzLc65DWDHDeEIBY5YZam1GLFFXUQ5E3Dxno7hnyzOoM2ipgDTOacI0gbKJAWgGUF3LNDdqVoREA9LC91LoNUJoNmzpTSFtuLb7ORuwCrH4=,iv:8+W3n1Cr6woEiPU9ECaMYM64HNmFHr2AIw6UohCJi00=,tag:7drkZiPAUHaEx5PagXA9JQ==,type:str]
|
mac: ENC[AES256_GCM,data:hDmqObrtfoVkQqz8JPkqlyXMbiuyBophjdZNLvTFrZw3pAVNCuzsH4zxFBOaxJttkzLc65DWDHDeEIBY5YZam1GLFFXUQ5E3Dxno7hnyzOoM2ipgDTOacI0gbKJAWgGUF3LNDdqVoREA9LC91LoNUJoNmzpTSFtuLb7ORuwCrH4=,iv:8+W3n1Cr6woEiPU9ECaMYM64HNmFHr2AIw6UohCJi00=,tag:7drkZiPAUHaEx5PagXA9JQ==,type:str]
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
# See https://github.com/S41G0N/ly/blob/master/res/config.ini
|
# See https://github.com/S41G0N/ly/blob/master/res/config.ini
|
||||||
settings = {
|
settings = {
|
||||||
animation = "doom"; # matrix|doom|none
|
animation = "matrix"; # matrix|doom|none
|
||||||
bigclock = "en";
|
bigclock = "en";
|
||||||
clear_password = true; # erase the password on failure
|
clear_password = true; # erase the password on failure
|
||||||
clock = "%c"; # Show the clock
|
clock = "%c"; # Show the clock
|
||||||
|
|||||||
@@ -1,33 +1,24 @@
|
|||||||
{ ... }:
|
{ pkgs, ... }:
|
||||||
let
|
|
||||||
monitors = [
|
|
||||||
"DP-1"
|
|
||||||
"DP-2"
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = map (x: ../../../home-manager + x) [
|
||||||
map (x: ../../../home-manager + x) [
|
"/features/astronomy.nix"
|
||||||
"/features/astronomy.nix"
|
"/features/chat.nix"
|
||||||
"/features/chat.nix"
|
"/features/development/development.nix"
|
||||||
"/features/development/development.nix"
|
"/features/development/docker.nix"
|
||||||
"/features/development/docker.nix"
|
"/features/development/haskell.nix"
|
||||||
"/features/development/haskell.nix"
|
"/features/development/markdown.nix"
|
||||||
"/features/development/markdown.nix"
|
"/features/development/typescript.nix"
|
||||||
"/features/development/typescript.nix"
|
"/features/development/vscode.nix"
|
||||||
"/features/development/vscode.nix"
|
"/features/eww"
|
||||||
"/features/eww"
|
"/features/email.nix"
|
||||||
"/features/email.nix"
|
"/features/gaming.nix"
|
||||||
"/features/gaming.nix"
|
"/features/image-editing.nix"
|
||||||
"/features/image-editing.nix"
|
"/features/linux-desktop.nix"
|
||||||
"/features/linux-desktop.nix"
|
"/features/mounts/mcp-archive.nix"
|
||||||
"/features/mounts/mcp-archive.nix"
|
"/features/notes.nix"
|
||||||
"/features/notes.nix"
|
"/features/3d-printing.nix"
|
||||||
"/features/3d-printing.nix"
|
"/features/hyprpaper.nix"
|
||||||
]
|
];
|
||||||
++ [
|
|
||||||
(import ../../../home-manager/features/wallpaper.nix monitors)
|
|
||||||
];
|
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
stateVersion = "24.11";
|
stateVersion = "24.11";
|
||||||
@@ -48,17 +39,44 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: Merge into lua config
|
hardware.monitors = {
|
||||||
|
"DP-2" = {
|
||||||
|
position = "0x0";
|
||||||
|
mode = "3440x1440@164";
|
||||||
|
};
|
||||||
|
"DP-1" = {
|
||||||
|
mode = "2560x1440";
|
||||||
|
position = "-1440x-510";
|
||||||
|
rotation = "90";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.eww.widgets = [
|
||||||
|
"primary-statusbar"
|
||||||
|
"secondary-statusbar"
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.configFile = {
|
||||||
|
"hypr/altair.lua" = {
|
||||||
|
source = ./hyprland.lua;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
wayland.windowManager.hyprland.extraConfig = ''
|
||||||
|
require("altair")
|
||||||
|
'';
|
||||||
|
|
||||||
|
# TODO: Still merging these into the LUA config
|
||||||
# wayland.windowManager.hyprland.settings = {
|
# wayland.windowManager.hyprland.settings = {
|
||||||
# exec-once = [
|
# exec_once = [
|
||||||
# # Set up eww here because it's based on the monitor configuration
|
# # Set up eww here because it's based on the monitor configuration
|
||||||
# "sleep 2 && eww open-many primary-statusbar secondary-statusbar"
|
# "sleep 2 && eww open-many primary-statusbar secondary-statusbar"
|
||||||
# # Set DP-2 as the primary monitor, otherwise it defaults to DP-1 because it's first in the list.
|
# # Set DP-2 as the primary monitor, otherwise it defaults to DP-1 because it's first in the list.
|
||||||
# "xrandr --output DP-2 --primary"
|
# "xrandr --output DP-2 --primary"
|
||||||
# ];
|
# ];
|
||||||
# windowrule = [
|
# # windowrule = [
|
||||||
# # Rofi doesn't center properly when I have the two asymetric monitors, so we need hyprland to manage it.
|
# # # Rofi doesn't center properly when I have the two asymetric monitors, so we need hyprland to manage it.
|
||||||
# "match:class Rofi, center on"
|
# # "match:class Rofi, center on"
|
||||||
# ];
|
# # ];
|
||||||
# };
|
# };
|
||||||
}
|
}
|
||||||
|
|||||||
64
system/hosts/altair/hyprland.lua
Normal file
64
system/hosts/altair/hyprland.lua
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
-- These configs are specifically for Altair
|
||||||
|
-----------------------------------------------------------
|
||||||
|
|
||||||
|
for i = 1, 10 do
|
||||||
|
hl.workspace_rule({ workspace = i, monitor = "DP-1", default_name = tostring(i) })
|
||||||
|
hl.workspace_rule({ workspace = i + 10, monitor = "DP-2", default_name = tostring(i) })
|
||||||
|
end
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "DP-1",
|
||||||
|
mode = "2560x1440",
|
||||||
|
position = "-1440x-510",
|
||||||
|
transform = 1,
|
||||||
|
})
|
||||||
|
|
||||||
|
hl.monitor({
|
||||||
|
output = "DP-2",
|
||||||
|
mode = "3440x1440@164",
|
||||||
|
position = "0x0",
|
||||||
|
transform = 0,
|
||||||
|
})
|
||||||
|
|
||||||
|
local fullscreen_windows = { "^steam_app_\\d+$" }
|
||||||
|
|
||||||
|
for _, class in ipairs(fullscreen_windows) do
|
||||||
|
hl.window_rule({
|
||||||
|
name = "Fullscreen " .. class,
|
||||||
|
match = {
|
||||||
|
class = class,
|
||||||
|
},
|
||||||
|
fullscreen = true,
|
||||||
|
monitor = "DP-2",
|
||||||
|
center = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
local maximized_windows = { "Slay the Spire" }
|
||||||
|
|
||||||
|
for _, class in ipairs(maximized_windows) do
|
||||||
|
hl.window_rule({
|
||||||
|
name = "Maximize " .. class,
|
||||||
|
match = {
|
||||||
|
class = class,
|
||||||
|
},
|
||||||
|
maximize = true,
|
||||||
|
monitor = "DP-2",
|
||||||
|
center = true,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
-- MIGRATION_WARNING: Window rule conflict for 'monitor 1': 'match:title ^World of Warcraft$' (line 200) vs 'match:title ^Battle.net$' (line 202)
|
||||||
|
-- MIGRATION_WARNING: Window rule conflict for 'monitor 1': 'match:title ^World of Warcraft$' (line 200) vs 'match:title ^Balatro$' (line 204)
|
||||||
|
-- MIGRATION_WARNING: Window rule conflict for 'monitor 1': 'match:title ^World of Warcraft$' (line 200) vs 'match:class steam_app_1091500' (line 206)
|
||||||
|
-- hl.window_rule({
|
||||||
|
-- match = { class = "monitor 1" },
|
||||||
|
-- match:title = "^World of Warcraft$",
|
||||||
|
-- match:title = "^Battle.net$",
|
||||||
|
-- match:title = "^Balatro$",
|
||||||
|
-- match:class = "steam_app_1091500",
|
||||||
|
-- })
|
||||||
|
-- PATTERN: MERGED with line 207
|
||||||
|
-- MIGRATION_WARNING: Window rule conflict for 'fullscreen on': 'match:title ^World of Warcraft$' (line 201) vs 'match:class steam_app_1091500' (line 207)
|
||||||
|
-- hl.window_rule({ match = { class = "fullscreen on" }, match:title = "^World of Warcraft$", match:class = "steam_app_1091500" })
|
||||||
|
-- hl.window_rule({ match = { class = "float on" }, match:title = "^Battle.net$" })
|
||||||
|
-- hl.window_rule({ match = { class = "tile on" }, match:title = "^Balatro$" })
|
||||||
@@ -1,7 +1,8 @@
|
|||||||
{ config, ... }:
|
{ config, ... }:
|
||||||
let
|
let
|
||||||
lib = import ./lib.nix config;
|
lib = import ./lib.nix config;
|
||||||
in {
|
in
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./shared-postgres.nix
|
./shared-postgres.nix
|
||||||
];
|
];
|
||||||
@@ -41,27 +42,6 @@ in {
|
|||||||
name = "Loki";
|
name = "Loki";
|
||||||
description = "Log Database";
|
description = "Log Database";
|
||||||
};
|
};
|
||||||
environment = {};
|
environment = { };
|
||||||
};
|
|
||||||
|
|
||||||
services.promtail = {
|
|
||||||
enable = true;
|
|
||||||
configuration = {
|
|
||||||
server.http_listen_port = 9080;
|
|
||||||
clients = [
|
|
||||||
{ url = "https://loki.blazestar.net/loki/api/v1/push"; }
|
|
||||||
];
|
|
||||||
scrape_configs = [{
|
|
||||||
job_name = "journal";
|
|
||||||
journal = {
|
|
||||||
max_age = "12h";
|
|
||||||
labels = { job = "systemd-journal"; };
|
|
||||||
};
|
|
||||||
relabel_configs = [{
|
|
||||||
source_labels = ["__journal__systemd_unit"];
|
|
||||||
target_label = "unit";
|
|
||||||
}];
|
|
||||||
}];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,28 +1,44 @@
|
|||||||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
# and may be overwritten by future invocations. Please make changes
|
# and may be overwritten by future invocations. Please make changes
|
||||||
# to /etc/nixos/configuration.nix instead.
|
# to /etc/nixos/configuration.nix instead.
|
||||||
{ config, lib, pkgs, modulesPath, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"ahci"
|
||||||
|
"usb_storage"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
fileSystems."/" =
|
fileSystems."/" = {
|
||||||
{ device = "/dev/disk/by-uuid/123e06ed-d7a4-439b-ae37-7ff8f82ae0a7";
|
device = "/dev/disk/by-uuid/123e06ed-d7a4-439b-ae37-7ff8f82ae0a7";
|
||||||
fsType = "ext4";
|
fsType = "ext4";
|
||||||
};
|
};
|
||||||
|
|
||||||
fileSystems."/boot" =
|
fileSystems."/boot" = {
|
||||||
{ device = "/dev/disk/by-uuid/0AC0-73EA";
|
device = "/dev/disk/by-uuid/0AC0-73EA";
|
||||||
fsType = "vfat";
|
fsType = "vfat";
|
||||||
options = [ "fmask=0022" "dmask=0022" ];
|
options = [
|
||||||
};
|
"fmask=0022"
|
||||||
|
"dmask=0022"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
swapDevices = [ ];
|
swapDevices = [ ];
|
||||||
|
|
||||||
@@ -45,6 +61,10 @@
|
|||||||
services.xserver.videoDrivers = [ "nvidia" ];
|
services.xserver.videoDrivers = [ "nvidia" ];
|
||||||
|
|
||||||
hardware.nvidia = {
|
hardware.nvidia = {
|
||||||
|
# The GTX 960 GPU in this system needs a legacy driver. It isn't supported
|
||||||
|
# by the current 595 driver that is stable as of 2026-06-04
|
||||||
|
package = config.boot.kernelPackages.nvidiaPackages.legacy_580;
|
||||||
|
|
||||||
modesetting.enable = true;
|
modesetting.enable = true;
|
||||||
|
|
||||||
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
|
||||||
|
|||||||
@@ -9,7 +9,8 @@
|
|||||||
# Enable networking
|
# Enable networking
|
||||||
networking.networkmanager.enable = true;
|
networking.networkmanager.enable = true;
|
||||||
# Disable wpa-supplicant to avoid conflicts with network manager.
|
# Disable wpa-supplicant to avoid conflicts with network manager.
|
||||||
networking.wireless.enable = false;
|
# Appears this is not needed as of 26.05
|
||||||
|
# networking.wireless.enable = true;
|
||||||
|
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
time.timeZone = "America/Los_Angeles";
|
time.timeZone = "America/Los_Angeles";
|
||||||
|
|||||||
@@ -1,58 +1,62 @@
|
|||||||
{ pkgs, ... }:
|
{ ... }:
|
||||||
{
|
{
|
||||||
imports =
|
imports = map (x: ../../../home-manager + x) [
|
||||||
map (x: ../../../home-manager + x) [
|
"/features/chat.nix"
|
||||||
"/features/chat.nix"
|
"/features/development/development.nix"
|
||||||
"/features/development/development.nix"
|
"/features/development/docker.nix"
|
||||||
"/features/development/docker.nix"
|
"/features/development/haskell.nix"
|
||||||
"/features/development/haskell.nix"
|
"/features/development/markdown.nix"
|
||||||
"/features/development/markdown.nix"
|
"/features/development/typescript.nix"
|
||||||
"/features/development/typescript.nix"
|
"/features/email.nix"
|
||||||
"/features/email.nix"
|
"/features/eww"
|
||||||
"/features/eww"
|
"/features/image-editing.nix"
|
||||||
"/features/image-editing.nix"
|
"/features/linux-desktop.nix"
|
||||||
"/features/linux-desktop.nix"
|
"/features/notes.nix"
|
||||||
"/features/notes.nix"
|
"/features/hyprpaper.nix"
|
||||||
]
|
|
||||||
++ [
|
|
||||||
(import ../../../home-manager/features/wallpaper.nix [ "HDMI-A-1" ])
|
|
||||||
];
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
slack
|
|
||||||
zoom-us
|
|
||||||
chromium
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home.stateVersion = "24.11";
|
home = {
|
||||||
|
stateVersion = "24.11";
|
||||||
|
|
||||||
home.username = "drew";
|
username = "drew";
|
||||||
home.homeDirectory = "/home/drew";
|
homeDirectory = "/home/drew";
|
||||||
|
};
|
||||||
|
|
||||||
programs.git.settings.user = {
|
programs.git.settings.user = {
|
||||||
name = "Drew Haven";
|
name = "Drew Haven";
|
||||||
email = "periodic@blazestar.net";
|
email = "periodic@blazestar.net";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hardware.monitors = {
|
||||||
|
"HDMI-A-1" = {
|
||||||
|
position = "0x0";
|
||||||
|
mode = "3440x1440@75.05";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.eww.widgets = [
|
||||||
|
"vertical-statusbar"
|
||||||
|
];
|
||||||
|
|
||||||
# TODO: Merge into LUA configs
|
# TODO: Merge into LUA configs
|
||||||
# wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
# # Set up eww here because it's based on the monitor configuration
|
# Set up eww here because it's based on the monitor configuration
|
||||||
# # Eww is idempotent, so it's fine to just run it on every reload to make sure things are open
|
# Eww is idempotent, so it's fine to just run it on every reload to make sure things are open
|
||||||
# exec-once = [
|
# exec_once = [
|
||||||
# "sleep 2 && eww open-many vertical-statusbar"
|
# "sleep 2 && eww open-many vertical-statusbar"
|
||||||
# ];
|
# ];
|
||||||
# # Set up workspaces for this system
|
# Set up workspaces for this system
|
||||||
# # See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||||
# workspace = [
|
# workspace = [
|
||||||
# "1, defaultName:1"
|
# "1, defaultName:1"
|
||||||
# "2, defaultName:2"
|
# "2, defaultName:2"
|
||||||
# "3, defaultName:3"
|
# "3, defaultName:3"
|
||||||
# "4, defaultName:4"
|
# "4, defaultName:4"
|
||||||
# "5, defaultName:5"
|
# "5, defaultName:5"
|
||||||
# "6, defaultName:6"
|
# "6, defaultName:6"
|
||||||
# "7, defaultName:7"
|
# "7, defaultName:7"
|
||||||
# "8, defaultName:8"
|
# "8, defaultName:8"
|
||||||
# "9, defaultName:9"
|
# "9, defaultName:9"
|
||||||
# ];
|
# ];
|
||||||
# };
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -55,4 +55,5 @@
|
|||||||
# Graphics settings
|
# Graphics settings
|
||||||
# Using the default production drivers.
|
# Using the default production drivers.
|
||||||
graphics.enable = true;
|
graphics.enable = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user