diff --git a/flake.nix b/flake.nix index 8fe5b99..5a22c0c 100644 --- a/flake.nix +++ b/flake.nix @@ -113,6 +113,7 @@ }; workstationOverlay = final: prev: { plasticity = nixpkgs.legacyPackages."x86_64-linux".callPackage ./packages/plasticity.nix { }; + niri = nixpkgs.legacyPackages."x86_64-linux".callPackage ./packages/niri.nix { }; }; serverOverlay = final: prev: { }; diff --git a/hosts/modules/desktop.nix b/hosts/modules/desktop.nix index 59502ee..47c0ea6 100644 --- a/hosts/modules/desktop.nix +++ b/hosts/modules/desktop.nix @@ -25,7 +25,6 @@ compositor = "kwin"; }; }; - desktopManager.plasma6.enable = true; pipewire = { enable = true; alsa.enable = true; @@ -35,8 +34,12 @@ wireplumber.enable = true; }; }; - - # programs.hyprland.enable = true; + programs.niri.enable = true; + environment.systemPackages = with pkgs; [ + anyrun + foot + xwayland-satellite + ]; hardware = { xpadneo.enable = true; @@ -52,7 +55,7 @@ enable = true; xdgOpenUsePortal = true; extraPortals = with pkgs; [ - kdePackages.xdg-desktop-portal-kde + # kdePackages.xdg-desktop-portal-kde xdg-desktop-portal-gtk xdg-desktop-portal-gnome ]; diff --git a/hosts/modules/impermanence.nix b/hosts/modules/impermanence.nix index 5ba5f6e..7c5c7d6 100644 --- a/hosts/modules/impermanence.nix +++ b/hosts/modules/impermanence.nix @@ -27,14 +27,12 @@ ]; directories = [ "/etc/NetworkManager/system-connections" - "/etc/waydroid-extra/images/" "/var/lib/bluetooth" "/var/lib/flatpak" "/var/lib/nixos" "/var/lib/systemd/coredump" "/var/lib/systemd/timers" "/var/lib/tailscale" - "/var/lib/waydroid" "/var/log" ]; }; diff --git a/hosts/modules/programs.nix b/hosts/modules/programs.nix index d364637..8ba8925 100644 --- a/hosts/modules/programs.nix +++ b/hosts/modules/programs.nix @@ -46,6 +46,7 @@ let kdepkgs = with pkgs.kdePackages; [ ark + dolphin dolphin-plugins kolourpaint ]; @@ -156,18 +157,6 @@ roboto ]; }; - - environment.plasma6.excludePackages = ( - with pkgs.kdePackages; - [ - discover - elisa - gwenview - kate - khelpcenter - oxygen - ] - ); } )) ]; diff --git a/hosts/modules/virtualisation.nix b/hosts/modules/virtualisation.nix index fb2c156..232459a 100644 --- a/hosts/modules/virtualisation.nix +++ b/hosts/modules/virtualisation.nix @@ -32,7 +32,6 @@ virtualisation = { libvirtd.enable = true; lxd.enable = true; - waydroid.enable = true; }; }) ]; diff --git a/packages/niri.nix b/packages/niri.nix new file mode 100644 index 0000000..f866e1f --- /dev/null +++ b/packages/niri.nix @@ -0,0 +1,129 @@ +{ + lib, + dbus, + eudev, + fetchFromGitHub, + libdisplay-info, + libglvnd, + libinput, + libxkbcommon, + libgbm, + versionCheckHook, + nix-update-script, + pango, + pipewire, + pkg-config, + rustPlatform, + seatd, + systemd, + wayland, + withDbus ? true, + withDinit ? false, + withScreencastSupport ? true, + withSystemd ? true, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "niri"; + version = "25.05"; + + src = fetchFromGitHub { + owner = "YaLTeR"; + repo = "niri"; + tag = "v${finalAttrs.version}"; + hash = "sha256-ngQ+iTHmBJkEbsjYfCWTJdV8gHhOCTkV8K0at6Y+YHI="; + }; + + postPatch = '' + patchShebangs resources/niri-session + substituteInPlace resources/niri.service \ + --replace-fail '/usr/bin' "$out/bin" + ''; + + useFetchCargoVendor = true; + cargoHash = "sha256-tZp7AhhddEhKWzEUTgosxXMEzALbv6FxqnJEb9MBhzc="; + + strictDeps = true; + + nativeBuildInputs = [ + pkg-config + rustPlatform.bindgenHook + ]; + + buildInputs = + [ + libdisplay-info + libglvnd # For libEGL + libinput + libxkbcommon + libgbm + pango + seatd + wayland # For libwayland-client + ] + ++ lib.optional (withDbus || withScreencastSupport || withSystemd) dbus + ++ lib.optional withScreencastSupport pipewire + ++ lib.optional withSystemd systemd # Includes libudev + ++ lib.optional (!withSystemd) eudev; # Use an alternative libudev implementation when building w/o systemd + + buildFeatures = + lib.optional withDbus "dbus" + ++ lib.optional withDinit "dinit" + ++ lib.optional withScreencastSupport "xdp-gnome-screencast" + ++ lib.optional withSystemd "systemd"; + buildNoDefaultFeatures = true; + + postInstall = + '' + install -Dm0644 resources/niri.desktop -t $out/share/wayland-sessions + '' + + lib.optionalString withDbus '' + install -Dm0644 resources/niri-portals.conf -t $out/share/xdg-desktop-portal + '' + + lib.optionalString (withSystemd || withDinit) '' + install -Dm0755 resources/niri-session -t $out/bin + '' + + lib.optionalString withSystemd '' + install -Dm0644 resources/niri{-shutdown.target,.service} -t $out/lib/systemd/user + '' + + lib.optionalString withDinit '' + install -Dm0644 resources/dinit/niri{-shutdown,} -t $out/lib/dinit.d/user + ''; + + env = { + # Force linking with libEGL and libwayland-client + # so they can be discovered by `dlopen()` + RUSTFLAGS = toString ( + map (arg: "-C link-arg=" + arg) [ + "-Wl,--push-state,--no-as-needed" + "-lEGL" + "-lwayland-client" + "-Wl,--pop-state" + ] + ); + }; + + nativeInstallCheckInputs = [ versionCheckHook ]; + versionCheckProgramArg = "--version"; + doInstallCheck = true; + + passthru = { + providedSessions = [ "niri" ]; + updateScript = nix-update-script { }; + }; + + meta = { + description = "Scrollable-tiling Wayland compositor"; + homepage = "https://github.com/YaLTeR/niri"; + changelog = "https://github.com/YaLTeR/niri/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + iogamaster + foo-dogsquared + sodiboo + getchoo + ]; + mainProgram = "niri"; + platforms = lib.platforms.linux; + }; +}) diff --git a/users/modules/user/programs.nix b/users/modules/user/programs.nix index 65985d8..2d4ae45 100644 --- a/users/modules/user/programs.nix +++ b/users/modules/user/programs.nix @@ -111,9 +111,9 @@ (lib.mkIf hostType.isWorkstation { fonts.fontconfig.enable = true; - # home.packages = with pkgs; [ - # ulauncher - # ]; + home.packages = with pkgs; [ + rmenu + ]; programs = { password-store.package = pkgs.pass-wayland;