diff --git a/home/hosts/andromache/default.nix b/home/hosts/andromache/default.nix index 7d5c3142..d3b00c85 100644 --- a/home/hosts/andromache/default.nix +++ b/home/hosts/andromache/default.nix @@ -52,6 +52,7 @@ claude-code.enable = true; opencode.enable = true; }; + desktop.niri.enable = true; browser.enable = true; browser.primary = "librewolf"; cloud.hetzner.enable = true; diff --git a/home/hosts/astyanax/default.nix b/home/hosts/astyanax/default.nix index 923f5539..6e4e94a3 100644 --- a/home/hosts/astyanax/default.nix +++ b/home/hosts/astyanax/default.nix @@ -48,6 +48,7 @@ claude-code.enable = true; opencode.enable = true; }; + desktop.niri.enable = true; browser.enable = true; browser.primary = "librewolf"; cloud.hetzner.enable = true; diff --git a/home/hosts/work/default.nix b/home/hosts/work/default.nix index bd1f3054..3e0df315 100644 --- a/home/hosts/work/default.nix +++ b/home/hosts/work/default.nix @@ -63,6 +63,7 @@ defaultWrapper = "mesa"; }; + desktop.niri.enable = true; browser = { enable = true; primary = "firefox"; diff --git a/home/modules/desktop/default.nix b/home/modules/desktop/default.nix new file mode 100644 index 00000000..ce0cd35f --- /dev/null +++ b/home/modules/desktop/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + imports = [ ./niri ]; +} diff --git a/home/modules/desktop/niri/config.kdl b/home/modules/desktop/niri/config.kdl index 004e6492..cd24969e 100644 --- a/home/modules/desktop/niri/config.kdl +++ b/home/modules/desktop/niri/config.kdl @@ -179,4 +179,5 @@ binds { Alt+Print { screenshot-window; } Mod+Shift+Delete { quit; } + } diff --git a/home/modules/desktop/niri/default.nix b/home/modules/desktop/niri/default.nix index a5e012e7..da3ed19d 100644 --- a/home/modules/desktop/niri/default.nix +++ b/home/modules/desktop/niri/default.nix @@ -1,4 +1,9 @@ -{ pkgs, ... }: +{ + lib, + pkgs, + config, + ... +}: { imports = [ @@ -9,27 +14,58 @@ ../../waybar ]; - options.desktop.niri.enable = lib.mkEnableOption "niri desktop environment"; + options.desktop.niri.enable = lib.mkEnableOption "niri desktop"; config = lib.mkIf config.desktop.niri.enable { - clipboard.enable = lib.mkDefault true; - fuzzel.enable = lib.mkDefault true; - mako.enable = lib.mkDefault true; - shikane.enable = lib.mkDefault true; - waybar.enable = lib.mkDefault true; + clipboard.enable = lib.mkDefault true; + fuzzel.enable = lib.mkDefault true; + mako.enable = lib.mkDefault true; + shikane.enable = lib.mkDefault true; + waybar.enable = lib.mkDefault true; - home = { - file.".config/niri/config.kdl".source = ./config.kdl; - packages = with pkgs; [ - brightnessctl - wlsunset - ]; - }; + home = { + file.".config/niri/config.kdl".source = ./config.kdl; + packages = with pkgs; [ + brightnessctl + xwayland-satellite + ]; + }; - services.gammastep = { - enable = true; - provider = "manual"; - latitude = 51.05; - longitude = 3.71667; + services.gammastep = { + enable = true; + provider = "manual"; + latitude = 51.05; + longitude = 3.71667; + }; + + xdg.configFile."electron-flags.conf".text = '' + --enable-features=UseOzonePlatform + --ozone-platform=wayland + ''; + + xdg.portal = { + enable = true; + config = { + niri = { + default = [ + "gnome" + "gtk" + ]; + "org.freedesktop.impl.portal.Access" = "gtk"; + "org.freedesktop.impl.portal.Notification" = "gtk"; + "org.freedesktop.impl.portal.Secret" = "gnome-keyring"; + "org.freedesktop.impl.portal.FileChooser" = "gtk"; + "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; + "org.freedesktop.impl.portal.Settings" = [ + "gnome" + "gtk" + ]; + }; + }; + extraPortals = [ + pkgs.xdg-desktop-portal-gtk + pkgs.xdg-desktop-portal-gnome + ]; + }; }; } diff --git a/home/modules/shikane/default.nix b/home/modules/shikane/default.nix index 2e77051d..cbc3dfef 100644 --- a/home/modules/shikane/default.nix +++ b/home/modules/shikane/default.nix @@ -1,6 +1,67 @@ -{ pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: { - home.packages = with pkgs; [ wdisplays ]; - services.shikane.enable = true; + options.shikane.enable = lib.mkEnableOption "shikane"; + + config = lib.mkIf config.shikane.enable { + home.packages = with pkgs; [ (config.nixgl.wrap wdisplays) ]; + services.shikane.enable = true; + home.file.".config/shikane/config.toml".text = '' + [[profile]] + name = "work" + + [[profile.output]] + enable = true + search = ["m=Unknown", "s=", "v=Unknown"] + mode = "2880x1800@120Hz" + position = "288,3240" + scale = 1.5 + transform = "normal" + adaptive_sync = false + + [[profile.output]] + enable = true + search = ["m=Q27P1B", "s=GNXM2HA196769", "v=PNP(AOC)"] + mode = "2560x1440@59.951Hz" + position = "116,1800" + scale = 1.0 + transform = "normal" + adaptive_sync = false + + [[profile.output]] + enable = true + search = ["m=PHL 243S7", "s=UHB1923012753", "v=Philips Consumer Electronics Company"] + mode = "1920x1080@60Hz" + position = "2676,1800" + scale = 1.0 + transform = "270" + adaptive_sync = false + + [[profile]] + name = "home" + + [[profile.output]] + enable = true + search = ["m=Unknown", "s=Unknown", "v=Unknown"] + mode = "2880x1800@60.001Hz" + position = "185,1440" + scale = 1.75 + transform = "normal" + adaptive_sync = false + + [[profile.output]] + enable = true + search = ["m=PHL 276E8V", "s=0x0000046D", "v=Philips Consumer Electronics Company"] + mode = "3840x2160@59.996Hz" + position = "1500,0" + scale = 1.5 + transform = "normal" + adaptive_sync = false + ''; + }; } diff --git a/modules/desktops/logind.nix b/modules/desktops/logind.nix index 7bd3935d..dfb78ed6 100644 --- a/modules/desktops/logind.nix +++ b/modules/desktops/logind.nix @@ -1,7 +1,13 @@ +{ lib, config, ... }: + { - services.logind.settings.Login = { - HandleLidSwitch = "suspend"; - IdleAction = "suspend"; - IdleActionSec = 1800; + options.desktop.logind.enable = lib.mkEnableOption "logind desktop settings"; + + config = lib.mkIf config.desktop.logind.enable { + services.logind.settings.Login = { + HandleLidSwitch = "suspend"; + IdleAction = "suspend"; + IdleActionSec = 1800; + }; }; } diff --git a/modules/desktops/niri/default.nix b/modules/desktops/niri/default.nix index 2f9608c7..c8936720 100644 --- a/modules/desktops/niri/default.nix +++ b/modules/desktops/niri/default.nix @@ -12,6 +12,9 @@ in imports = [ ../logind.nix ]; options.desktop = { + niri = { + enable = lib.mkEnableOption "niri desktop"; + }; ly = { enable = lib.mkOption { type = lib.types.bool; @@ -20,7 +23,8 @@ in }; }; - config = { + config = lib.mkIf cfg.niri.enable { + desktop.logind.enable = lib.mkDefault true; programs.niri = { enable = true; useNautilus = false; @@ -44,15 +48,6 @@ in ]; }; - # error: - # Failed assertions: - # - h profile: xdg.portal: since you installed Home Manager via its NixOS module and - # 'home-manager.useUserPackages' is enabled, you need to add - # - # environment.pathsToLink = [ `/share/applications` `/share/xdg-desktop-portal` ]; - # - # to your NixOS configuration so that the portal definitions and DE - # provided configurations get linked. environment.pathsToLink = [ "/share/applications" "/share/xdg-desktop-portal"