如果你的nixos wechat fcitx 不工作

如果你的nixos 使用wayland 时微信不能用fcitx 输入法,可以试试用这个包装一下:

      (pkgs.symlinkJoin {
        name = "wechat";
        paths = [ pkgs.wechat ];
        buildInputs = [ pkgs.makeWrapper ];
        postBuild = ''
        wrapProgram $out/bin/wechat \
          --set GTK_IM_MODULE "fcitx" \
          --set XMODIFIERS "@im=fcitx" \
          --set QT_IM_MODULE "fcitx"
        '';
      })
[]

nixos nixpkgs unstable 更新不稳定的一些解决尝试

我的 nixos 用的是 nixpkgs-unstable channel, 虽然包比 stable 的更新快一点,但是确实如同它的名字,非常不稳定,基本上我每半个月就遇到一次更新故障,其中 qemu + ceph 更是挂了两次。 下面是我从网上抄来的一些可能有用的修复方法。

Github PR

讲道理因为 nixos 的可复现性,出问题的时候肯定不止你自己的环境有问题,首先肯定是先去 GitHub 看看是不是别人已经提了 issue, 作为一个伸手党,说不定还可以直接找到修复方法。 有时候已经有 PR 修这个问题了,但是还没合并你要的 branch, 可以从下面的链接里看 pr 的状态:

Override

如果是因为包的可选依赖故障,可以通过 override 直接干掉,这有一个 例子

通过 override 修改包的依赖,从而避免使用 nixpkgs-unstable 时更新不了。

// In your /etc/nixos/configuration.nix

  environment.systemPackages = with pkgs; [
  # ... other packages you have ...

  # qemu_full  // REMOVE OR COMMENT OUT THIS LINE

  # And add this instead:
  (pkgs.qemu_full.override {
    enableDocs = false;
    cephSupport = false;
  })

  # ... other packages ...
];

Patching

nix 也提供了 patch 的方法,但很遗憾因为我起手抄的配置应用这个比较麻烦,而且我遇到的是依赖问题,我还是用了 Override 的方法。

[]

给 PVE 上的飞牛 NAS 虚拟机换硬盘

一些背景

  • 我有一个主机跑 PVE , 我本来有一块 8T 的机械硬盘,分了 4T 给飞牛。
  • 后来感觉 4T 可能不够,就又买了一个 8T 的盘,又从新盘分了 4T 给飞牛,在里面用的是 lvm + btrfs.
  • 最近想着我本来就两块磁盘,而且 lvm 还是 stripe 的,没有 mirror, 没有 raid, 用两块磁盘纯属徒增故障率,就想把其中一块直通得了,总容量还是 8t 左右。

开始操作

操作的步骤如下:

  1. 因为我的数据是 5t 多,直接 pvmove 的话搞不定,于是先从 pve 上创建一个 2T 的磁盘给飞牛,用于周转。

         # 备份数据,删除了一部分没用的,保证文件系统用量在去除一个pv 后不会爆掉
         # 在pve 上加盘,在飞牛上加入新pv, 用于周转
         pvcreate /dev/sde
         vgextend vg-name /dev/sde
    

    我怕出故障丢数据,就把飞牛上的一些数据往移动硬盘上备份了一份,结果这速度实在是太感人了,1.8T 的数据备份了 4 个多小时。

  2. 缩文件系统

         # 停掉fnos 上的占用服务磁盘的服务,卸载 /vol1
         umount -l /vol1
         btrfs filesystem resize -4t /vol1
    

    差不多用了 5 个小时!

[]

Hello world

欢迎来到我的博客

这是我的第一篇文章,使用 Org-roam + Hugo 生成!

Org Mode 的一些特性

  • 列表
    • test1
    • test2
    • test3
  • 表格
    col1col2
    testtest2
    test3test4
  • 代码块
      #include <stdio.h>
    
      int main(){
          printf("Hello, world!");
          return 0;
      }
    
[]