This commit is contained in:
암냥 2026-09-12 02:16:41 +09:00
commit c340fc8753
8 changed files with 327 additions and 19 deletions

38
flake.lock generated
View file

@ -32,6 +32,22 @@
"url": "ssh://forgejo@mizuki.guru/imnyang/api.git" "url": "ssh://forgejo@mizuki.guru/imnyang/api.git"
} }
}, },
"arch-hyprland": {
"flake": false,
"locked": {
"lastModified": 1754196291,
"narHash": "sha256-3mhT1GI0onAL/jX/To2Qe2yaybIIX0b/KWq5M0YHFW8=",
"owner": "binnewbs",
"repo": "arch-hyprland",
"rev": "d4b5dd30347607b66e291bb0c41295f563f05941",
"type": "github"
},
"original": {
"owner": "binnewbs",
"repo": "arch-hyprland",
"type": "github"
}
},
"brew-src": { "brew-src": {
"flake": false, "flake": false,
"locked": { "locked": {
@ -300,6 +316,26 @@
"type": "github" "type": "github"
} }
}, },
"hyprmod": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1787844471,
"narHash": "sha256-AKnBFjkZs4UGZqMT3yIkaCdpvM2fVccU1dVuK5AVZBk=",
"owner": "BlueManCZ",
"repo": "hyprmod",
"rev": "ffd47d804d8996cf3852dbb7ca1c949c424a57fb",
"type": "github"
},
"original": {
"owner": "BlueManCZ",
"repo": "hyprmod",
"type": "github"
}
},
"imnyang": { "imnyang": {
"inputs": { "inputs": {
"nixpkgs": "nixpkgs_4" "nixpkgs": "nixpkgs_4"
@ -870,12 +906,14 @@
"inputs": { "inputs": {
"amiaBot": "amiaBot", "amiaBot": "amiaBot",
"api": "api", "api": "api",
"arch-hyprland": "arch-hyprland",
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"cfwithoutincident": "cfwithoutincident", "cfwithoutincident": "cfwithoutincident",
"codex-app": "codex-app", "codex-app": "codex-app",
"concord": "concord", "concord": "concord",
"darwin": "darwin", "darwin": "darwin",
"home-manager": "home-manager", "home-manager": "home-manager",
"hyprmod": "hyprmod",
"imnyang": "imnyang", "imnyang": "imnyang",
"millennium": "millennium", "millennium": "millennium",
"mizuki-nc": "mizuki-nc", "mizuki-nc": "mizuki-nc",

View file

@ -59,6 +59,16 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
arch-hyprland = {
url = "github:binnewbs/arch-hyprland";
flake = false;
};
hyprmod = {
url = "github:BlueManCZ/hyprmod";
inputs.nixpkgs.follows = "nixpkgs";
};
nixos-wsl.url = "github:nix-community/NixOS-WSL/main"; nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
codex-app = { codex-app = {

View file

@ -20,6 +20,7 @@
"${inputs.self}/modules/mizukios/features/system/graphics.nix" "${inputs.self}/modules/mizukios/features/system/graphics.nix"
"${inputs.self}/modules/mizukios/features/steam.nix" "${inputs.self}/modules/mizukios/features/steam.nix"
"${inputs.self}/modules/mizukios/features/_1password.nix" "${inputs.self}/modules/mizukios/features/_1password.nix"
"${inputs.self}/modules/mizukios/features/hyprland.nix"
]; ];
catppuccin.flavor = lib.mkForce "mocha"; catppuccin.flavor = lib.mkForce "mocha";

View file

@ -0,0 +1,261 @@
{ inputs, lib, pkgs, ... }:
let
assets = "${inputs.self}/assets";
upstream = "${inputs.arch-hyprland}/.config";
wallpaper = "${assets}/wallpaper/wallpaper5.png";
wallpaperPicker = pkgs.writeShellScript "ena-wallpaper-picker" ''
set -eu
wallpaper="$(${lib.getExe pkgs.rofi} -dmenu -p Wallpaper < <(find "$HOME/Pictures/wallpapers" -maxdepth 1 -type f))"
[ -n "$wallpaper" ] || exit 0
${pkgs.awww}/bin/awww img "$wallpaper" --transition-type any
ln -sfn "$wallpaper" "$HOME/.config/hypr/current_wallpaper"
'';
hyprlandConfig = ''
source = colors.conf
monitor = eDP-1, 1920x1080@60, 0x0, 1
$terminal = ${pkgs.ghostty}/bin/ghostty
$fileManager = ${pkgs.nautilus}/bin/nautilus
$menu = ${pkgs.vicinae}/bin/vicinae toggle
exec-once = ${pkgs.networkmanagerapplet}/bin/nm-applet --indicator
exec-once = ${pkgs.waybar}/bin/waybar
exec-once = ${pkgs.awww}/bin/awww-daemon
exec-once = ${pkgs.blueman}/bin/blueman-applet
exec-once = ${pkgs.swaynotificationcenter}/bin/swaync
exec-once = ${pkgs.hyprpolkitagent}/bin/hyprpolkitagent
exec-once = ln -sfn ${wallpaper} ~/.config/hypr/current_wallpaper
exec-once = sleep 1 && ${pkgs.awww}/bin/awww img ${wallpaper} --transition-type any
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
env = XCURSOR_THEME,pjsk-cursor-n25-ena-ani
source = ~/.config/hypr/configs/tags.conf
source = ~/.config/hypr/configs/looknfeel.conf
source = ~/.config/hypr/configs/UserAnimations.conf
source = ~/.config/hypr/configs/windowrules.conf
source = ~/.config/hypr/configs/keybinds.conf
dwindle {
pseudotile = true
preserve_split = true
}
master {
new_status = master
}
misc {
force_default_wallpaper = 0
disable_hyprland_logo = true
vfr = true
}
render {
new_render_scheduling = true
}
source = ~/.config/hypr/configs/input.conf
source = hyprland-gui.conf
'';
keybinds = ''
$mainMod = SUPER
bind = $mainMod, Return, exec, $terminal
bind = $mainMod SHIFT, Return, exec, [float; size 800 550] $terminal
bind = $mainMod, Q, killactive
bind = CTRL ALT, Delete, exec, hyprctl dispatch exit 0
bind = $mainMod, E, exec, $fileManager
bind = $mainMod, Space, togglefloating
bind = $mainMod, D, exec, $menu
bind = $mainMod, P, pseudo
bind = $mainMod, J, togglesplit
bind = $mainMod, L, exec, ${pkgs.hyprlock}/bin/hyprlock
bind = $mainMod SHIFT, F, fullscreen
bind = $mainMod SHIFT, S, exec, mkdir -p "$HOME/Pictures/Screenshots" && ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp)" "$HOME/Pictures/Screenshots/$(date +%Y-%m-%d-%H%M%S).png"
bind = $mainMod, W, exec, ${wallpaperPicker}
bind = $mainMod, H, exec, pkill -SIGUSR1 waybar
bind = $mainMod SHIFT, E, exec, $terminal -e ${pkgs.yazi}/bin/yazi
bind = $mainMod CTRL, G, exec, ${inputs.hyprmod.packages.${pkgs.system}.default}/bin/hyprmod
bind = $mainMod, left, movefocus, l
bind = $mainMod, right, movefocus, r
bind = $mainMod, up, movefocus, u
bind = $mainMod, down, movefocus, d
bind = $mainMod CTRL, left, movewindow, l
bind = $mainMod CTRL, right, movewindow, r
bind = $mainMod CTRL, up, movewindow, u
bind = $mainMod CTRL, down, movewindow, d
binde = $mainMod SHIFT, left, resizeactive, -50 0
binde = $mainMod SHIFT, right, resizeactive, 50 0
binde = $mainMod SHIFT, up, resizeactive, 0 -50
binde = $mainMod SHIFT, down, resizeactive, 0 50
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bindel = , XF86AudioRaiseVolume, exec, ${pkgs.wireplumber}/bin/wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+
bindel = , XF86AudioLowerVolume, exec, ${pkgs.wireplumber}/bin/wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = , XF86AudioMute, exec, ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = , XF86AudioMicMute, exec, ${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = , XF86MonBrightnessUp, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 10%+
bindel = , XF86MonBrightnessDown, exec, ${pkgs.brightnessctl}/bin/brightnessctl set 10%-
bindl = , XF86AudioNext, exec, ${pkgs.playerctl}/bin/playerctl next
bindl = , XF86AudioPause, exec, ${pkgs.playerctl}/bin/playerctl play-pause
bindl = , XF86AudioPlay, exec, ${pkgs.playerctl}/bin/playerctl play-pause
bindl = , XF86AudioPrev, exec, ${pkgs.playerctl}/bin/playerctl previous
'';
# ponytail: keep the upstream core rice only; add Matugen/extra Waybar modules when needed.
waybarConfig = builtins.toJSON {
layer = "top";
position = "top";
spacing = 3;
margin-top = 3;
margin-left = 8;
margin-right = 8;
modules-left = [ "clock" "tray" ];
modules-center = [ "hyprland/workspaces" ];
modules-right = [ "network" "pulseaudio" "battery" "custom/power" ];
clock = {
interval = 1;
format = " {:%I:%M %p}";
format-alt = " {:%H:%M %Y, %d %B, %A}";
tooltip-format = "<tt><small>{calendar}</small></tt>";
};
network = {
format-wifi = " {essid}";
format-ethernet = "󰈀 {ifname}";
format-disconnected = "󰤮";
tooltip-format = "{ifname}: {ipaddr}/{cidr}";
};
pulseaudio = {
format = "{icon} {volume}%";
format-muted = "󰖁 muted";
format-icons = [ "" "" "" ];
on-click = "${pkgs.wireplumber}/bin/wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
};
battery = {
states = { warning = 30; critical = 15; };
format = "{icon} {capacity}%";
format-charging = " {capacity}%";
format-icons = [ "󰂎" "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
};
"custom/power" = {
format = "";
on-click = "${pkgs.wlogout}/bin/wlogout";
tooltip = true;
tooltip-format = "Logout Menu";
};
};
in
{
home.packages = with pkgs; [
awww
blueman
brightnessctl
grim
hyprpolkitagent
libnotify
nautilus
networkmanagerapplet
playerctl
rofi
slurp
swaynotificationcenter
waybar
wireplumber
wlogout
yazi
];
home.file."Pictures/wallpapers" = {
source = "${assets}/wallpaper";
recursive = true;
};
xdg.configFile = {
"hypr/hyprland.conf".text = hyprlandConfig;
"hypr/colors.conf".source = "${upstream}/hypr/colors.conf";
"hypr/configs/tags.conf".source = "${upstream}/hypr/configs/tags.conf";
"hypr/configs/looknfeel.conf".source = "${upstream}/hypr/configs/looknfeel.conf";
"hypr/configs/UserAnimations.conf".source = "${upstream}/hypr/configs/UserAnimations.conf";
"hypr/configs/windowrules.conf".source = "${upstream}/hypr/configs/windowrules.conf";
"hypr/configs/input.conf".source = "${upstream}/hypr/configs/input.conf";
"hypr/configs/keybinds.conf".text = keybinds;
"hypr/hypridle.conf".source = "${upstream}/hypr/hypridle.conf";
"hypr/hyprlock.conf".source = "${upstream}/hypr/hyprlock.conf";
"waybar/config".text = waybarConfig;
"waybar/colors.css".source = "${upstream}/waybar/colors.css";
"waybar/style.css".source = "${upstream}/waybar/style/bintang default.css";
"wlogout/layout".text = ''
{
"label" : "lock",
"action" : "${pkgs.hyprlock}/bin/hyprlock",
"text" : "Lock",
"keybind" : "l"
}
{
"label" : "reboot",
"action" : "systemctl reboot",
"text" : "Reboot",
"keybind" : "r"
}
{
"label" : "shutdown",
"action" : "systemctl poweroff",
"text" : "Shutdown",
"keybind" : "s"
}
{
"label" : "logout",
"action" : "loginctl kill-session $XDG_SESSION_ID",
"text" : "Logout",
"keybind" : "e"
}
{
"label" : "suspend",
"action" : "systemctl suspend",
"text" : "Suspend",
"keybind" : "u"
}
'';
"wlogout/style.css".source = "${upstream}/wlogout/style.css";
"wlogout/icons" = {
source = "${upstream}/wlogout/icons";
recursive = true;
};
};
}

View file

@ -1,17 +0,0 @@
{ inputs, lib, ... }:
let
assets = "${inputs.self}/assets";
in
{
imports = [ "${inputs.self}/modules/home/plasma.nix" ];
programs.plasma.workspace.cursor = {
theme = "pjsk-cursor-n25-ena-ani";
};
programs.plasma.workspace.colorScheme = lib.mkForce "KawaDark";
programs.plasma.workspace.wallpaper = "${assets}/wallpaper/wallpaper5.png";
programs.plasma.kscreenlocker.appearance.wallpaper = "${assets}/wallpaper/wallpaper3.png";
}

View file

@ -35,7 +35,7 @@
"${inputs.self}/modules/home/vicinae.nix" "${inputs.self}/modules/home/vicinae.nix"
./config/shell.nix ./config/shell.nix
./config/plasma.nix ./config/hyprland.nix
]; ];
programs.btop.settings.color_theme = lib.mkForce "Mizuki Dark"; programs.btop.settings.color_theme = lib.mkForce "Mizuki Dark";

View file

@ -9,6 +9,6 @@ with pkgs;
# inputs.waterfox.packages.${pkgs.system}.waterfox # inputs.waterfox.packages.${pkgs.system}.waterfox
gnome-network-displays gnome-network-displays
element-desktop element-desktop
inputs.imnyang.packages.${pkgs.system}.figma-linux inputs.hyprmod.packages.${pkgs.system}.default
# hoffice # hoffice
] ]

View file

@ -0,0 +1,15 @@
{ lib, ... }:
{
programs.hyprland = {
enable = true;
withUWSM = true;
};
programs.hyprlock.enable = true;
services.displayManager.defaultSession = "hyprland-uwsm";
# desktop.nix enables Plasma for the other machines; ena uses Hyprland.
services.desktopManager.plasma6.enable = lib.mkForce false;
xdg.portal.config.common.default = lib.mkForce "hyprland";
}