diff --git a/modules/hyprland/default.nix b/modules/hyprland/default.nix index eab7aaa..571c1ff 100644 --- a/modules/hyprland/default.nix +++ b/modules/hyprland/default.nix @@ -40,19 +40,6 @@ in { trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; }; - xdg.portal = { - enable = true; - - extraPortals = with pkgs; [ - kdePackages.xdg-desktop-portal-kde - ]; - - config.common.default = [ - "hyprland" - "kde" - ]; - }; - home-manager.users.${config.main-user} = { imports = [ hyprland.homeManagerModules.default ]; @@ -81,6 +68,34 @@ in { ${config.hyprland-session.extraConfig} ''; }; + + + # MUST be specified under home manager or home manager will silently replace + # configs at the system level. + xdg.portal = { + enable = true; + + extraPortals = lib.mkForce (with pkgs; [ + xdg-desktop-portal-hyprland + kdePackages.xdg-desktop-portal-kde + ]); + + configPackages = lib.mkForce []; + config.common = { + default = [ "hyprland" ]; + "org.freedesktop.impl.portal.FileChooser" = [ "kde" ]; + }; + }; + + # Without this the portal blocks on desktop portals not being ready... + systemd.user.services.plasma-xdg-desktop-portal-kde.Service = { + ExecStart = "${pkgs.kdePackages.xdg-desktop-portal-kde}/libexec/xdg-desktop-portal-kde"; + BusName = "org.freedesktop.impl.portal.desktop.kde"; + Restart = "no"; + Environment = [ + "QT_QPA_PLATFORMTHEME=" + ]; + }; }; }; } diff --git a/modules/hyprland/hyprland.conf b/modules/hyprland/hyprland.conf index 3b24625..078c0e7 100644 --- a/modules/hyprland/hyprland.conf +++ b/modules/hyprland/hyprland.conf @@ -67,6 +67,7 @@ misc { disable_hyprland_logo = true disable_splash_rendering = true key_press_enables_dpms = true + session_lock_xray = true } render { diff --git a/modules/shell/default.nix b/modules/shell/default.nix new file mode 100644 index 0000000..24365ee --- /dev/null +++ b/modules/shell/default.nix @@ -0,0 +1,13 @@ +{ config, impurity, ... }: { + home-manager.users.${config.main-user} = { config, ... }: { + programs.nushell = { + enable = true; + configFile.text = "source ${impurity.link ./nushell.nu}"; + }; + + programs.carapace = { + enable = true; + enableNushellIntegration = true; + }; + }; +} diff --git a/modules/shell/nushell.nu b/modules/shell/nushell.nu new file mode 100644 index 0000000..f0240f3 --- /dev/null +++ b/modules/shell/nushell.nu @@ -0,0 +1,5 @@ +$env.config.show_banner = false +$env.config.buffer_editor = ["emacsclient", "-c"] +$env.CARAPACE_BRIDGES = ["fish", "zsh", "bash"] + +alias e = emacsclient -c diff --git a/modules/system.nix b/modules/system.nix index 7eb20c4..116b817 100644 --- a/modules/system.nix +++ b/modules/system.nix @@ -6,6 +6,7 @@ ./user ./emacs ./zsh + ./shell ./polkit.nix ]; diff --git a/systems/msi/default.nix b/systems/msi/default.nix index b121c73..1a3d5b3 100644 --- a/systems/msi/default.nix +++ b/systems/msi/default.nix @@ -45,4 +45,17 @@ hardware.bluetooth.enable = true; services.blueman.enable = true; + + services.udev.extraRules = '' + # usb ethernet dongle + ACTION=="bind", SUBSYSTEM=="usb", ATTR{idVendor}=="0b05", ATTR{idProduct}=="1976", \ + RUN+="/bin/sh -c 'echo -n $$KERNEL:2.0 > /sys/bus/usb/drivers/cdc_ncm/unbind'", \ + RUN+="${pkgs.kmod}/bin/modprobe r8152", \ + RUN+="/bin/sh -c 'echo -n 0b05 1976 > /sys/bus/usb/drivers/r8152/new_id'" + + # wch stuff + SUBSYSTEM=="usb", ATTRS{idVendor}=="4348", ATTRS{idProduct}=="55e0", GROUP="wheel" + SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8012", GROUP="wheel" + SUBSYSTEM=="usb", ATTRS{idVendor}=="1a86", ATTRS{idProduct}=="8010", GROUP="wheel" + ''; }