{ den, __findFile, modules, inputs, ... }: { den.aspects.doloro-desktop = { includes = [ den.aspects.doloro-shared modules.sops modules.flatpaks modules.gamemode modules.hyprland modules.fish modules.tuigreet modules.kitty modules.nikpkgs modules.fonts modules.unity (modules.obs { audio = true; autostart = true; }) modules.hytale-launcher # modules.helium ( { default = true; }) # modules.niri # Testing modules.stylix modules.quickshell modules.nix-ld modules.spotify # modules.easyeffects # modules.lavd # modules.ai modules.pi-coding # inactive: swapped to opencode # modules.omp modules.podman modules.wivrn # ]; nixos = { config, pkgs, ... }: { users.users.doloro = { shell = pkgs.fish; hashedPasswordFile = config.sops.secrets."doloro-hashed_password".path; extraGroups = [ "libvirtd" "gamemode" ]; }; # Register GSettings schemas so GTK/GLib apps (orca-slicer) can find # them; without this GLib aborts with "No GSettings schemas are # installed on the system" on non-GNOME desktops. programs.dconf.enable = true; virtualisation.libvirtd.enable = false; # virtualisation.waydroid.enable = true; # # Newer kernel versions may need # virtualisation.waydroid.package = pkgs.waydroid-nftables; programs.virt-manager.enable = false; }; homeManager = { home, pkgs, ... }: { xdg.configFile."hypr/hyprland-local.lua" = { text = '' -- Host overrides (desktop): pin workspaces to monitors. -- HDMI-A-1 (left) shows workspace 1, DP-2 (right) shows workspace 2. hl.workspace_rule({ workspace = "name:1", monitor = "HDMI-A-1" }) hl.workspace_rule({ workspace = "name:2", monitor = "DP-2" }) -- Autostart (workspace placement applies only to these spawned windows) hl.on("hyprland.start", function() hl.exec_cmd("steam", { workspace = "6 silent" }) hl.exec_cmd("telegram-desktop", { workspace = "8 silent" }) hl.exec_cmd("equibop", { workspace = "8 silent" }) hl.exec_cmd("spotify", { workspace = "9 silent" }) hl.exec_cmd("obs", { workspace = "10 silent" }) end) ''; }; home.packages = with pkgs; [ equibop telegram-desktop obsidian # pear-desktop prismlauncher # deadlock-mod-manager inputs.nik-pkgs.packages.x86_64-linux.grimoire # gamescope android-studio blender qbittorrent mpv krita # (tetrio-desktop.override { withTetrioPlus = true; }) # bottles # orca-slicer's wrapGAppsHook does not actually wrap the installed # binary, so neither the GSettings schema path nor the NVIDIA/zink # workaround env from `withNvidiaGLWorkaround` reach the process. # Wrap it ourselves: prepend the gtk3 + gsettings-desktop schema dirs # to XDG_DATA_DIRS (fixes "No GSettings schemas are installed on the # system") and set the zink GL workaround explicitly. (pkgs.symlinkJoin { name = "orca-slicer"; paths = [ (pkgs.orca-slicer.override { withNvidiaGLWorkaround = true; }) ]; nativeBuildInputs = [ pkgs.makeWrapper ]; postBuild = '' wrapProgram $out/bin/orca-slicer \ --prefix XDG_DATA_DIRS : "${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}:${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}" \ --set __GLX_VENDOR_LIBRARY_NAME mesa \ --set __EGL_VENDOR_LIBRARY_FILENAMES /run/opengl-driver/share/glvnd/egl_vendor.d/50_mesa.json \ --set MESA_LOADER_DRIVER_OVERRIDE zink \ --set GALLIUM_DRIVER zink \ --set WEBKIT_DISABLE_DMABUF_RENDERER 1 ''; }) # prusa-slicer ]; programs.lutris.enable = true; nixpkgs.overlays = [ # Skipping tests while upstream sorts it out, revert once # Hydra consistently builds openldap green. # (final: prev: { # openldap = prev.openldap.overrideAttrs (_: { # doCheck = false; # }); # }) ]; nixpkgs.config.allowUnfree = true; nixpkgs.config.problems.handlers = { tetrio-plus.broken = "warn"; }; programs.home-manager.enable = true; }; }; }