2025-07-18

Windows ExplorerのナビゲーションペインでDropboxが重複

以前WindowsでDropboxのアップデートをした際,正しく更新が完了せずに中途半端にアンインストールされた状態となってしまった.
その後再インストールをしたのだが,その影響でエクスプローラのナビゲーションペイン上にDropboxの項目がダブって表示されるようになってしまった.
どちらも同一のディレクトリを指しており,鬱陶しいのでどうにかしよう調べていたところ,以下のような記事を見つけた.

https://www.thewindowsclub.com/remove-dropbox-from-explorer-navigation-pane

RegistryのHKEY_CLASSES_ROOT\CLSID以下にある項目のうち,Dropboxに該当するものを変更すればよいらしい.
記事内では{E31EA727-12ED-4702-820C-4B6445F28E1A}で決め打ちされているが,自身の環境では存在しなかったので,環境依存だろう.

一旦クリーンアップするため,Dropboxをアンインストールし,同期フォルダも全削除した.その後レジストリエディタを開き,HKEY_CLASSES_ROOT\CLSID以下で”Dropbox”で検索をしたところ,記事内と同様の値をもつレジストリキーが見つかった.
見つけたキーのSystem.IsPinnedToNamespaceTreeの値を0に変更したところ,即座にナビゲーションペインから項目がなくなった.

その後Dropboxを再インストールし,再び1項目のみが表示されるように戻った.

2025-07-03

NixOSのKernel Moduleロード順序

NixOSで起動時に明示的にKernel Moduleをロードする場合,以下のようなConfigurationを記述する.

# 通常のロード
  boot = {
    kernelModules = [
      "nvidia"
      "nvidia_modeset"
      "nvidia_drm"
      "nvidia_uvm"
    ];
  }
 
# initrdでの早期ロード
  boot = {
    initrd.kernelModules = [
      "nvidia"
      "nvidia_modeset"
      "nvidia_drm"
      "nvidia_uvm"
    ];
  }

これは単純なlistOf stringである.
従来,kernelModulesの値は出現順に並んだままinit scriptに渡り,modprobeされていた.

しかし,以下のPRの変更により,ロード順序がalphabetical orderとなり,従来効いていたlib.mkOrderによるプライオリティも機能しなくなってしまった.

https://github.com/NixOS/nixpkgs/pull/375975

これはkernelModulesなどの型をbooleanを値をして持つattrSetとしても扱えるようにする変更で,モジュールのロード可否を柔軟に制御可能となる.
しかし,内部的にはattrSetとして扱われるようになり,順序に関係なく等価なものとして扱われるため,listとして取り出した際に勝手にアルファベット順となってしまう.lib.mkOrderもあくまでマージの際の優先度を決めるものであり,マージ後の状態には関与しない.
見かけ上後方互換性があるように見えるが,実際は破壊的な変更である.

PCI Passthrough on the NixOS Hostで書いたように,私はPCI Passthroughを使用する環境を持っているため,モジュールのロード順序を制御できないと致命的である.
自分の知識では解決策が思いつかなかったため,issueを立ててみたところ,softdepmodprobeの設定に入れてはどうかという提案を受けた.私の環境ではこれがベストな解決策であり,正しく動作した.

以下のようにvfio関連のモジュールをavailableKernelModulesに移動し,extraModprobeConfignvidiaモジュールの依存に追加した.

  boot = {
    initrd.availableKernelModules = [
      "pci_stub"
      "vfio_pci"
      "vfio_iommu_type1"
      "vfio"
    ];
 
    # fix for module load order
    extraModprobeConfig = ''
      softdep nvidia pre: pci_stub vfio vfio_iommu_type1 vfio_pci
    '';