Compare commits
21 Commits
1c1ba8b776
...
modern
| Author | SHA1 | Date | |
|---|---|---|---|
| f4bb5e4ca8 | |||
| 1a435a8676 | |||
| 53f9e2d925 | |||
| c85ba7f69b | |||
| 263133a86a | |||
| 4c37e35d2c | |||
| 99f57dca0c | |||
| b5f2538c19 | |||
| 91f91212db | |||
| 9071abeacc | |||
| f7ab887ed0 | |||
| fe0d006f2e | |||
| 40b7db2c00 | |||
| 4205ab5429 | |||
| 8c43b183eb | |||
| 8c5200d2fb | |||
| 38ba89c2b7 | |||
| d22beb4580 | |||
| ccbd2362b2 | |||
| 9b85f9edd5 | |||
| 459ad6081b |
@@ -27,8 +27,8 @@
|
||||
exec-once = [
|
||||
"uwsm app -- xdg-terminal-exec -e btop-power -p 2"
|
||||
];
|
||||
windowrulev2 = [
|
||||
"monitor ${myConfig.btop.monitor}, title:^(btop)$"
|
||||
windowrule = [
|
||||
"match:title ^(btop)$, monitor ${myConfig.btop.monitor}"
|
||||
];
|
||||
})
|
||||
];
|
||||
|
||||
@@ -22,10 +22,10 @@
|
||||
"special:jellyfin, on-created-empty:uwsm app -- firefox -P web-app --name jellyfin https://watch.sakamoto.dev"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
"opacity 0.99 0.99, class:(?i)(firefox|youtube|jellyfin)"
|
||||
"workspace special:youtube, class:^(youtube)$"
|
||||
"workspace special:jellyfin, class:^(jellyfin)$"
|
||||
windowrule = [
|
||||
"match:class (?i)(firefox|youtube|jellyfin), opacity 1 1"
|
||||
"match:class ^(youtube)$, workspace special:youtube"
|
||||
"match:class ^(jellyfin)$, workspace special:jellyfin"
|
||||
];
|
||||
};
|
||||
imports = [
|
||||
@@ -48,6 +48,17 @@
|
||||
set newtab about:newtab
|
||||
'';
|
||||
|
||||
xdg.mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"text/html" = "firefox.desktop";
|
||||
"x-scheme-handler/http" = "firefox.desktop";
|
||||
"x-scheme-handler/https" = "firefox.desktop";
|
||||
"x-scheme-handler/about" = "firefox.desktop";
|
||||
"x-scheme-handler/unknown" = "firefox.desktop";
|
||||
};
|
||||
};
|
||||
|
||||
programs.firefox = {
|
||||
enable = true;
|
||||
languagePacks = ["en-US"];
|
||||
|
||||
@@ -14,14 +14,15 @@
|
||||
./hypr/rules.nix
|
||||
|
||||
./scripts/movement.nix
|
||||
./scripts/window-rules.nix
|
||||
./scripts/workspace-toggle.nix
|
||||
];
|
||||
wayland.windowManager.hyprland.enable = true;
|
||||
wayland.windowManager.hyprland.systemd.enable = false; # for UWSM support...
|
||||
wayland.windowManager.hyprland.plugins = [
|
||||
pkgs.hyprlandPlugins.hyprsplit
|
||||
pkgs.hyprlandPlugins.hypr-dynamic-cursors
|
||||
pkgs.hyprlandPlugins.hyprspace
|
||||
inputs.hyprsplit.packages.${pkgs.system}.hyprsplit
|
||||
# inputs.hypr-dynamic-cursors.packages.${pkgs.system}.hypr-dynamic-cursors
|
||||
# inputs.hyprspace.packages.${pkgs.system}.Hyprspace
|
||||
pkgs.hyprlandPlugins.hyprbars
|
||||
];
|
||||
}
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
"CTRL SHIFT, J, Move to next workspace, split:workspace, +1"
|
||||
|
||||
# hyprspace - workspace overview
|
||||
"SUPER, E, Toggle Workspace Overview, overview:toggle"
|
||||
# "SUPER, E, Toggle Workspace Overview, overview:toggle"
|
||||
]
|
||||
++ (
|
||||
# Generate binds for Super + [1-5] to switch workspaces with special workspace toggle support
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
};
|
||||
decoration = {
|
||||
rounding = 0;
|
||||
active_opacity = 0.99;
|
||||
active_opacity = 1;
|
||||
inactive_opacity = 0.99;
|
||||
shadow = {
|
||||
enabled = true;
|
||||
@@ -29,7 +29,6 @@
|
||||
};
|
||||
monitor = myConfig.hyprland.monitors;
|
||||
dwindle = {
|
||||
pseudotile = true;
|
||||
preserve_split = true;
|
||||
smart_split = false;
|
||||
};
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
{pkgs, ...}: {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
layerrule = [
|
||||
# Blur and transparency for vicinae
|
||||
"blur, vicinae"
|
||||
"ignorealpha 0, vicinae"
|
||||
|
||||
# Disable animation for vicinae
|
||||
"noanim, vicinae"
|
||||
"match:namespace vicinae, blur true, ignore_alpha 0.0, no_anim true"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
disable_splash_rendering = true;
|
||||
focus_on_activate = true;
|
||||
anr_missed_pings = 3;
|
||||
new_window_takes_over_fullscreen = 1;
|
||||
on_focus_under_fullscreen = 1;
|
||||
};
|
||||
|
||||
# experimental = {
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
{
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
windowrulev2 = [
|
||||
windowrule = [
|
||||
# Make all inactive windows transparent
|
||||
"opacity 0.99 0.8, class:.*"
|
||||
# But make Firefox windows opaque again (last rule wins)
|
||||
"float, title:(?i)bitwarden"
|
||||
"match:class .*, opacity 1 0.8"
|
||||
"match:class firefox, match:title (?i).*bitwarden.*, no_screen_share on"
|
||||
];
|
||||
workspace = [
|
||||
];
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
{pkgs, ...}: let
|
||||
hyprctl = "${pkgs.hyprland}/bin/hyprctl";
|
||||
jq = "${pkgs.jq}/bin/jq";
|
||||
socat = "${pkgs.socat}/bin/socat";
|
||||
|
||||
hypr-window-rules = pkgs.writeShellScriptBin "hypr-window-rules" ''
|
||||
LOG=/tmp/hypr-window-rules.log
|
||||
log() { echo "[$(date +%T)] $*" >> "$LOG"; }
|
||||
|
||||
handle() {
|
||||
local event="$1"
|
||||
case "$event" in
|
||||
windowtitlev2*)
|
||||
local data="''${event#windowtitlev2>>}"
|
||||
local addr="0x''${data%%,*}"
|
||||
local title="''${data#*,}"
|
||||
|
||||
if echo "$title" | grep -qi "bitwarden"; then
|
||||
log "bitwarden title detected: addr=$addr title=$title"
|
||||
local info
|
||||
info=$(${hyprctl} clients -j | ${jq} -r --arg addr "$addr" \
|
||||
'.[] | select(.address == $addr) | "\(.class)|\(.floating)"')
|
||||
local class="''${info%|*}"
|
||||
local floating="''${info#*|}"
|
||||
log " -> class=$class floating=$floating"
|
||||
|
||||
if [[ "$class" == "firefox" && "$floating" == "false" ]]; then
|
||||
${hyprctl} dispatch togglefloating "address:$addr"
|
||||
|
||||
local target_w=600
|
||||
local target_h=800
|
||||
|
||||
local mon_id
|
||||
mon_id=$(${hyprctl} clients -j | ${jq} -r --arg addr "$addr" \
|
||||
'.[] | select(.address == $addr) | .monitor')
|
||||
|
||||
local center
|
||||
center=$(${hyprctl} monitors -j | ${jq} -r \
|
||||
--argjson id "$mon_id" --argjson tw "$target_w" --argjson th "$target_h" \
|
||||
'.[] | select(.id == $id) |
|
||||
"\(.x + ((.width / .scale) - $tw) / 2 | floor)|\(.y + ((.height / .scale) - $th) / 2 | floor)"')
|
||||
|
||||
local cx="''${center%%|*}"
|
||||
local cy="''${center#*|}"
|
||||
|
||||
${hyprctl} dispatch resizewindowpixel "exact $target_w $target_h, address:$addr"
|
||||
${hyprctl} dispatch movewindowpixel "exact $cx $cy, address:$addr"
|
||||
log " -> floated, resized to $target_w x $target_h, moved to $cx,$cy"
|
||||
else
|
||||
log " -> skipped (class or floating mismatch)"
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
log "started (HYPRLAND_INSTANCE_SIGNATURE=$HYPRLAND_INSTANCE_SIGNATURE)"
|
||||
${socat} -u \
|
||||
"UNIX-CONNECT:$XDG_RUNTIME_DIR/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock" \
|
||||
- \
|
||||
| while IFS= read -r line; do handle "$line"; done
|
||||
log "socat exited"
|
||||
'';
|
||||
in {
|
||||
home.packages = [hypr-window-rules];
|
||||
|
||||
wayland.windowManager.hyprland.settings.exec-once = [
|
||||
"hypr-window-rules"
|
||||
];
|
||||
}
|
||||
@@ -3,19 +3,23 @@
|
||||
#!/usr/bin/env bash
|
||||
target_workspace="$1"
|
||||
|
||||
# Get current workspace info
|
||||
current=$(${pkgs.hyprland}/bin/hyprctl activeworkspace -j | ${pkgs.jq}/bin/jq -r '.id')
|
||||
# activeworkspace always returns the underlying workspace, even when a special
|
||||
# workspace is open. Check the monitor's specialWorkspace field instead.
|
||||
special=$(${pkgs.hyprland}/bin/hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.focused) | .specialWorkspace.name')
|
||||
|
||||
# Check if we're in a special workspace (negative ID)
|
||||
if [[ $current -lt 0 ]]; then
|
||||
# We're in a special workspace, switch to target workspace using split:workspace
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch split:workspace "$target_workspace"
|
||||
elif [[ $current -eq $target_workspace ]]; then
|
||||
# We're already on the target workspace, toggle back to previous
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch workspace previous
|
||||
if [[ -n "$special" ]]; then
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch togglespecialworkspace "''${special#special:}"
|
||||
current=$(${pkgs.hyprland}/bin/hyprctl activeworkspace -j | ${pkgs.jq}/bin/jq -r '.id')
|
||||
if [[ $current -ne $target_workspace ]]; then
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch focusworkspaceoncurrentmonitor "$target_workspace"
|
||||
fi
|
||||
else
|
||||
# We're on a different workspace, switch to target using split:workspace
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch split:workspace "$target_workspace"
|
||||
current=$(${pkgs.hyprland}/bin/hyprctl activeworkspace -j | ${pkgs.jq}/bin/jq -r '.id')
|
||||
if [[ $current -eq $target_workspace ]]; then
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch workspace previous
|
||||
else
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch split:workspace "$target_workspace"
|
||||
fi
|
||||
fi
|
||||
'';
|
||||
in {
|
||||
|
||||
+27
-14
@@ -22,13 +22,24 @@
|
||||
fi
|
||||
|
||||
tmp_file=$(mktemp)
|
||||
target_dir="$HOME/Pictures/Wallpapers"
|
||||
if [ ! -d "$target_dir" ]; then
|
||||
target_dir="$HOME"
|
||||
LAST_WALLPAPER_FILE="$HOME/.cache/last_wallpaper_path"
|
||||
|
||||
if [ -f "$LAST_WALLPAPER_FILE" ]; then
|
||||
last_path=$(cat "$LAST_WALLPAPER_FILE")
|
||||
if [ -f "$last_path" ]; then
|
||||
yazi_target="$last_path"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -z "$yazi_target" ]; then
|
||||
yazi_target="$HOME/Pictures/Wallpapers"
|
||||
if [ ! -d "$yazi_target" ]; then
|
||||
yazi_target="$HOME"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Ensure we are in a terminal that supports yazi
|
||||
${pkgs.yazi}/bin/yazi "$target_dir" --chooser-file="$tmp_file"
|
||||
${pkgs.yazi}/bin/yazi "$yazi_target" --chooser-file="$tmp_file"
|
||||
|
||||
if [ ! -f "$tmp_file" ]; then
|
||||
echo "No selection file created."
|
||||
@@ -46,13 +57,14 @@
|
||||
# Persistence logic
|
||||
CACHE_FILE="$HOME/.cache/current_wallpaper"
|
||||
cp "$WALLPAPER" "$CACHE_FILE"
|
||||
echo "$WALLPAPER" > "$HOME/.cache/last_wallpaper_path"
|
||||
|
||||
# Reload hyprpaper
|
||||
${pkgs.hyprland}/bin/hyprctl hyprpaper unload all
|
||||
${pkgs.hyprland}/bin/hyprctl hyprpaper preload "$CACHE_FILE"
|
||||
${pkgs.hyprland}/bin/hyprctl hyprpaper wallpaper ",$CACHE_FILE"
|
||||
|
||||
exec matugen image "$CACHE_FILE"
|
||||
exec matugen image "$CACHE_FILE" --source-color-index 0
|
||||
'';
|
||||
in {
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
@@ -64,22 +76,23 @@ in {
|
||||
"SUPER CTRL, I, Switch Wallpaper, exec, hakase-wallpaper-switch"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
windowrule = [
|
||||
# --- WALLPAPER PICKER ---
|
||||
"float, class:^(org\.hakase\.switch-wallpaper)$"
|
||||
"float, initialTitle:^(Wallpaper Selector)$"
|
||||
"center, class:^(org\.hakase\.switch-wallpaper)$"
|
||||
"center, initialTitle:^(Wallpaper Selector)$"
|
||||
"size 60% 60%, class:^(org\.hakase\.switch-wallpaper)$"
|
||||
"size 60% 60%, initialTitle:^(Wallpaper Selector)$"
|
||||
"dimaround, class:^(org\.hakase\.switch-wallpaper)$"
|
||||
"dimaround, initialTitle:^(Wallpaper Selector)$"
|
||||
"match:class ^(org\.hakase\.switch-wallpaper)$, float on"
|
||||
"match:initial_title ^(Wallpaper Selector)$, float on"
|
||||
"match:class ^(org\.hakase\.switch-wallpaper)$, center on"
|
||||
"match:initial_title ^(Wallpaper Selector)$, center on"
|
||||
"match:class ^(org\.hakase\.switch-wallpaper)$, size 60% 60%"
|
||||
"match:initial_title ^(Wallpaper Selector)$, size 60% 60%"
|
||||
"match:class ^(org\.hakase\.switch-wallpaper)$, dim_around on"
|
||||
"match:initial_title ^(Wallpaper Selector)$, dim_around on"
|
||||
];
|
||||
};
|
||||
|
||||
services.hyprpaper = {
|
||||
enable = true;
|
||||
settings = {
|
||||
splash = false;
|
||||
preload = [cacheWallpaper];
|
||||
wallpaper = [
|
||||
",${cacheWallpaper}"
|
||||
|
||||
@@ -73,9 +73,9 @@ in {
|
||||
show = no
|
||||
'';
|
||||
|
||||
wayland.windowManager.hyprland.settings.windowrulev2 = [
|
||||
wayland.windowManager.hyprland.settings.windowrule = [
|
||||
# --- IMAGE VIEWER (swayimg) ---
|
||||
"float, class:^(swayimg)$"
|
||||
"center, class:^(swayimg)$"
|
||||
"match:class ^(swayimg)$, float on"
|
||||
"match:class ^(swayimg)$, center on"
|
||||
];
|
||||
}
|
||||
|
||||
@@ -62,14 +62,14 @@
|
||||
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
exec-once = [ "systemctl --user start jellyfin-mpv-shim" ];
|
||||
windowrulev2 = [
|
||||
windowrule = [
|
||||
# --- JELLYFIN MPV SHIM ---
|
||||
"float, class:^(jellyfin-mpv-shim)$"
|
||||
"center, class:^(jellyfin-mpv-shim)$"
|
||||
"size 70% 70%, class:^(jellyfin-mpv-shim)$"
|
||||
"opacity 1.0 override 1.0 override, class:^(jellyfin-mpv-shim)$"
|
||||
"idleinhibit focus, class:^(jellyfin-mpv-shim)$"
|
||||
"noblur, class:^(jellyfin-mpv-shim)$"
|
||||
"match:class ^(jellyfin-mpv-shim)$, float on"
|
||||
"match:class ^(jellyfin-mpv-shim)$, center on"
|
||||
"match:class ^(jellyfin-mpv-shim)$, size 70% 70%"
|
||||
"match:class ^(jellyfin-mpv-shim)$, opacity 1.0 override 1.0 override"
|
||||
"match:class ^(jellyfin-mpv-shim)$, idle_inhibit focus"
|
||||
"match:class ^(jellyfin-mpv-shim)$, no_blur on"
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -5,7 +5,7 @@
|
||||
...
|
||||
}: {
|
||||
home.packages = with pkgs; [
|
||||
matugen
|
||||
inputs.matugen.packages.${pkgs.system}.default
|
||||
dconf
|
||||
psmisc # for killall
|
||||
];
|
||||
|
||||
@@ -30,10 +30,10 @@
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.windowrulev2 = [
|
||||
wayland.windowManager.hyprland.settings.windowrule = [
|
||||
# --- VIDEO PLAYER (mpv) ---
|
||||
"float, class:^(mpv)$"
|
||||
"center, class:^(mpv)$"
|
||||
"size 70% 50%, class:^(mpv)$"
|
||||
"match:class ^(mpv)$, float on"
|
||||
"match:class ^(mpv)$, center on"
|
||||
"match:class ^(mpv)$, size 60% 70%"
|
||||
];
|
||||
}
|
||||
|
||||
@@ -78,10 +78,9 @@ in {
|
||||
|
||||
bindd = [
|
||||
"SUPER, SPACE, Open Vicinae, exec, vicinae-toggle"
|
||||
"SUPER, period, Open Emoji Picker, exec, vicinae-toggle deeplink vicinae://extensions/vicinae/core/search-emojis"
|
||||
# FIXME: calculator history does not allow you to calculate
|
||||
"SUPER, C, Open Calculator, exec, vicinae-toggle deeplink vicinae://extensions/vicinae/calculator/history"
|
||||
"SUPER, V, Open Clipboard History, exec, vicinae-toggle deeplink vicinae://extensions/vicinae/clipboard/history"
|
||||
"SUPER, period, Open Emoji Picker, exec, vicinae-toggle deeplink vicinae://launch/core/search-emojis"
|
||||
"SUPER, C, Open Calculator, exec, vicinae-toggle deeplink vicinae://launch/calculator/history"
|
||||
"SUPER, V, Open Clipboard History, exec, vicinae-toggle deeplink vicinae://launch/clipboard/history"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
+11
-6
@@ -65,13 +65,13 @@ in {
|
||||
"SUPER, T, exec, hakase-popup-launch wiremix"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
windowrule = [
|
||||
# --- POPUP RULES (Wifi, BT, Audio) ---
|
||||
"float, class:^(org\.hakase\.popup\..*)$"
|
||||
"size 900 600, class:^(org\.hakase\.popup\..*)$"
|
||||
"center, class:^(org\.hakase\.popup\..*)$"
|
||||
"animation slide right, class:^(org\.hakase\.popup\..*)$"
|
||||
"dimaround, class:^(org\.hakase\.popup\..*)$"
|
||||
"match:class ^(org\.hakase\.popup\..*)$, float on"
|
||||
"match:class ^(org\.hakase\.popup\..*)$, size 900 600"
|
||||
"match:class ^(org\.hakase\.popup\..*)$, center on"
|
||||
"match:class ^(org\.hakase\.popup\..*)$, animation slide right"
|
||||
"match:class ^(org\.hakase\.popup\..*)$, dim_around on"
|
||||
];
|
||||
};
|
||||
imports = [
|
||||
@@ -155,6 +155,11 @@ in {
|
||||
"3" = [];
|
||||
"4" = [];
|
||||
"5" = [];
|
||||
"6" = [];
|
||||
"7" = [];
|
||||
"8" = [];
|
||||
"9" = [];
|
||||
"10" = [];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -153,10 +153,10 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
wayland.windowManager.hyprland.settings.windowrulev2 = [
|
||||
wayland.windowManager.hyprland.settings.windowrule = [
|
||||
# File picker yazi - floating, centered, smaller size
|
||||
"float, class:^(org\\.hakase\\.popup\\.yazi)$"
|
||||
"size 60% 70%, class:^(org\\.hakase\\.popup\\.yazi)$"
|
||||
"center, class:^(org\\.hakase\\.popup\\.yazi)$"
|
||||
"match:class ^(org\\.hakase\\.popup\\.yazi)$, float on"
|
||||
"match:class ^(org\\.hakase\\.popup\\.yazi)$, size 60% 70%"
|
||||
"match:class ^(org\\.hakase\\.popup\\.yazi)$, center on"
|
||||
];
|
||||
}
|
||||
|
||||
+2
-1
@@ -32,7 +32,8 @@
|
||||
};
|
||||
hyprland = {
|
||||
monitors = [
|
||||
"DP-1,highres@165,0x1080,1,vrr,0,bitdepth,10,cm,hdr,sdrbrightness,1.3"
|
||||
# "DP-1,highres@180,0x1080,1,vrr,1,bitdepth,10,cm,hdr,sdrbrightness,2.5"
|
||||
"DP-1,highres@180,0x1080,1,vrr,0"
|
||||
"DP-2, highres@165,760x0,1"
|
||||
"HDMI-A-1, highres@highrr@120, 3440x1440, 1.6"
|
||||
];
|
||||
|
||||
Generated
+222
-93
@@ -41,11 +41,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765900596,
|
||||
"narHash": "sha256-+hn8v9jkkLP9m+o0Nm5SiEq10W0iWDSotH2XfjU45fA=",
|
||||
"lastModified": 1778857089,
|
||||
"narHash": "sha256-TclWRW2SdFeETLaiTG4BA8C8C4m/LppQEldncqyTzAQ=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "aquamarine",
|
||||
"rev": "d83c97f8f5c0aae553c1489c7d9eff3eadcadace",
|
||||
"rev": "ab2b0af63fbc9fb779d684f19149b790978be8a8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -141,15 +141,15 @@
|
||||
"flake-compat_2": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1761588595,
|
||||
"narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=",
|
||||
"owner": "edolstra",
|
||||
"lastModified": 1767039857,
|
||||
"narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5",
|
||||
"rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"owner": "NixOS",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -181,11 +181,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765835352,
|
||||
"narHash": "sha256-XswHlK/Qtjasvhd1nOa1e8MgZ8GS//jBoTqWtrS1Giw=",
|
||||
"lastModified": 1778716662,
|
||||
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||
"owner": "hercules-ci",
|
||||
"repo": "flake-parts",
|
||||
"rev": "a34fae9c08a15ad73f295041fec82323541400a9",
|
||||
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -231,7 +231,7 @@
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems_4"
|
||||
"systems": "systems_6"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1731533236,
|
||||
@@ -310,6 +310,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hypr-dynamic-cursors": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
],
|
||||
"nixpkgs": "nixpkgs"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1779050734,
|
||||
"narHash": "sha256-uE/I8TrhVEyQJb8t+HeHNYQRv7VlwbZxXlTrMfP0x/A=",
|
||||
"owner": "Virtcode",
|
||||
"repo": "hypr-dynamic-cursors",
|
||||
"rev": "39fe4ab66b45b011667f548d759d58e707521378",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "Virtcode",
|
||||
"repo": "hypr-dynamic-cursors",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprcursor": {
|
||||
"inputs": {
|
||||
"hyprlang": [
|
||||
@@ -326,11 +347,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1753964049,
|
||||
"narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=",
|
||||
"lastModified": 1776511930,
|
||||
"narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprcursor",
|
||||
"rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5",
|
||||
"rev": "39435900785d0c560c6ae8777d29f28617d031ef",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -355,11 +376,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763733840,
|
||||
"narHash": "sha256-JnET78yl5RvpGuDQy3rCycOCkiKoLr5DN1fPhRNNMco=",
|
||||
"lastModified": 1776426399,
|
||||
"narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprgraphics",
|
||||
"rev": "8f1bec691b2d198c60cccabca7a94add2df4ed1a",
|
||||
"rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -387,11 +408,11 @@
|
||||
"xdph": "xdph"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767300597,
|
||||
"narHash": "sha256-lGE1j1bEuNp7XoDP+oyyF/c+MzYAs6S+sz0NK71nXZE=",
|
||||
"lastModified": 1779983308,
|
||||
"narHash": "sha256-mvjt5EqRubXF5w1RnyLsWOduJQzHDZCjohWJz/TUvJM=",
|
||||
"ref": "refs/heads/main",
|
||||
"rev": "31d3181e1ee91e338fb4fb8207d64b8d689310fc",
|
||||
"revCount": 6766,
|
||||
"rev": "ebc1816dfb27f1091c9713876669e092a215382d",
|
||||
"revCount": 7376,
|
||||
"submodules": true,
|
||||
"type": "git",
|
||||
"url": "https://github.com/hyprwm/Hyprland"
|
||||
@@ -435,11 +456,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765643131,
|
||||
"narHash": "sha256-CCGohW5EBIRy4B7vTyBMqPgsNcaNenVad/wszfddET0=",
|
||||
"lastModified": 1776426575,
|
||||
"narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-guiutils",
|
||||
"rev": "e50ae912813bdfa8372d62daf454f48d6df02297",
|
||||
"rev": "a968d211048e3ed538e47b84cb3649299578f19d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -465,11 +486,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767304464,
|
||||
"narHash": "sha256-HsdfmPf5291Y3yXScMoj53P/9SS1DK3KgbprBuR8A4k=",
|
||||
"lastModified": 1779209205,
|
||||
"narHash": "sha256-asc7NpeB8vD66gvZeYcQkaWOs2X6Jgd29vBtP17vjxo=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-plugins",
|
||||
"rev": "7a8521112361997d071fd1fef06d6becc7e53240",
|
||||
"rev": "1cb37fad68dff5f5840010c314fed5809b4ee66f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -490,11 +511,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765214753,
|
||||
"narHash": "sha256-P9zdGXOzToJJgu5sVjv7oeOGPIIwrd9hAUAP3PsmBBs=",
|
||||
"lastModified": 1772460177,
|
||||
"narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprland-protocols",
|
||||
"rev": "3f3860b869014c00e8b9e0528c7b4ddc335c21ab",
|
||||
"rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -519,11 +540,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764612430,
|
||||
"narHash": "sha256-54ltTSbI6W+qYGMchAgCR6QnC1kOdKXN6X6pJhOWxFg=",
|
||||
"lastModified": 1777320127,
|
||||
"narHash": "sha256-Qu+Wf2Bp5qUjyn2YpZNq8a7JyzTGowhT1knrwE38a9U=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprlang",
|
||||
"rev": "0d00dc118981531aa731150b6ea551ef037acddd",
|
||||
"rev": "090117506ddc3d7f26e650ff344d378c2ec329cc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -532,18 +553,40 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprspace": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
],
|
||||
"systems": "systems_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1775071961,
|
||||
"narHash": "sha256-LXkeeH9Blr6ohS1LAsVZbkJ/EAkkMDATh5qu45hC7Zo=",
|
||||
"owner": "KZDKM",
|
||||
"repo": "Hyprspace",
|
||||
"rev": "12ddde04f8584bf7de3151e6169918e0dda9f822",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "KZDKM",
|
||||
"repo": "Hyprspace",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"hyprsplit": {
|
||||
"inputs": {
|
||||
"hyprland": [
|
||||
"hyprland"
|
||||
]
|
||||
],
|
||||
"nixpkgs": "nixpkgs_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766546378,
|
||||
"narHash": "sha256-GSoSLHErh1mRfgXM57W98L67MMBHKCemHzxoZPrejSI=",
|
||||
"lastModified": 1779414137,
|
||||
"narHash": "sha256-XpwuFhwnfwPbzImZeUWWns///UEpoKNkpl1hN90C3Ag=",
|
||||
"owner": "shezdy",
|
||||
"repo": "hyprsplit",
|
||||
"rev": "9a8b55f4269bfa5c59d03ed9f4502f433572c616",
|
||||
"rev": "0fc01e7930625ecb3e069f5dc8e1d61eab929f3b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -591,11 +634,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1764592794,
|
||||
"narHash": "sha256-7CcO+wbTJ1L1NBQHierHzheQGPWwkIQug/w+fhTAVuU=",
|
||||
"lastModified": 1772462885,
|
||||
"narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprtoolkit",
|
||||
"rev": "5cfe0743f0e608e1462972303778d8a0859ee63e",
|
||||
"rev": "9af245a69fa6b286b88ddfc340afd288e00a6998",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -616,11 +659,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766160771,
|
||||
"narHash": "sha256-roINUGikWRqqgKrD4iotKbGj3ZKJl3hjMz5l/SyKrHw=",
|
||||
"lastModified": 1779475241,
|
||||
"narHash": "sha256-Nw4DN0A5krWNcPBvuWe5Gz2yuxsUUPiDgtu6SVPJQeU=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprutils",
|
||||
"rev": "5ac060bfcf2f12b3a6381156ebbc13826a05b09f",
|
||||
"rev": "3cd3972b2ee658a14d2610d8494e09259e530124",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -641,11 +684,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1763640274,
|
||||
"narHash": "sha256-Uan1Nl9i4TF/kyFoHnTq1bd/rsWh4GAK/9/jDqLbY5A=",
|
||||
"lastModified": 1777159683,
|
||||
"narHash": "sha256-Jxixw6wZphUp+nHYxOKUYSckL17QMBx2d5Zp0rJHr1g=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwayland-scanner",
|
||||
"rev": "f6cf414ca0e16a4d30198fd670ec86df3c89f671",
|
||||
"rev": "b8632713a6beaf28b56f2a7b0ab2fb7088dbb404",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -670,11 +713,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766253200,
|
||||
"narHash": "sha256-26qPwrd3od+xoYVywSB7hC2cz9ivN46VPLlrsXyGxvE=",
|
||||
"lastModified": 1778410714,
|
||||
"narHash": "sha256-o6RzFj4nJXaPRY7EM01siuCQeT41RfwwmcmFQqwFJJg=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "hyprwire",
|
||||
"rev": "1079777525b30a947c8d657fac158e00ae85de9d",
|
||||
"rev": "85148a8e612808cf5ddb25d0b3c5840f3498a7dc",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -705,6 +748,27 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"matugen": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_4"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1780068618,
|
||||
"narHash": "sha256-LFiV5gdD4MkPrzBrc3Lq966vTQGuwwXC5WkgglWz7i4=",
|
||||
"owner": "InioX",
|
||||
"repo": "Matugen",
|
||||
"rev": "74bfe9369a46589c5048072142796343a8d74168",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "InioX",
|
||||
"repo": "Matugen",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nix-github-actions": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
@@ -738,11 +802,11 @@
|
||||
"rust-overlay": "rust-overlay_2"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766882181,
|
||||
"narHash": "sha256-Xmu3JL68gT623ySytIOoyKqoH0tj3qhtNOnT79RRews=",
|
||||
"lastModified": 1779062503,
|
||||
"narHash": "sha256-CYyaA/qV6TzccHJuEwi8LE9x/rVpMAFztsymq+HYsQ8=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "ddb728dae4c9d6842664395635c9d55fb65c8b56",
|
||||
"revCount": 78,
|
||||
"rev": "4fd264f24fdf87d701ec82e7c6a4ca3e15c1c0aa",
|
||||
"revCount": 79,
|
||||
"type": "git",
|
||||
"url": "https://git.sakamoto.dev/kenji/nixovim.git"
|
||||
},
|
||||
@@ -753,16 +817,16 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1744536153,
|
||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||
"owner": "NixOS",
|
||||
"lastModified": 1768127708,
|
||||
"narHash": "sha256-1Sm77VfZh3mU0F5OqKABNLWxOuDeHIlcFjsXeeiPazs=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||
"rev": "ffbc9f8cbaacfb331b6017d5a5abb21a492c9a38",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
@@ -781,11 +845,43 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1766309749,
|
||||
"narHash": "sha256-3xY8CZ4rSnQ0NqGhMKAy5vgC+2IVK0NoVEzDoOh4DA4=",
|
||||
"lastModified": 1778869304,
|
||||
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "a6531044f6d0bef691ea18d4d4ce44d0daa6e816",
|
||||
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1744536153,
|
||||
"narHash": "sha256-awS2zRgF4uTwrOKwwiJcByDzDOdo3Q1rPZbiHQg/N38=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "18dd725c29603f582cf1900e0d25f9f1063dbf11",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixpkgs-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs_4": {
|
||||
"locked": {
|
||||
"lastModified": 1778869304,
|
||||
"narHash": "sha256-30sZNZoA1cqF5JNO9fVX+wgiQYjB7HJqqJ4ztCDeBZE=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "d233902339c02a9c334e7e593de68855ad26c4cb",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -802,14 +898,14 @@
|
||||
"nixovim",
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_3"
|
||||
"systems": "systems_5"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766443759,
|
||||
"narHash": "sha256-iGDhUPOPyY9NOTNHkhNzZKoz3+OlBNGg451qtvPq/Ic=",
|
||||
"lastModified": 1779023681,
|
||||
"narHash": "sha256-K7RLGyiK3J6wHr/JDxXdlGF0+0DEsdBf1w9mXjSyL8I=",
|
||||
"owner": "nix-community",
|
||||
"repo": "nixvim",
|
||||
"rev": "1787eeda5a2ce35bcd57dbb482718b0d897786ae",
|
||||
"rev": "0d05726bfb060f6559f6d64c1d427f3663dba178",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -849,11 +945,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1765911976,
|
||||
"narHash": "sha256-t3T/xm8zstHRLx+pIHxVpQTiySbKqcQbK+r+01XVKc0=",
|
||||
"lastModified": 1778507602,
|
||||
"narHash": "sha256-kTwur1wV+01SdqskVMSo6JMEpg71ps3HpbFY2GsflKs=",
|
||||
"owner": "cachix",
|
||||
"repo": "git-hooks.nix",
|
||||
"rev": "b68b780b69702a090c8bb1b973bab13756cc7a27",
|
||||
"rev": "61ab0e80d9c7ab14c256b5b453d8b3fb0189ba0a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -868,11 +964,14 @@
|
||||
"chaotic": "chaotic",
|
||||
"elephant": "elephant",
|
||||
"home-manager": "home-manager_2",
|
||||
"hypr-dynamic-cursors": "hypr-dynamic-cursors",
|
||||
"hyprland": "hyprland",
|
||||
"hyprland-plugins": "hyprland-plugins",
|
||||
"hyprspace": "hyprspace",
|
||||
"hyprsplit": "hyprsplit",
|
||||
"matugen": "matugen",
|
||||
"nixovim": "nixovim",
|
||||
"nixpkgs": "nixpkgs_2",
|
||||
"nixpkgs": "nixpkgs_4",
|
||||
"nur": "nur",
|
||||
"sops-nix": "sops-nix",
|
||||
"textfox": "textfox",
|
||||
@@ -904,7 +1003,7 @@
|
||||
},
|
||||
"rust-overlay_2": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
"nixpkgs": "nixpkgs_3"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766544144,
|
||||
@@ -927,11 +1026,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766289575,
|
||||
"narHash": "sha256-BOKCwOQQIP4p9z8DasT5r+qjri3x7sPCOq+FTjY8Z+o=",
|
||||
"lastModified": 1777944972,
|
||||
"narHash": "sha256-VfGRo1qTBKOe3s2gOv8LSoA6Fk19PvBlwQ1ECN0Evn8=",
|
||||
"owner": "Mic92",
|
||||
"repo": "sops-nix",
|
||||
"rev": "9836912e37aef546029e48c8749834735a6b9dad",
|
||||
"rev": "c591bf665727040c6cc5cb409079acb22dcce33c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -972,31 +1071,31 @@
|
||||
},
|
||||
"systems_3": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_4": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"repo": "default-linux",
|
||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"repo": "default-linux",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
@@ -1016,6 +1115,36 @@
|
||||
}
|
||||
},
|
||||
"systems_6": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_7": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"systems_8": {
|
||||
"locked": {
|
||||
"lastModified": 1689347949,
|
||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||
@@ -1077,14 +1206,14 @@
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_5"
|
||||
"systems": "systems_7"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1767353605,
|
||||
"narHash": "sha256-j2nuPawvb33wjTV93htSiMRxGeTLLrKhwOEqmmTu5uY=",
|
||||
"lastModified": 1779832601,
|
||||
"narHash": "sha256-/dtn1sOTEcb/rNInzkdnK8PNIIDfQi7fEJfQEq+Is4g=",
|
||||
"owner": "vicinaehq",
|
||||
"repo": "vicinae",
|
||||
"rev": "d89a9c9656486de144fd035bea7c2ea3b97fedf8",
|
||||
"rev": "dc1f7d47725c68debdb31be26781a96c14bac059",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@@ -1101,7 +1230,7 @@
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
],
|
||||
"systems": "systems_6"
|
||||
"systems": "systems_8"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1766324177,
|
||||
@@ -1145,11 +1274,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1761431178,
|
||||
"narHash": "sha256-xzjC1CV3+wpUQKNF+GnadnkeGUCJX+vgaWIZsnz9tzI=",
|
||||
"lastModified": 1778265244,
|
||||
"narHash": "sha256-8jlPtGSsv/CQY6tVVyLF4Jjd0gnS+Zbn9yk/V13A9nM=",
|
||||
"owner": "hyprwm",
|
||||
"repo": "xdg-desktop-portal-hyprland",
|
||||
"rev": "4b8801228ff958d028f588f0c2b911dbf32297f9",
|
||||
"rev": "813ea5ca9a1702a9a2d1f5836bc00172ef698968",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -34,6 +34,14 @@
|
||||
url = "github:hyprwm/hyprland-plugins";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
hyprspace = {
|
||||
url = "github:KZDKM/Hyprspace";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
hypr-dynamic-cursors = {
|
||||
url = "github:Virtcode/hypr-dynamic-cursors";
|
||||
inputs.hyprland.follows = "hyprland";
|
||||
};
|
||||
nixovim = {
|
||||
# FIXME: treesitter does not install automatically (disabled due to read-only problems)
|
||||
url = "git+https://git.sakamoto.dev/kenji/nixovim.git";
|
||||
@@ -60,6 +68,13 @@
|
||||
url = "git+https://git.sakamoto.dev/kenji/nix-fonts.git";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
# TODO: unstable.nixpkgs `matugen` is stuck at v4.0.0
|
||||
# may need to use `git` version first
|
||||
matugen = {
|
||||
url = "github:/InioX/Matugen";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
# ...
|
||||
};
|
||||
};
|
||||
|
||||
outputs = {
|
||||
@@ -85,6 +100,7 @@
|
||||
}
|
||||
// allConfig.hakase;
|
||||
modules = [
|
||||
inputs.matugen.nixosModules.default
|
||||
home-manager.nixosModules.home-manager
|
||||
sops-nix.nixosModules.sops
|
||||
chaotic.nixosModules.default
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
}: {
|
||||
imports = [
|
||||
../modules/home/terminal.nix
|
||||
# ../modules/home/flatpak.nix
|
||||
../modules/home/apps.nix
|
||||
../modules/home/apps-optional.nix
|
||||
../modules/home/hyprland.nix
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{pkgs, ...}: let
|
||||
flatpak-install = pkgs.writeShellScriptBin "flatpak-install" ''
|
||||
flatpak install --user --bundle "$1"
|
||||
echo
|
||||
read -p "Press Enter to close..."
|
||||
'';
|
||||
in {
|
||||
home.packages = [flatpak-install];
|
||||
|
||||
xdg.mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = {
|
||||
"application/vnd.flatpak" = "flatpak-bundle-installer.desktop";
|
||||
};
|
||||
};
|
||||
|
||||
xdg.desktopEntries.flatpak-bundle-installer = {
|
||||
name = "Flatpak Bundle Installer";
|
||||
exec = "flatpak-install %f";
|
||||
terminal = true;
|
||||
noDisplay = true;
|
||||
type = "Application";
|
||||
mimeType = ["application/vnd.flatpak"];
|
||||
};
|
||||
}
|
||||
+55
-30
@@ -4,24 +4,45 @@
|
||||
myConfig,
|
||||
...
|
||||
}: let
|
||||
gamingMonitor = "DP-1";
|
||||
|
||||
gaming-focus = pkgs.writeShellScriptBin "gaming-focus" ''
|
||||
# If already on gaming workspace on the gaming monitor, go back
|
||||
current=$(${pkgs.hyprland}/bin/hyprctl activeworkspace -j | ${pkgs.jq}/bin/jq -r '.name')
|
||||
focused=$(${pkgs.hyprland}/bin/hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.focused) | .name')
|
||||
if [[ "$current" == "gaming" && "$focused" == "${gamingMonitor}" ]]; then
|
||||
${pkgs.hyprland}/bin/hyprctl dispatch workspace previous
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Close special workspace on gaming monitor if open
|
||||
special=$(${pkgs.hyprland}/bin/hyprctl monitors -j | ${pkgs.jq}/bin/jq -r '.[] | select(.name == "${gamingMonitor}") | .specialWorkspace.name')
|
||||
if [[ -n "$special" ]]; then
|
||||
# Gaming workspace is already underneath — just close the special overlay
|
||||
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch togglespecialworkspace ''${special#special:}"
|
||||
else
|
||||
${pkgs.hyprland}/bin/hyprctl --batch "dispatch focusmonitor ${gamingMonitor};dispatch workspace name:gaming"
|
||||
fi
|
||||
'';
|
||||
|
||||
# Games that should have `stayfocused` applied (to avoid multi-monitor focus issues)
|
||||
stayFocusedGames = [
|
||||
"Deadlock"
|
||||
"project8"
|
||||
"citadel"
|
||||
# "Deadlock"
|
||||
# "project8"
|
||||
# "citadel"
|
||||
];
|
||||
|
||||
mkGameRules = selector: [
|
||||
"monitor 0, ${selector}"
|
||||
"fullscreen, ${selector}"
|
||||
"immediate, ${selector}"
|
||||
"tile, ${selector}"
|
||||
"match:${selector}, monitor ${gamingMonitor}"
|
||||
"match:${selector}, fullscreen on"
|
||||
"match:${selector}, immediate on"
|
||||
"match:${selector}, tile on"
|
||||
];
|
||||
|
||||
stayFocusedRules = lib.flatten (map (
|
||||
game: [
|
||||
"stayfocused, title:^(${game})$"
|
||||
"stayfocused, class:^(${game})$"
|
||||
"match:title ^(${game})$, stay_focused on"
|
||||
"match:class ^(${game})$, stay_focused on"
|
||||
]
|
||||
)
|
||||
stayFocusedGames);
|
||||
@@ -30,6 +51,7 @@ in {
|
||||
protonup-qt
|
||||
protontricks
|
||||
mangohud
|
||||
gaming-focus
|
||||
# via
|
||||
];
|
||||
|
||||
@@ -47,55 +69,58 @@ in {
|
||||
|
||||
wayland.windowManager.hyprland.settings = {
|
||||
workspace = [
|
||||
"name:gaming, monitor:0, default:true"
|
||||
"name:gaming, monitor:${gamingMonitor}, default:true"
|
||||
];
|
||||
|
||||
exec-once = [
|
||||
"[workspace special:steam silent] uwsm app -- steam"
|
||||
"[workspace special:steam silent] steam"
|
||||
];
|
||||
|
||||
bindd = [
|
||||
"SUPER, A, Toggle Steam, togglespecialworkspace, steam"
|
||||
"SUPER SHIFT, A, Move to Steam Special Workspace, movetoworkspace, special:steam"
|
||||
"SUPER, G, Switch to Gaming Workspace, workspace, name:gaming"
|
||||
"SUPER, G, Switch to Gaming Workspace, exec, gaming-focus"
|
||||
"SUPER SHIFT, G, Move to Gaming Workspace, movetoworkspace, name:gaming"
|
||||
];
|
||||
|
||||
windowrulev2 =
|
||||
windowrule =
|
||||
[
|
||||
"plugin:hyprbars:nobar, class:^(steam)$"
|
||||
"plugin:hyprbars:nobar, class:^(steam_app_\\d+)$"
|
||||
"match:class ^(steam)$, hyprbars:no_bar on"
|
||||
"match:class ^(steam_app_\\d+)$, hyprbars:no_bar on"
|
||||
|
||||
# --- STEAM GENERAL RULES ---
|
||||
# Default ALL steam class windows to float. This catches all dialogs & properties windows.
|
||||
"float, class:^(steam)$"
|
||||
"match:class ^(steam)$, float on"
|
||||
# Suppress focus stealing from dialogs/etc.
|
||||
"noinitialfocus, class:^(steam)$"
|
||||
"suppressevent activate, class:^(steam)$"
|
||||
"match:class ^(steam)$, no_initial_focus on"
|
||||
"match:class ^(steam)$, suppress_event activate fullscreen maximize"
|
||||
|
||||
# --- STEAM CLIENT OVERRIDE ---
|
||||
# Override the float for the main Steam client, tile it, and move it to the special workspace.
|
||||
"tile, class:^(steam)$, title:^(Steam)$"
|
||||
"workspace special:steam, class:^(steam)$, title:^(Steam)$"
|
||||
"match:class ^(steam)$, tile on"
|
||||
"match:class ^(steam)$, workspace special:steam"
|
||||
|
||||
# --- STEAM GAME OVERRIDES ---
|
||||
# Override the float for actual games and move them to the gaming workspace.
|
||||
# 1. Auto-detected steam_app games (like Deadlock).
|
||||
"tile, class:^(steam_app_\\d+)$"
|
||||
"workspace name:gaming, class:^(steam_app_\\d+)$"
|
||||
"match:class ^(steam_app_\\d+)$, monitor ${gamingMonitor}"
|
||||
"match:class ^(steam_app_\\d+)$, tile on"
|
||||
"match:class ^(steam_app_\\d+)$, fullscreen on"
|
||||
"match:class ^(steam_app_\\d+)$, immediate on"
|
||||
"match:class ^(steam_app_\\d+)$, workspace name:gaming"
|
||||
|
||||
# 2. Behavior-detected manual games (e.g. ARC Raiders).
|
||||
# This moves any steam game to the gaming workspace and tiles it when it becomes fullscreen.
|
||||
"tile, class:^(steam)$, fullscreen:1"
|
||||
"workspace name:gaming, class:^(steam)$, fullscreen:1"
|
||||
"match:class ^(steam)$, match:fullscreen true, tile on"
|
||||
"match:class ^(steam)$, match:fullscreen true, workspace name:gaming"
|
||||
]
|
||||
# Other auto-detected non-steam games
|
||||
++ (mkGameRules "class:^(gamescope)$")
|
||||
++ (mkGameRules "class:^(lutris)$")
|
||||
++ (mkGameRules "class:^(heroic)$")
|
||||
++ (mkGameRules "class:^wine-.*$")
|
||||
++ (mkGameRules "title:^Wine .*$")
|
||||
++ (mkGameRules "initialTitle:^(?i)godot.*$")
|
||||
++ (mkGameRules "class ^(gamescope)$")
|
||||
++ (mkGameRules "class ^(lutris)$")
|
||||
++ (mkGameRules "class ^(heroic)$")
|
||||
++ (mkGameRules "class ^wine-.*$")
|
||||
++ (mkGameRules "title ^Wine .*$")
|
||||
++ (mkGameRules "initial_title ^(?i)godot.*$")
|
||||
# ++ [
|
||||
# "monitor 0, initialTitle:^(?i)godot.*$"
|
||||
# "fullscreen, initialTitle:^(?i)godot.*$"
|
||||
|
||||
@@ -42,14 +42,14 @@ in {
|
||||
"SUPER SHIFT, M, Move to Music Workspace, movetoworkspace, name:music"
|
||||
];
|
||||
|
||||
windowrulev2 = [
|
||||
windowrule = [
|
||||
# --- MUSIC RULES (Jellyfin-TUI) ---
|
||||
"workspace name:music silent, title:^(jellyfin-tui)$"
|
||||
"workspace name:music silent, initialTitle:^(jellyfin-tui)$"
|
||||
"match:title ^(jellyfin-tui)$, workspace name:music silent"
|
||||
"match:initial_title ^(jellyfin-tui)$, workspace name:music silent"
|
||||
|
||||
# --- CAVA RULES ---
|
||||
"workspace name:music silent, title:^(cava)$"
|
||||
"workspace name:music silent, initialTitle:^(cava)$"
|
||||
"match:title ^(cava)$, workspace name:music silent"
|
||||
"match:initial_title ^(cava)$, workspace name:music silent"
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
imports = [
|
||||
./apps-optional.nix
|
||||
./backlight.nix
|
||||
./flatpak.nix
|
||||
./btop.nix
|
||||
./boot.nix
|
||||
./fonts.nix
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{pkgs, ...}: {
|
||||
services.flatpak.enable = true;
|
||||
|
||||
# GTK portal required by most Flatpak apps for file chooser and other dialogs
|
||||
xdg.portal.extraPortals = [pkgs.xdg-desktop-portal-gtk];
|
||||
}
|
||||
@@ -8,11 +8,11 @@
|
||||
enable = true;
|
||||
settings = {
|
||||
initial_session = {
|
||||
command = "${pkgs.hyprland}/bin/Hyprland";
|
||||
command = "${pkgs.uwsm}/bin/start-hyprland";
|
||||
user = "${myConfig.nixos.username}";
|
||||
};
|
||||
default_session = {
|
||||
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd Hyprland";
|
||||
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd start-hyprland";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user