diff --git a/flake.nix b/flake.nix index c283e69..f5d5f45 100644 --- a/flake.nix +++ b/flake.nix @@ -48,6 +48,7 @@ vm-sway = builtins.trace '' I haven't finished configuring sway yet. + use alt+enter to start a terminal. use alt+d to launch applications diff --git a/hardware/vm.nix b/hardware/vm.nix index 3db51c7..a0b57ac 100644 --- a/hardware/vm.nix +++ b/hardware/vm.nix @@ -9,9 +9,6 @@ in { home-manager.users.${user}.imports = [ { home.stateVersion = "24.05"; - - # so it won't conflict with the host - windowManager.modifierKey = "ALT"; } ]; diff --git a/home/default.nix b/home/default.nix index 1e95468..d9560a0 100644 --- a/home/default.nix +++ b/home/default.nix @@ -33,6 +33,7 @@ home.homeDirectory = "/home/${config.home.username}"; xdg.userDirs.enable = true; + xdg.mimeApps.enable = true; manual.html.enable = true; diff --git a/home/modules/terminal.nix b/home/modules/terminal.nix index 70a6e8c..e7bc66b 100644 --- a/home/modules/terminal.nix +++ b/home/modules/terminal.nix @@ -5,6 +5,7 @@ ... }: let term = config.programs.terminal; + termcmd = "${ config.programs.terminal }/bin/${config.programs.terminal.pname}"; in { options.programs = { terminal = lib.mkPackageOption pkgs "foot" { @@ -19,5 +20,6 @@ in { }; home.packages = [term]; + home.sessionVariables.TERMINAL = termcmd; }; } diff --git a/home/programs/browser.nix b/home/programs/browser.nix index 4ec2cf3..1da569c 100644 --- a/home/programs/browser.nix +++ b/home/programs/browser.nix @@ -1,4 +1,9 @@ { + home.sessionVariables.BROWSER = "qutebrowser"; + xdg.mimeApps.defaultApplications = { + "application/xhtml+xml" = "org.qutebrowser.qutebrowser.desktop"; + "text/html" = "org.qutebrowser.qutebrowser.desktop"; + }; programs.qutebrowser = { enable = true; searchEngines = { diff --git a/home/programs/hyprland.nix b/home/programs/hyprland.nix index f34cd0f..1f2ee7c 100644 --- a/home/programs/hyprland.nix +++ b/home/programs/hyprland.nix @@ -5,6 +5,7 @@ ... }: let modifier = config.windowManager.modifierKey; + in { imports = [ (import ./swaylock.nix) @@ -171,6 +172,14 @@ in { bind = ${modifier}, R, submap,reset bind = CONTROL, C, submap,reset submap = reset + + bind = ${modifier}_CONTROL, V, submap, passthrough + + submap = passthrough + bind = ${modifier}_CONTROL, V, submap, reset + bind = SUPER, escape, submap, reset + submap = reset + ''; }; diff --git a/home/programs/scripts.nix b/home/programs/scripts.nix index feef14f..8da583b 100644 --- a/home/programs/scripts.nix +++ b/home/programs/scripts.nix @@ -64,10 +64,12 @@ in { echo "$items" | ${my-deps.menu} | xargs -I_ rbw get --field username _ \ | awk '{print $2}' | wl-copy ''; - hotkeys = [{ - modifier = "${modifier}_CONTROL"; - key = "P"; - }]; + hotkeys = [ + { + modifier = "${modifier}_CONTROL"; + key = "P"; + } + ]; install = false; } { diff --git a/home/programs/sway.nix b/home/programs/sway.nix index 63015e5..cb24378 100644 --- a/home/programs/sway.nix +++ b/home/programs/sway.nix @@ -1,4 +1,17 @@ -{pkgs, ...}: { +{ + pkgs, + config, + ... +}: let + term = "${ config.programs.terminal }/bin/${config.programs.terminal.pname}"; + modKeyName = config.windowManager.modifierKey; + modifier = + if modKeyName == "SUPER" + then "Mod4" + else if modKeyName == "ALT" + then "Mod1" + else null; +in { imports = [ (import ./swaylock.nix) (import ./swayidle.nix) @@ -12,6 +25,10 @@ wayland.windowManager.sway = { enable = true; + config = { + inherit modifier; + bars = []; + }; }; services.swayidle = { diff --git a/nixos/modules/display.nix b/nixos/modules/display.nix index 3f6a933..2f5e144 100644 --- a/nixos/modules/display.nix +++ b/nixos/modules/display.nix @@ -8,8 +8,28 @@ with lib; let user = config.user; cfg = config.displays; + renderDisplaysForHyprland = displays: (map displayHyprlandSetting (builtins.filter (d: d.enable) displays)); + swaybgJob = displays: { + Unit = { + Description = "SwayBG"; + }; + Service = { + ExecStart = + "${pkgs.swaybg}/bin/swaybg " + + builtins.concatStringsSep " " (map swaybgCmd displays); + }; + Install = { + WantedBy = ["graphical-session.target"]; + }; + }; + + swaybgCmd = display: + if (display.enable && display ? wallpaper && display.wallpaper != null) + then "-o ${display.name} -i ${display.wallpaper} -m fill" + else ""; + displayHyprlandSetting = display: specificDisplay display + ", " @@ -22,25 +42,6 @@ with lib; let + "transform," + toString display.rotation; - swaybgJob = displays: { - Unit = { - Description = "SwayBG"; - }; - Service = { - ExecStart = - "${pkgs.swaybg}/bin/swaybg " - + concatStringsSep " " (map swaybgCmd displays); - }; - Install = { - WantedBy = ["graphical-session.target"]; - }; - }; - - swaybgCmd = display: - if (display.wallpaper != "") - then "-o ${display.name} -i ${display.wallpaper} -m fill" - else ""; - specificDisplay = display: if display.description == "" then display.name @@ -55,7 +56,7 @@ with lib; let else toString x + "x" + toString y; renderDisplaysForSway = displays: - listToAttrs (map displaySwaySetting displays); + listToAttrs (map displaySwaySetting (builtins.filter (d: d.enable) displays)); displaySwaySetting = display: { name = display.name; @@ -65,9 +66,12 @@ with lib; let mode = mkIf (!resUnset res) "${toString res.x}x${toString res.y}@${toString res.freq}Hz"; - bg = display.wallpaper + " fill"; scale = toString display.scaling; - }; + } + // lib.mkIf ( display ? wallpaper && display.wallpaper != null ) { + bg = "${ display.wallpaper } fill"; + } + ; }; resolutionType = types.submodule { @@ -124,7 +128,7 @@ with lib; let }; wallpaper = mkOption { description = "path to wallpaper"; - default = ""; + default = null; }; workspaces = mkOption { default = {}; @@ -173,10 +177,10 @@ in { config = mkIf cfg.enable { home-manager.users.${user}.imports = [ { - systemd.user.services.swaybg = swaybgJob (attrValues cfg.displays); - programs.waybar.settings.mainBar."hyprland/workspaces".persistent_workspaces = waybarWorkspaceConf (attrValues cfg.displays); + systemd.user.services.swaybg = swaybgJob (builtins.attrValues cfg.displays); + wayland.windowManager = mkIf (cfg.displays != {}) { hyprland.settings = { monitor = renderDisplaysForHyprland (attrValues cfg.displays);