diff --git a/flake.lock b/flake.lock index 52f7a58..98d32ad 100644 --- a/flake.lock +++ b/flake.lock @@ -18,6 +18,24 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -25,11 +43,11 @@ ] }, "locked": { - "lastModified": 1776454077, - "narHash": "sha256-7zSUFWsU0+jlD7WB3YAxQ84Z/iJurA5hKPm8EfEyGJk=", + "lastModified": 1779969295, + "narHash": "sha256-HwIJ3tOcwSMiV75L7KqJXciXR9UfT+d7rwOZMX7cTnA=", "owner": "nix-community", "repo": "home-manager", - "rev": "565e5349208fe7d0831ef959103c9bafbeac0681", + "rev": "61e2c9659324181e0f0ed911958c536333b1d4f6", "type": "github" }, "original": { @@ -38,6 +56,26 @@ "type": "github" } }, + "insomnia": { + "inputs": { + "flake-utils": "flake-utils_2", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1780015149, + "narHash": "sha256-sEpglWrsVDNHys56LNLY8mvak2A3OkRE865ZYTc9i/w=", + "ref": "develop", + "rev": "b0c3b79e114502acd375afe78cac34ef2aeef05c", + "revCount": 610, + "type": "git", + "url": "ssh://git@gitea.hareworks.net/Hare/insomnia.git" + }, + "original": { + "ref": "develop", + "type": "git", + "url": "ssh://git@gitea.hareworks.net/Hare/insomnia.git" + } + }, "nix-index-database": { "inputs": { "nixpkgs": [ @@ -45,11 +83,11 @@ ] }, "locked": { - "lastModified": 1775970782, - "narHash": "sha256-7jt9Vpm48Yy5yAWigYpde+HxtYEpEuyzIQJF4VYehhk=", + "lastModified": 1779604987, + "narHash": "sha256-ZQ5z+fVhxYKtIFwtqGp5O0PD84BM1riASvqDaN5Xs+s=", "owner": "Mic92", "repo": "nix-index-database", - "rev": "bedba5989b04614fc598af9633033b95a937933f", + "rev": "8fba98c80b48fa013820e0163c5096922fea4ddd", "type": "github" }, "original": { @@ -60,11 +98,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1775490113, - "narHash": "sha256-2ZBhDNZZwYkRmefK5XLOusCJHnoeKkoN95hoSGgMxWM=", + "lastModified": 1779826373, + "narHash": "sha256-3sRzgLX86qV5NlhWUAufLmHwkyP03tmL3VdZIM13dEo=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "c775c2772ba56e906cbeb4e0b2db19079ef11ff7", + "rev": "ef4efb84766a166c906bd55759574676bf91267c", "type": "github" }, "original": { @@ -75,11 +113,27 @@ }, "nixpkgs": { "locked": { - "lastModified": 1776169885, - "narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=", + "lastModified": 1775036866, + "narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "6201e203d09599479a3b3450ed24fa81537ebc4e", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1779560665, + "narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4bd9165a9165d7b5e33ae57f3eecbcb28fb231c9", + "rev": "64c08a7ca051951c8eae34e3e3cb1e202fe36786", "type": "github" }, "original": { @@ -89,7 +143,7 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs_3": { "locked": { "lastModified": 1727348695, "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", @@ -109,9 +163,10 @@ "inputs": { "flake-utils": "flake-utils", "home-manager": "home-manager", + "insomnia": "insomnia", "nix-index-database": "nix-index-database", "nixos-hardware": "nixos-hardware", - "nixpkgs": "nixpkgs", + "nixpkgs": "nixpkgs_2", "zen-browser": "zen-browser" } }, @@ -130,9 +185,24 @@ "type": "github" } }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "zen-browser": { "inputs": { - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs_3" }, "locked": { "lastModified": 1761859251, diff --git a/flake.nix b/flake.nix index f8ad23a..1696c68 100644 --- a/flake.nix +++ b/flake.nix @@ -10,6 +10,7 @@ flake-utils.url = "github:numtide/flake-utils"; nixos-hardware.url = "github:NixOS/nixos-hardware"; zen-browser.url = "github:xaragon/zen-browser-flake"; + insomnia.url = "git+ssh://git@gitea.hareworks.net/Hare/insomnia.git?ref=develop"; nix-index-database.url = "github:Mic92/nix-index-database"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/home-manager/hyprland/default.nix b/home-manager/hyprland/default.nix index a62ce5e..e39d939 100644 --- a/home-manager/hyprland/default.nix +++ b/home-manager/hyprland/default.nix @@ -5,8 +5,46 @@ ... }: let - inherit (lib) mkOption recursiveUpdate types optionals; + inherit (lib) + mkOption + recursiveUpdate + types + optionals + ; rosePineHyprcursor = pkgs.callPackage ./rose-pine-hyprcursor.nix { }; + mkLua = lib.generators.mkLuaInline; + + mkEnv = name: value: { + _args = [ + name + value + ]; + }; + + mkBind = keys: dispatcher: { + _args = [ + keys + (mkLua dispatcher) + ]; + }; + + mkMouseBind = keys: dispatcher: { + _args = [ + keys + (mkLua dispatcher) + { mouse = true; } + ]; + }; + + mkStartHook = commands: { + _args = [ + "hyprland.start" + (mkLua '' + function() + ${lib.concatMapStrings (command: " hl.exec_cmd(${builtins.toJSON command})\n") commands}end + '') + ]; + }; defaultInput = { kb_layout = "us"; @@ -27,35 +65,31 @@ let wallpaperCommand = config.hare.hyprland.wallpaperCommand; - baseSettings = { - exec-once = [ - # "/usr/lib/polkit-kde-authentication-agent-1" - # "dunst" - "awww-daemon" - # "copyq --start-server" - # "wl-paste --type text --watch cliphist store" - # "wl-paste --type image --watch cliphist store" - "eww daemon" - "eww open bar" - "eww open roundedEdge" - ]; - exec = - optionals (wallpaperCommand != null) [ - wallpaperCommand - ] - ++ [ + startupCommands = [ + # "/usr/lib/polkit-kde-authentication-agent-1" + # "dunst" + "awww-daemon" + # "copyq --start-server" + # "wl-paste --type text --watch cliphist store" + # "wl-paste --type image --watch cliphist store" + "eww daemon" + "eww open bar" + "eww open roundedEdge" + ]; + + reloadCommands = + optionals (wallpaperCommand != null) [ + wallpaperCommand + ] + ++ [ "dconf write /org/gnome/desktop/interface/gtk-theme 'Adwaita Dark'" "dconf write /org/gnome/desktop/interface/icon-theme 'Adwaita Dark'" "dconf write /org/gnome/desktop/interface/document-font-name 'Noto Sans Medium 11'" "dconf write /org/gnome/desktop/interface/font-name 'Noto Sans Medium 11'" "dconf write /org/gnome/desktop/interface/monospace-font-name 'Noto Sans Mono Medium 11'" ]; - env = [ - "XDG_CURRENT_DESKTOP,Hyprland" - "XDG_SESSION_TYPE,wayland" - "XDG_SESSION_DESKTOP,Hyprland" - ]; + baseConfig = { ecosystem.no_update_news = true; input = defaultInput; @@ -66,7 +100,6 @@ let }; dwindle = { - pseudotile = true; preserve_split = true; }; @@ -75,76 +108,124 @@ let disable_hyprland_logo = true; disable_splash_rendering = true; }; + xwayland = { + force_zero_scaling = true; + }; + }; - windowrule = [ - "animation windowsIn 0, match:title ^(.*wofi.*)$" - "float on, match:title ^(.*feh.*)$" - "center on, match:title ^(.*feh.*)$" - "float on, match:title ^(Picture.*)$" - "pin on, match:title ^(Picture.*)$" - "immediate on, match:class ^(Terraria)$" + baseSettings = { + menu = { + _var = "uwsm app -- $(tofi-drun)"; + }; + terminal = { + _var = "wezterm"; + }; + lock = { + _var = "hyprlock"; + }; + + env = [ + (mkEnv "XDG_CURRENT_DESKTOP" "Hyprland") + (mkEnv "XDG_SESSION_TYPE" "wayland") + (mkEnv "XDG_SESSION_DESKTOP" "Hyprland") + # "GDK_SCALE,2" + # "XCURSOR_SIZE,32" ]; - workspace = [ - "1, monitor:DP-2, default:true" - "r[2-9], monitor:DP-2" - "name:sub, monitor:DP-1, default:true" + exec_cmd = reloadCommands; + + on = mkStartHook startupCommands; + + window_rule = [ + { + match.title = "^(.*wofi.*)$"; + animation = "windowsIn 0"; + } + { + match.title = "^(.*feh.*)$"; + float = true; + } + { + match.title = "^(.*feh.*)$"; + center = true; + } + { + match.title = "^(Picture.*)$"; + float = true; + } + { + match.title = "^(Picture.*)$"; + pin = true; + } ]; - "$menu" = "uwsm app -- $(tofi-drun)"; - "$terminal" = "wezterm"; - "$lock" = "hyprlock"; - bindm = [ - # Window Movement & Resizing - "SUPER, mouse:272, movewindow" - "SUPER, mouse:273, resizewindow" + workspace_rule = [ + { + workspace = "r[1-9]"; + monitor = "DP-1"; + } + { + workspace = "101"; + monitor = "DP-2"; + default = true; + } + { + workspace = "102"; + monitor = "DP-3"; + default = true; + } ]; + bind = [ + # Window Movement & Resizing + (mkMouseBind "SUPER + mouse:272" "hl.dsp.window.drag()") + (mkMouseBind "SUPER + mouse:273" "hl.dsp.window.resize()") + # basic - "SUPER, return, exec, $menu" - "SUPER, E, exec, $terminal" - "SUPER, Q, killactive," - "SUPER, L, exec, $lock" - "SUPER_SHIFT, L, exec, hyprctl dispatch dpms off" - "SUPER_SHIFT, M, exec, loginctl terminate-user $USER" + (mkBind "SUPER + RETURN" "hl.dsp.exec_cmd(menu)") + (mkBind "SUPER + E" "hl.dsp.exec_cmd(terminal)") + (mkBind "SUPER + Q" "hl.dsp.window.close()") + (mkBind "SUPER + L" "hl.dsp.exec_cmd(lock)") + (mkBind "SUPER + SHIFT + L" ''hl.dsp.dpms({ action = "off" })'') + (mkBind "SUPER + SHIFT + M" ''hl.dsp.exec_cmd("loginctl terminate-user $USER")'') # prsc - ", Print, exec, hyprshot -m window -m active --clipboard-only" + (mkBind "Print" ''hl.dsp.exec_cmd("hyprshot -m window -m active --clipboard-only")'') # Clipboard - "SUPER, C, exec, copyq show" - "SUPER, V, exec, clipman pick -t dmenu" + (mkBind "SUPER + C" ''hl.dsp.exec_cmd("copyq show")'') + (mkBind "SUPER + V" ''hl.dsp.exec_cmd("clipman pick -t dmenu")'') # Window navigation - "SUPER, F, fullscreen," - "SUPER, Y, pin" - "SUPER, I, togglefloating," - "SUPER, O, togglesplit," # dwindle - "SUPER, P, pseudo," # dwindle + (mkBind "SUPER + F" "hl.dsp.window.fullscreen()") + (mkBind "SUPER + Y" "hl.dsp.window.pin()") + (mkBind "SUPER + I" ''hl.dsp.window.float({ action = "toggle" })'') + (mkBind "SUPER + O" ''hl.dsp.layout("togglesplit")'') # dwindle + (mkBind "SUPER + P" "hl.dsp.window.pseudo()") # dwindle # Window focus - "SUPER, mouse_down, cyclenext, next" - "SUPER, mouse_up, cyclenext, prev" + (mkBind "SUPER + mouse_down" "hl.dsp.window.cycle_next()") + (mkBind "SUPER + mouse_up" "hl.dsp.window.cycle_next({ next = false })") - "SUPER, left, movefocus, l" - "SUPER, right, movefocus, r" - "SUPER, up, movefocus, u" - "SUPER, down, movefocus, d" + (mkBind "SUPER + left" ''hl.dsp.focus({ direction = "left" })'') + (mkBind "SUPER + right" ''hl.dsp.focus({ direction = "right" })'') + (mkBind "SUPER + up" ''hl.dsp.focus({ direction = "up" })'') + (mkBind "SUPER + down" ''hl.dsp.focus({ direction = "down" })'') - "SUPER_SHIFT, left, movewindow, l" - "SUPER_SHIFT, right, movewindow, r" - "SUPER_SHIFT, up, movewindow, u" - "SUPER_SHIFT, down, movewindow, d" + (mkBind "SUPER + SHIFT + left" ''hl.dsp.window.move({ direction = "left" })'') + (mkBind "SUPER + SHIFT + right" ''hl.dsp.window.move({ direction = "right" })'') + (mkBind "SUPER + SHIFT + up" ''hl.dsp.window.move({ direction = "up" })'') + (mkBind "SUPER + SHIFT + down" ''hl.dsp.window.move({ direction = "down" })'') # workspaces - "SUPER, 1, workspace, 1" - "SUPER, 2, workspace, 2" - "SUPER, 3, workspace, 3" + (mkBind "SUPER + 1" "hl.dsp.focus({ workspace = 1 })") + (mkBind "SUPER + 2" "hl.dsp.focus({ workspace = 2 })") + (mkBind "SUPER + 3" "hl.dsp.focus({ workspace = 3 })") - "SUPER_CTRL, left, workspace, m-1" - "SUPER_CTRL, right, workspace, m+1" - "SUPER_CTRL_SHIFT, left, workspace, r-1" - "SUPER_CTRL_SHIFT, right, workspace, r+1" + (mkBind "SUPER + CTRL + left" ''hl.dsp.focus({ workspace = "m-1" })'') + (mkBind "SUPER + CTRL + right" ''hl.dsp.focus({ workspace = "m+1" })'') + (mkBind "SUPER + CTRL + SHIFT + left" ''hl.dsp.focus({ workspace = "r-1" })'') + (mkBind "SUPER + CTRL + SHIFT + right" ''hl.dsp.focus({ workspace = "r+1" })'') ] ++ ( # workspaces @@ -156,8 +237,8 @@ let ws = i + 1; in [ - "SUPER, code:1${toString i}, workspace, ${toString ws}" - "SUPER SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + (mkBind "SUPER + code:1${toString i}" "hl.dsp.focus({ workspace = ${toString ws} })") + (mkBind "SUPER + SHIFT + code:1${toString i}" "hl.dsp.window.move({ workspace = ${toString ws} })") ] ) 9 ) @@ -169,8 +250,16 @@ let gaps_in = 4; gaps_out = 7; border_size = 3; - "col.active_border" = "rgba(6e848cee) rgba(eeeeffee) 90deg"; - "col.inactive_border" = "rgba(595959aa)"; + col = { + active_border = { + colors = [ + "rgba(6e848cee)" + "rgba(eeeeffee)" + ]; + angle = 90; + }; + inactive_border = "rgba(595959aa)"; + }; }; decoration = { rounding = 10; @@ -195,18 +284,59 @@ let animations = { enabled = true; animation = [ - "windowsIn, 1, 1, default, popin 90%" - "windowsOut, 1, 100, default, popin 80%" - "windowsMove, 1, 3, default" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 5, default, slidefade 10%" + { + leaf = "windowsIn"; + enabled = true; + speed = 1; + bezier = "default"; + style = "popin 90%"; + } + { + leaf = "windowsOut"; + enabled = true; + speed = 100; + bezier = "default"; + style = "popin 80%"; + } + { + leaf = "windowsMove"; + enabled = true; + speed = 3; + bezier = "default"; + } + { + leaf = "border"; + enabled = true; + speed = 10; + bezier = "default"; + } + { + leaf = "borderangle"; + enabled = true; + speed = 8; + bezier = "default"; + } + { + leaf = "fade"; + enabled = true; + speed = 7; + bezier = "default"; + } + { + leaf = "workspaces"; + enabled = true; + speed = 5; + bezier = "default"; + style = "slidefade 10%"; + } ]; }; }; styleSettings = recursiveUpdate defaultStyle config.hare.hyprland.style; + styleConfig = recursiveUpdate (builtins.removeAttrs styleSettings [ "animations" ]) { + animations = builtins.removeAttrs styleSettings.animations [ "animation" ]; + }; inputSettings = recursiveUpdate defaultInput config.hare.hyprland.input; in { @@ -230,9 +360,13 @@ in config = { wayland.windowManager.hyprland = { enable = true; + configType = "lua"; systemd.enable = false; - settings = recursiveUpdate (recursiveUpdate baseSettings styleSettings) { - input = inputSettings; + settings = recursiveUpdate baseSettings { + config = recursiveUpdate (recursiveUpdate baseConfig styleConfig) { + input = inputSettings; + }; + animation = styleSettings.animations.animation; }; plugins = [ ]; diff --git a/home-manager/hyprland/styles/thin.nix b/home-manager/hyprland/styles/thin.nix index cce0938..57f61d5 100644 --- a/home-manager/hyprland/styles/thin.nix +++ b/home-manager/hyprland/styles/thin.nix @@ -4,8 +4,16 @@ gaps_in = 0; gaps_out = 0; border_size = 2; - "col.active_border" = "rgba(6e848cee) rgba(eeeeffee) 90deg"; - "col.inactive_border" = "rgba(595959aa)"; + col = { + active_border = { + colors = [ + "rgba(6e848cee)" + "rgba(eeeeffee)" + ]; + angle = 90; + }; + inactive_border = "rgba(595959aa)"; + }; layout = "dwindle"; allow_tearing = true; }; @@ -31,13 +39,51 @@ animations = lib.mkForce { enabled = true; animation = [ - "windowsIn, 1, 1, default, popin 90%" - "windowsOut, 1, 100, default, popin 80%" - "windowsMove, 1, 3, default" - "border, 1, 10, default" - "borderangle, 1, 8, default" - "fade, 1, 7, default" - "workspaces, 1, 5, default, slidefade 10%" + { + leaf = "windowsIn"; + enabled = true; + speed = 1; + bezier = "default"; + style = "popin 90%"; + } + { + leaf = "windowsOut"; + enabled = true; + speed = 100; + bezier = "default"; + style = "popin 80%"; + } + { + leaf = "windowsMove"; + enabled = true; + speed = 3; + bezier = "default"; + } + { + leaf = "border"; + enabled = true; + speed = 10; + bezier = "default"; + } + { + leaf = "borderangle"; + enabled = true; + speed = 8; + bezier = "default"; + } + { + leaf = "fade"; + enabled = true; + speed = 7; + bezier = "default"; + } + { + leaf = "workspaces"; + enabled = true; + speed = 5; + bezier = "default"; + style = "slidefade 10%"; + } ]; }; } diff --git a/hosts/arcadia/hare/home-manager.nix b/hosts/arcadia/hare/home-manager.nix index bf108bd..a40a429 100644 --- a/hosts/arcadia/hare/home-manager.nix +++ b/hosts/arcadia/hare/home-manager.nix @@ -19,13 +19,30 @@ ../../../home-manager/obs-studio.nix ../../../home-manager/zeditor.nix ../../../home-manager/blender.nix - ../../../home-manager/voicevox.nix + # ../../../home-manager/voicevox.nix ]; wayland.windowManager.hyprland.settings.monitor = [ - "DP-1, 5120x2880@60, 0x0, 2" - "DP-2, 2560x1440@144, 2560x0, 1, transform, 0" - "DP-3, 1920x1080@144, -1080x-240, 1, transform, 1" + { + output = "DP-1"; + mode = "5120x2880@60"; + position = "0x0"; + scale = 2; + } + { + output = "DP-2"; + mode = "2560x1440@144"; + position = "2560x0"; + scale = 1; + transform = 0; + } + { + output = "DP-3"; + mode = "1920x1080@144"; + position = "-1080x-240"; + scale = 1; + transform = 1; + } ]; hare.hyprland = { input.sensitivity = -1.0; @@ -41,6 +58,7 @@ plemoljp plemoljp-nf prismlauncher + nodejs scrcpy tetrio-desktop kicad @@ -48,11 +66,9 @@ inkscape obsidian kdePackages.filelight - inputs.zen-browser.packages."${stdenv.hostPlatform.system}".default (deno.overrideAttrs (oldAttrs: { doCheck = false; })) - nodejs_24 godot unityhub nixd @@ -61,7 +77,8 @@ bambu-studio orca-slicer davinci-resolve - antigravity + inputs.zen-browser.packages."${stdenv.hostPlatform.system}".default + inputs.insomnia.packages.${stdenv.hostPlatform.system}.default ]; services.easyeffects = { enable = true; @@ -71,6 +88,11 @@ enable = true; settings.user.name = "Hare"; settings.user.email = "kei.hiracchi.0928@gmail.com"; + signing = { + format = "ssh"; + key = "~/.ssh/git-sign.pub"; + signByDefault = true; + }; }; fonts = { @@ -92,6 +114,7 @@ "x-scheme-handler/https" = "vivaldi-stable.desktop"; "x-scheme-handler/about" = "vivaldi-stable.desktop"; "x-scheme-handler/unknown" = "vivaldi-stable.desktop"; + "x-scheme-handler/vivaldi" = "vivaldi-stable.desktop"; }; }; } diff --git a/hosts/arcadia/nixos.nix b/hosts/arcadia/nixos.nix index fa44d0d..eec48a0 100644 --- a/hosts/arcadia/nixos.nix +++ b/hosts/arcadia/nixos.nix @@ -6,9 +6,20 @@ in system.stateVersion = "25.11"; cornflake.greeter.monitors = [ - "DP-1, 5120x2880@60, 0x0, 2" - "DP-2, disable" - "DP-3, disable" + { + output = "DP-1"; + mode = "5120x2880@60"; + position = "0x0"; + scale = 2; + } + { + output = "DP-2"; + disabled = true; + } + { + output = "DP-3"; + disabled = true; + } ]; imports = [ @@ -54,6 +65,7 @@ in obexftp fzf ghq + gh ]; environment.sessionVariables.NIXOS_OZONE_WL = "1"; @@ -69,8 +81,7 @@ in 5173 8000 9001 - 2222 # crtb server - 11434 + 25565 ]; networking.firewall.allowedUDPPorts = [ ]; diff --git a/programs/steam.nix b/programs/steam.nix index 65035f8..c46221e 100644 --- a/programs/steam.nix +++ b/programs/steam.nix @@ -5,4 +5,8 @@ dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers }; + + programs.gamescope = { + enable = true; + }; } diff --git a/system/core/greeter.nix b/system/core/greeter.nix index 8cba2ad..e9ca6dc 100644 --- a/system/core/greeter.nix +++ b/system/core/greeter.nix @@ -1,39 +1,51 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: let rosePineHyprcursor = pkgs.callPackage ../../home-manager/hyprland/rose-pine-hyprcursor.nix { }; - monitorConf = lib.concatMapStrings (m: "monitor = ${m}\n") config.cornflake.greeter.monitors; - hyprGreetConf = pkgs.writeText "hyprland-greetd.conf" '' + toLua = lib.generators.toLua { }; + monitorConf = lib.concatMapStrings ( + m: "hl.monitor(${toLua m})\n" + ) config.cornflake.greeter.monitors; + hyprGreetConf = pkgs.writeText "hyprland-greetd.lua" '' ${monitorConf} - env = HYPRCURSOR_THEME,rose-pine-hyprcursor - env = HYPRCURSOR_SIZE,24 - env = XCURSOR_SIZE,24 + hl.env("HYPRCURSOR_THEME", "rose-pine-hyprcursor") + hl.env("HYPRCURSOR_SIZE", "24") + hl.env("XCURSOR_SIZE", "24") - env = XDG_CURRENT_DESKTOP,Hyprland - env = XDG_SESSION_TYPE,wayland - env = XDG_SESSION_DESKTOP,Hyprland + hl.env("XDG_CURRENT_DESKTOP", "Hyprland") + hl.env("XDG_SESSION_TYPE", "wayland") + hl.env("XDG_SESSION_DESKTOP", "Hyprland") - general { - border_size = 0 - } + hl.config({ + general = { + border_size = 0, + }, + animations = { + enabled = false, + }, + misc = { + force_default_wallpaper = false, + disable_hyprland_logo = true, + disable_splash_rendering = true, + }, + }) - animations { - enabled = false - } - - misc { - force_default_wallpaper = false - disable_hyprland_logo = true - disable_splash_rendering = true - } - - exec-once = ${config.programs.regreet.package or pkgs.regreet}/bin/regreet; hyprctl dispatch exit + hl.on("hyprland.start", function() + hl.exec_cmd("${ + config.programs.regreet.package or pkgs.regreet + }/bin/regreet; hyprctl dispatch exit") + end) ''; in { options.cornflake.greeter.monitors = lib.mkOption { - type = lib.types.listOf lib.types.str; + type = lib.types.listOf lib.types.attrs; default = [ ]; - description = "greetd セッション用 Hyprland の monitor 設定"; + description = "greetd セッション用 Hyprland の Lua monitor 設定"; }; config = {