From db56ef8aa109418ac6255e1c0ff61cc5e4a2c5da Mon Sep 17 00:00:00 2001 From: Ivan Malison Date: Fri, 8 May 2026 02:36:23 -0700 Subject: [PATCH] desktop: remove noctalia and caelestia shells --- dotfiles/lib/bin/desktop_shell_ui | 17 +--- dotfiles/lib/bin/hypr_shell_ui | 19 ---- nixos/configuration.nix | 2 - nixos/desktop.nix | 2 +- nixos/flake.lock | 152 +----------------------------- nixos/flake.nix | 11 --- nixos/hyprland.nix | 4 - nixos/machines/strixi-minaj.nix | 1 - nixos/noctalia.nix | 85 ----------------- nixos/quickshell.nix | 62 ------------ 10 files changed, 4 insertions(+), 351 deletions(-) delete mode 100644 nixos/noctalia.nix delete mode 100644 nixos/quickshell.nix diff --git a/dotfiles/lib/bin/desktop_shell_ui b/dotfiles/lib/bin/desktop_shell_ui index c168cf4b..980b6e21 100755 --- a/dotfiles/lib/bin/desktop_shell_ui +++ b/dotfiles/lib/bin/desktop_shell_ui @@ -6,9 +6,6 @@ default_shell_ui="${IM_HYPRLAND_SHELL_UI:-taffybar}" normalize_shell_ui() { case "${1:-}" in - noctalia) - printf '%s\n' "noctalia" - ;; taffybar|rofi) printf '%s\n' "taffybar" ;; @@ -43,14 +40,7 @@ apply_shell_ui() { systemctl --user import-environment IM_HYPRLAND_SHELL_UI 2>/dev/null || true case "$shell_ui" in - noctalia) - systemctl --user stop taffybar.service 2>/dev/null || true - systemctl --user reset-failed taffybar.service 2>/dev/null || true - systemctl --user start noctalia-shell.service - ;; taffybar) - systemctl --user stop noctalia-shell.service 2>/dev/null || true - systemctl --user reset-failed noctalia-shell.service 2>/dev/null || true systemctl --user start taffybar.service ;; esac @@ -59,7 +49,7 @@ apply_shell_ui() { set_shell_ui() { local shell_ui shell_ui="$(normalize_shell_ui "${1:-}")" || { - echo "usage: desktop_shell_ui set {taffybar|noctalia}" >&2 + echo "usage: desktop_shell_ui set taffybar" >&2 exit 2 } @@ -75,10 +65,7 @@ case "${1:-current}" in set_shell_ui "${2:-}" ;; toggle) - case "$(current_shell_ui)" in - noctalia) set_shell_ui taffybar ;; - *) set_shell_ui noctalia ;; - esac + set_shell_ui taffybar ;; apply) apply_shell_ui "$(current_shell_ui)" diff --git a/dotfiles/lib/bin/hypr_shell_ui b/dotfiles/lib/bin/hypr_shell_ui index 230f1f52..e5dbaa46 100755 --- a/dotfiles/lib/bin/hypr_shell_ui +++ b/dotfiles/lib/bin/hypr_shell_ui @@ -9,15 +9,8 @@ fi shell_ui="${shell_ui:-${IM_HYPRLAND_SHELL_UI:-taffybar}}" -run_noctalia() { - noctalia-shell ipc --any-display call "$@" -} - run_launcher() { case "$shell_ui" in - noctalia) - run_noctalia launcher toggle - ;; taffybar|rofi) exec rofi -show drun -show-icons ;; @@ -39,12 +32,6 @@ run_window_picker() { ;; esac - if [[ "$shell_ui" == "noctalia" && "${IM_HYPRLAND_NOCTALIA_WINDOW_PICKER:-0}" == "1" ]]; then - # Future Noctalia launcher-provider hook. Until that plugin exists or if it - # fails to load, keep the existing rofi picker as the working path. - run_noctalia "plugin:hypr-window-picker" "$mode" 2>/dev/null && exit 0 - fi - exec hypr_rofi_window "$mode" } @@ -56,15 +43,9 @@ case "${1:-}" in exec rofi -show run ;; control-center) - if [[ "$shell_ui" == "noctalia" ]]; then - run_noctalia controlCenter toggle || true - fi exit 0 ;; settings) - if [[ "$shell_ui" == "noctalia" ]]; then - run_noctalia settings toggle || true - fi exit 0 ;; window) diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 472b6c0a..2bb02afe 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -35,13 +35,11 @@ ./laptop.nix ./nix.nix ./notifications-tray-icon.nix - ./noctalia.nix ./nvidia.nix ./options.nix ./plasma.nix ./postgres.nix ./rabbitmq.nix - ./quickshell.nix ./remote-hyprland.nix ./river-xmonad.nix ./secrets.nix diff --git a/nixos/desktop.nix b/nixos/desktop.nix index 87596270..1d1adea0 100644 --- a/nixos/desktop.nix +++ b/nixos/desktop.nix @@ -194,7 +194,7 @@ in // { options = lib.recursiveUpdate enabledModule.options { myModules.desktop.shellUi = lib.mkOption { - type = lib.types.enum ["noctalia" "taffybar"]; + type = lib.types.enum ["taffybar"]; default = "taffybar"; description = '' Desktop shell UI used by Hyprland-oriented bindings. This controls diff --git a/nixos/flake.lock b/nixos/flake.lock index 950a0e85..38500f79 100644 --- a/nixos/flake.lock +++ b/nixos/flake.lock @@ -60,52 +60,6 @@ "type": "github" } }, - "caelestia-cli": { - "inputs": { - "caelestia-shell": [ - "caelestia-shell" - ], - "nixpkgs": [ - "caelestia-shell", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1777470967, - "narHash": "sha256-u8QP1TYolV6BR0qsK2NHY1qZ/PdNAgrVxUcSDZdl35Q=", - "owner": "caelestia-dots", - "repo": "cli", - "rev": "5c9ce66c031788df50bbfbea195bf773ddbf92bc", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "cli", - "type": "github" - } - }, - "caelestia-shell": { - "inputs": { - "caelestia-cli": "caelestia-cli", - "nixpkgs": [ - "nixpkgs" - ], - "quickshell": "quickshell" - }, - "locked": { - "lastModified": 1777688289, - "narHash": "sha256-2EaEVkT1oUpjLLp7uEY/hDYDOa2k5R1YgcJpHei+lUM=", - "owner": "caelestia-dots", - "repo": "shell", - "rev": "4e9e1f4b723f7e3a87cb280d67a25ee92c87fbff", - "type": "github" - }, - "original": { - "owner": "caelestia-dots", - "repo": "shell", - "type": "github" - } - }, "claude-code-nix": { "inputs": { "flake-utils": [ @@ -1523,50 +1477,6 @@ "type": "github" } }, - "noctalia": { - "inputs": { - "nixpkgs": [ - "nixpkgs" - ], - "noctalia-qs": "noctalia-qs" - }, - "locked": { - "lastModified": 1777427472, - "narHash": "sha256-kqcfLdxb+CqTroMErCScvx6YQcZYJcf6X+z5I8kBJK8=", - "owner": "noctalia-dev", - "repo": "noctalia-shell", - "rev": "9f8dd48c8df5ab1f7f87ddf9842627e1e5682186", - "type": "github" - }, - "original": { - "owner": "noctalia-dev", - "repo": "noctalia-shell", - "type": "github" - } - }, - "noctalia-qs": { - "inputs": { - "nixpkgs": [ - "noctalia", - "nixpkgs" - ], - "systems": "systems_2", - "treefmt-nix": "treefmt-nix" - }, - "locked": { - "lastModified": 1777380063, - "narHash": "sha256-q5mWOEICcZzr+KnjIwDHV9EXiBxOC9cnBpxZbDAViU8=", - "owner": "noctalia-dev", - "repo": "noctalia-qs", - "rev": "8742a7a748c43bf44eb6862a8ebd3591ed71502d", - "type": "github" - }, - "original": { - "owner": "noctalia-dev", - "repo": "noctalia-qs", - "type": "github" - } - }, "notifications-tray-icon": { "inputs": { "flake-utils": [ @@ -1731,27 +1641,6 @@ "type": "github" } }, - "quickshell": { - "inputs": { - "nixpkgs": [ - "caelestia-shell", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1777341401, - "narHash": "sha256-QEAVYeXxvTamsYJVBq8+qSJV9ml2MxqRaZvkobfuPWA=", - "ref": "refs/heads/master", - "rev": "0baa81aa03559ca315668e5a306364cddf1a6f49", - "revCount": 812, - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - }, - "original": { - "type": "git", - "url": "https://git.outfoxxed.me/outfoxxed/quickshell" - } - }, "railbird-secrets": { "inputs": { "agenix": [ @@ -1781,7 +1670,6 @@ "root": { "inputs": { "agenix": "agenix", - "caelestia-shell": "caelestia-shell", "claude-code-nix": "claude-code-nix", "codex-cli-nix": "codex-cli-nix", "codex-desktop-linux": "codex-desktop-linux", @@ -1806,11 +1694,10 @@ "nixos-wsl": "nixos-wsl", "nixpkgs": "nixpkgs_4", "nixtheplanet": "nixtheplanet", - "noctalia": "noctalia", "notifications-tray-icon": "notifications-tray-icon", "org-agenda-api": "org-agenda-api", "railbird-secrets": "railbird-secrets", - "systems": "systems_3", + "systems": "systems_2", "taffybar": "taffybar", "vscode-server": "vscode-server", "xmonad": "xmonad", @@ -1888,21 +1775,6 @@ } }, "systems_2": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -1944,28 +1816,6 @@ "type": "path" } }, - "treefmt-nix": { - "inputs": { - "nixpkgs": [ - "noctalia", - "noctalia-qs", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1775636079, - "narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=", - "owner": "numtide", - "repo": "treefmt-nix", - "rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "treefmt-nix", - "type": "github" - } - }, "vscode-server": { "inputs": { "flake-utils": [ diff --git a/nixos/flake.nix b/nixos/flake.nix index e9a9524e..fed1ad26 100644 --- a/nixos/flake.nix +++ b/nixos/flake.nix @@ -236,15 +236,6 @@ }; }; - caelestia-shell = { - url = "github:caelestia-dots/shell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - noctalia = { - url = "github:noctalia-dev/noctalia-shell"; - inputs.nixpkgs.follows = "nixpkgs"; - }; }; outputs = inputs @ { @@ -459,7 +450,6 @@ "https://colonelpanic8-dotfiles.cachix.org" "https://codex-cli.cachix.org" "https://claude-code.cachix.org" - "https://noctalia.cachix.org" ]; extra-trusted-substituters = [ "https://ai.cachix.org" @@ -481,7 +471,6 @@ "colonelpanic8-dotfiles.cachix.org-1:O6GF3nptpeMFapX29okzO92eSWXR36zqW6ZF2C8P0eQ=" "codex-cli.cachix.org-1:1Br3H1hHoRYG22n//cGKJOk3cQXgYobUel6O8DgSing=" "claude-code.cachix.org-1:YeXf2aNu7UTX8Vwrze0za1WEDS+4DuI2kVeWEE4fsRk=" - "noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4=" ]; }; nixosConfigurations = diff --git a/nixos/hyprland.nix b/nixos/hyprland.nix index 324a5add..237e46eb 100644 --- a/nixos/hyprland.nix +++ b/nixos/hyprland.nix @@ -111,7 +111,6 @@ runtimeInputs = [ pkgs.rofi hyprRofiWindow - inputs.noctalia.packages.${system}.default ]; text = '' exec ${../dotfiles/lib/bin/hypr_shell_ui} "$@" @@ -160,9 +159,6 @@ }; }; enabledModule = makeEnable config "myModules.hyprland" true { - # Install both shell service units so `desktop_shell_ui set ...` can switch - # between them at runtime without a NixOS rebuild. - myModules.noctalia.enable = lib.mkDefault true; myModules.taffybar.enable = lib.mkDefault true; # Needed for hyprlock authentication without PAM fallback warnings. diff --git a/nixos/machines/strixi-minaj.nix b/nixos/machines/strixi-minaj.nix index d79428fc..b186883e 100644 --- a/nixos/machines/strixi-minaj.nix +++ b/nixos/machines/strixi-minaj.nix @@ -22,7 +22,6 @@ myModules.gitea-runner.enable = false; myModules.nvidia.enable = true; myModules.electron.enable = true; - myModules.quickshell.enable = true; myModules.wyoming.enable = false; myModules.tts.enable = true; myModules."keepbook-sync".enable = true; diff --git a/nixos/noctalia.nix b/nixos/noctalia.nix deleted file mode 100644 index 4591ad53..00000000 --- a/nixos/noctalia.nix +++ /dev/null @@ -1,85 +0,0 @@ -{ - config, - inputs, - lib, - makeEnable, - pkgs, - ... -}: let - system = pkgs.stdenv.hostPlatform.system; - noctaliaPackage = inputs.noctalia.packages.${system}.default; - waitForWayland = pkgs.writeShellScript "noctalia-wait-for-wayland" '' - runtime_dir="''${XDG_RUNTIME_DIR:-/run/user/$(${pkgs.coreutils}/bin/id -u)}" - - for _ in $(${pkgs.coreutils}/bin/seq 1 50); do - if [ -n "''${WAYLAND_DISPLAY:-}" ] && [ -S "$runtime_dir/$WAYLAND_DISPLAY" ]; then - exit 0 - fi - ${pkgs.coreutils}/bin/sleep 0.1 - done - - echo "Wayland socket not ready: WAYLAND_DISPLAY=''${WAYLAND_DISPLAY:-} XDG_RUNTIME_DIR=$runtime_dir" >&2 - exit 1 - ''; -in - makeEnable config "myModules.noctalia" false { - environment.systemPackages = [ - noctaliaPackage - ]; - - # Noctalia's battery widget talks to UPower. Hosts that deliberately do not - # have batteries can still override this back to false. - services.upower.enable = lib.mkDefault true; - - home-manager.sharedModules = [ - inputs.noctalia.homeModules.default - ({lib, ...}: { - programs.noctalia-shell = { - enable = true; - # This module provides the Hyprland-scoped service below. - systemd.enable = false; - }; - - home.activation.noctaliaLauncherOverviewLayer = lib.hm.dag.entryAfter ["writeBoundary"] '' - settings_file="$HOME/.config/noctalia/settings.json" - settings_tmp="$(${pkgs.coreutils}/bin/mktemp)" - - ${pkgs.coreutils}/bin/mkdir -p "$(${pkgs.coreutils}/bin/dirname "$settings_file")" - - if [ -e "$settings_file" ] && ${lib.getExe pkgs.jq} -e . "$settings_file" >/dev/null 2>&1; then - ${lib.getExe pkgs.jq} \ - '.appLauncher = (.appLauncher // {}) | .appLauncher.overviewLayer = true' \ - "$settings_file" > "$settings_tmp" - ${pkgs.coreutils}/bin/mv "$settings_tmp" "$settings_file" - else - ${pkgs.coreutils}/bin/printf '%s\n' \ - '{' \ - ' "appLauncher": {' \ - ' "overviewLayer": true' \ - ' }' \ - '}' > "$settings_file" - ${pkgs.coreutils}/bin/rm -f "$settings_tmp" - fi - ''; - - systemd.user.services.noctalia-shell = { - Unit = { - Description = "Noctalia Shell"; - Documentation = "https://docs.noctalia.dev"; - PartOf = ["hyprland-session.target"]; - After = ["hyprland-session.target"]; - }; - - Service = { - ExecCondition = "/run/current-system/sw/bin/desktop_shell_ui exec-condition noctalia"; - ExecStartPre = "${waitForWayland}"; - ExecStart = "${lib.getExe noctaliaPackage} --no-duplicate"; - Restart = "on-failure"; - RestartSec = 1; - }; - - Install.WantedBy = ["hyprland-session.target"]; - }; - }) - ]; - } diff --git a/nixos/quickshell.nix b/nixos/quickshell.nix deleted file mode 100644 index fd687a32..00000000 --- a/nixos/quickshell.nix +++ /dev/null @@ -1,62 +0,0 @@ -{ - config, - lib, - makeEnable, - inputs, - ... -}: -makeEnable config "myModules.quickshell" false { - home-manager.sharedModules = [ - inputs.caelestia-shell.homeManagerModules.default - ({ - lib, - nixos, - pkgs, - ... - }: let - hyprlandEnabled = lib.attrByPath ["myModules" "hyprland" "enable"] false nixos.config; - system = pkgs.stdenv.hostPlatform.system; - quickshellBase = inputs.caelestia-shell.inputs.quickshell.packages.${system}.default.override { - # GCC 15.2 ICEs on generated NetworkManager DBus sources in - # quickshell 0.2.1. Quickshell's own dev shell uses clangStdenv. - stdenv = pkgs.clangStdenv; - withX11 = false; - withI3 = false; - }; - quickshellUnwrapped = quickshellBase.unwrapped.overrideAttrs (old: { - # Clang then needs PCH disabled because quickshell's PipeWire target - # adds compile flags that do not match the shared PCH target. - cmakeFlags = (old.cmakeFlags or []) ++ [(lib.cmakeBool "NO_PCH" true)]; - }); - quickshellPackage = quickshellUnwrapped.stdenv.mkDerivation { - inherit (quickshellUnwrapped) version meta buildInputs; - pname = "${quickshellUnwrapped.pname}-wrapped"; - nativeBuildInputs = quickshellUnwrapped.nativeBuildInputs ++ [pkgs.qt6.wrapQtAppsHook]; - dontUnpack = true; - dontConfigure = true; - dontBuild = true; - installPhase = '' - mkdir -p $out - cp -r ${quickshellUnwrapped}/* $out - ''; - passthru.unwrapped = quickshellUnwrapped; - }; - caelestiaPackage = inputs.caelestia-shell.packages.${system}.with-cli.override { - # Caelestia pins app2unit 1.0.3, which no longer builds on this nixpkgs snapshot. - app2unit = pkgs.app2unit; - quickshell = quickshellPackage; - }; - in { - programs.caelestia = { - enable = true; - package = caelestiaPackage; - cli.enable = true; - systemd.target = lib.mkDefault ( - if hyprlandEnabled - then "wayland-session@Hyprland.target" - else "graphical-session.target" - ); - }; - }) - ]; -}