From 570befc1f5bfe5b5f14ebb31f794b3b10b078dda Mon Sep 17 00:00:00 2001 From: chn Date: Thu, 1 Aug 2024 00:25:23 +0800 Subject: [PATCH] move local/pkgs -> packages --- flake.nix | 8 +- local/pkgs/hpcstat/doc/setup.md | 215 +----------------- {local/pkgs => packages}/biu/.clangd | 0 {local/pkgs => packages}/biu/.envrc | 0 {local/pkgs => packages}/biu/CMakeLists.txt | 0 {local/pkgs => packages}/biu/README.md | 0 {local/pkgs => packages}/biu/biuConfig.cmake | 0 {local/pkgs => packages}/biu/default.nix | 0 {local/pkgs => packages}/biu/include/biu.hpp | 0 .../biu/include/biu/atomic/atomic.hpp | 0 .../biu/include/biu/atomic/atomic.tpp | 0 .../biu/include/biu/atomic/nolog.hpp | 0 .../biu/include/biu/atomic/nolog.tpp | 0 .../biu/include/biu/called_by.hpp | 0 .../biu/include/biu/common.hpp | 0 .../biu/include/biu/common.tpp | 0 .../biu/include/biu/concepts.hpp | 0 .../biu/include/biu/concepts.tpp | 0 .../biu/include/biu/eigen.hpp | 0 .../biu/include/biu/eigen.tpp | 0 .../biu/include/biu/format.hpp | 0 .../biu/include/biu/format.tpp | 0 .../biu/include/biu/logger.hpp | 0 .../biu/include/biu/logger.tpp | 0 .../biu/include/biu/smartref.hpp | 0 .../biu/include/biu/smartref.tpp | 0 .../biu/include/biu/string.hpp | 0 .../biu/include/biu/string.tpp | 0 {local/pkgs => packages}/biu/src/common.cpp | 0 {local/pkgs => packages}/biu/src/logger.cpp | 0 {local/pkgs => packages}/biu/src/string.cpp | 0 {local/pkgs => packages}/biu/test/process.cpp | 0 .../pkgs => packages}/biu/test/serialize.cpp | 0 .../pkgs => packages}/blurred-wallpaper.nix | 0 .../pkgs => packages}/chn-bsub/CMakeLists.txt | 0 {local/pkgs => packages}/chn-bsub/default.nix | 0 .../pkgs => packages}/chn-bsub/src/main.cpp | 0 {local/pkgs => packages}/concurrencpp.nix | 0 .../cppcoro/cppcoro-include-utility.patch | 0 {local/pkgs => packages}/cppcoro/default.nix | 0 {local/pkgs => packages}/date.nix | 0 {local/pkgs => packages}/default.nix | 0 {local/pkgs => packages}/eigen.nix | 0 {local/pkgs => packages}/eigengdb.nix | 0 {local/pkgs => packages}/esbonio.nix | 0 {local/pkgs => packages}/git-lfs-transfer.nix | 0 {local/pkgs => packages}/glad.nix | 0 {local/pkgs => packages}/hpcstat/.clangd | 0 {local/pkgs => packages}/hpcstat/.envrc | 0 .../pkgs => packages}/hpcstat/CMakeLists.txt | 0 {local/pkgs => packages}/hpcstat/default.nix | 0 .../hpcstat/doc/pageant1.png | 0 .../hpcstat/doc/pageant2.png | 0 .../pkgs => packages}/hpcstat/doc/putty1.png | 0 .../pkgs => packages}/hpcstat/doc/putty2.png | 0 .../pkgs => packages}/hpcstat/doc/putty3.png | 0 packages/hpcstat/doc/setup.md | 214 +++++++++++++++++ .../pkgs => packages}/hpcstat/doc/winscp1.png | 0 .../pkgs => packages}/hpcstat/doc/winscp2.png | 0 .../hpcstat/include/hpcstat/common.hpp | 0 .../hpcstat/include/hpcstat/disk.hpp | 0 .../hpcstat/include/hpcstat/env.hpp | 0 .../hpcstat/include/hpcstat/keys.hpp | 0 .../hpcstat/include/hpcstat/lfs.hpp | 0 .../hpcstat/include/hpcstat/push.hpp | 0 .../hpcstat/include/hpcstat/sql.hpp | 0 .../hpcstat/include/hpcstat/ssh.hpp | 0 .../pkgs => packages}/hpcstat/openssh.patch | 0 .../pkgs => packages}/hpcstat/share/keys/00 | 0 .../pkgs => packages}/hpcstat/share/keys/01 | 0 .../pkgs => packages}/hpcstat/share/keys/02 | 0 .../pkgs => packages}/hpcstat/share/keys/03 | 0 .../pkgs => packages}/hpcstat/share/keys/04 | 0 .../pkgs => packages}/hpcstat/share/keys/05 | 0 .../pkgs => packages}/hpcstat/share/keys/chn | 0 .../pkgs => packages}/hpcstat/share/keys/gb | 0 .../hpcstat/share/keys/hpcstat | 0 .../pkgs => packages}/hpcstat/share/keys/xll | 0 .../pkgs => packages}/hpcstat/share/keys/xly | 0 .../pkgs => packages}/hpcstat/share/keys/yjq | 0 .../pkgs => packages}/hpcstat/share/keys/zem | 0 .../pkgs => packages}/hpcstat/src/common.cpp | 0 {local/pkgs => packages}/hpcstat/src/disk.cpp | 0 {local/pkgs => packages}/hpcstat/src/env.cpp | 0 {local/pkgs => packages}/hpcstat/src/keys.cpp | 0 {local/pkgs => packages}/hpcstat/src/lfs.cpp | 0 {local/pkgs => packages}/hpcstat/src/main.cpp | 0 {local/pkgs => packages}/hpcstat/src/push.cpp | 0 {local/pkgs => packages}/hpcstat/src/sql.cpp | 0 {local/pkgs => packages}/hpcstat/src/ssh.cpp | 0 .../kylin-virtual-keyboard.nix | 0 {local/pkgs => packages}/lmod.nix | 0 {local/pkgs => packages}/matplotplusplus.nix | 0 {local/pkgs => packages}/mirism.nix | 0 {local/pkgs => packages}/misskey.nix | 0 {local/pkgs => packages}/mk-meili-mgn.nix | 0 {local/pkgs => packages}/mkPnpmPackage.nix | 0 {local/pkgs => packages}/mumax.nix | 0 {local/pkgs => packages}/nameof.nix | 0 {local/pkgs => packages}/nodesoup.nix | 0 {local/pkgs => packages}/nvhpc.nix | 0 {local/pkgs => packages}/oneapi.nix | 0 {local/pkgs => packages}/openxlsx.nix | 0 {local/pkgs => packages}/pix2tex/default.nix | 0 .../pix2tex/remove-version-requires.patch | 0 {local/pkgs => packages}/pslist.nix | 0 {local/pkgs => packages}/pyreadline3.nix | 0 {local/pkgs => packages}/rsshub.nix | 0 {local/pkgs => packages}/sbatch-tui/.clangd | 0 {local/pkgs => packages}/sbatch-tui/.envrc | 0 .../sbatch-tui/CMakeLists.txt | 0 .../pkgs => packages}/sbatch-tui/default.nix | 0 .../sbatch-tui/include/sbatch-tui/device.hpp | 0 .../sbatch-tui/src/device.cpp | 0 .../sbatch-tui/src/device.cpp.template | 0 .../pkgs => packages}/sbatch-tui/src/main.cpp | 0 {local/pkgs => packages}/slate.nix | 0 {local/pkgs => packages}/sockpp.nix | 0 {local/pkgs => packages}/sqlite-orm.nix | 0 {local/pkgs => packages}/tgbot-cpp.nix | 0 {local/pkgs => packages}/torchdata.nix | 0 {local/pkgs => packages}/torchtext.nix | 0 {local/pkgs => packages}/ufo/.gitignore | 0 {local/pkgs => packages}/ufo/CMakeLists.txt | 0 {local/pkgs => packages}/ufo/default.nix | 0 .../ufo/include/ufo/fold.hpp | 0 .../ufo/include/ufo/plot.hpp | 0 .../ufo/include/ufo/solver.hpp | 0 .../ufo/include/ufo/unfold.hpp | 0 {local/pkgs => packages}/ufo/src/fold.cpp | 0 {local/pkgs => packages}/ufo/src/main.cpp | 0 {local/pkgs => packages}/ufo/src/plot.cpp | 0 {local/pkgs => packages}/ufo/src/solver.cpp | 0 {local/pkgs => packages}/ufo/src/unfold.cpp | 0 {local/pkgs => packages}/v-sim.nix | 0 .../vasp/constr_cell_relax.F | 0 {local/pkgs => packages}/vasp/gnu/default.nix | 0 .../vasp/gnu/makefile.include | 0 .../vasp/hdf5-nvhpc/default.nix | 0 .../vasp/hdf5-oneapi/default.nix | 0 .../pkgs => packages}/vasp/intel/default.nix | 0 .../vasp/intel/makefile.include | 0 .../pkgs => packages}/vasp/nvidia/default.nix | 0 .../vasp/nvidia/makefile.include | 0 {local/pkgs => packages}/vasp/source.nix | 0 {local/pkgs => packages}/vasp/vtst.nix | 0 {local/pkgs => packages}/vasp/vtst.patch | 0 {local/pkgs => packages}/vasp/vtstscripts.nix | 0 {local/pkgs => packages}/vaspkit.nix | 0 {local/pkgs => packages}/vesta.nix | 0 {local/pkgs => packages}/winjob/.clangd | 0 {local/pkgs => packages}/winjob/.envrc | 0 .../pkgs => packages}/winjob/CMakeLists.txt | 0 {local/pkgs => packages}/winjob/default.nix | 0 .../winjob/include/winjob/windows.hpp | 0 .../pkgs => packages}/winjob/src/windows.cpp | 0 .../pkgs => packages}/winjob/src/winjob.cpp | 0 .../pkgs => packages}/winjob/src/winjobd.cpp | 0 {local/pkgs => packages}/yoga-support.nix | 0 {local/pkgs => packages}/zpp-bits.nix | 0 {local/pkgs => packages}/zxorm.nix | 0 161 files changed, 219 insertions(+), 218 deletions(-) rename {local/pkgs => packages}/biu/.clangd (100%) rename {local/pkgs => packages}/biu/.envrc (100%) rename {local/pkgs => packages}/biu/CMakeLists.txt (100%) rename {local/pkgs => packages}/biu/README.md (100%) rename {local/pkgs => packages}/biu/biuConfig.cmake (100%) rename {local/pkgs => packages}/biu/default.nix (100%) rename {local/pkgs => packages}/biu/include/biu.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/atomic/atomic.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/atomic/atomic.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/atomic/nolog.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/atomic/nolog.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/called_by.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/common.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/common.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/concepts.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/concepts.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/eigen.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/eigen.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/format.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/format.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/logger.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/logger.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/smartref.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/smartref.tpp (100%) rename {local/pkgs => packages}/biu/include/biu/string.hpp (100%) rename {local/pkgs => packages}/biu/include/biu/string.tpp (100%) rename {local/pkgs => packages}/biu/src/common.cpp (100%) rename {local/pkgs => packages}/biu/src/logger.cpp (100%) rename {local/pkgs => packages}/biu/src/string.cpp (100%) rename {local/pkgs => packages}/biu/test/process.cpp (100%) rename {local/pkgs => packages}/biu/test/serialize.cpp (100%) rename {local/pkgs => packages}/blurred-wallpaper.nix (100%) rename {local/pkgs => packages}/chn-bsub/CMakeLists.txt (100%) rename {local/pkgs => packages}/chn-bsub/default.nix (100%) rename {local/pkgs => packages}/chn-bsub/src/main.cpp (100%) rename {local/pkgs => packages}/concurrencpp.nix (100%) rename {local/pkgs => packages}/cppcoro/cppcoro-include-utility.patch (100%) rename {local/pkgs => packages}/cppcoro/default.nix (100%) rename {local/pkgs => packages}/date.nix (100%) rename {local/pkgs => packages}/default.nix (100%) rename {local/pkgs => packages}/eigen.nix (100%) rename {local/pkgs => packages}/eigengdb.nix (100%) rename {local/pkgs => packages}/esbonio.nix (100%) rename {local/pkgs => packages}/git-lfs-transfer.nix (100%) rename {local/pkgs => packages}/glad.nix (100%) rename {local/pkgs => packages}/hpcstat/.clangd (100%) rename {local/pkgs => packages}/hpcstat/.envrc (100%) rename {local/pkgs => packages}/hpcstat/CMakeLists.txt (100%) rename {local/pkgs => packages}/hpcstat/default.nix (100%) rename {local/pkgs => packages}/hpcstat/doc/pageant1.png (100%) rename {local/pkgs => packages}/hpcstat/doc/pageant2.png (100%) rename {local/pkgs => packages}/hpcstat/doc/putty1.png (100%) rename {local/pkgs => packages}/hpcstat/doc/putty2.png (100%) rename {local/pkgs => packages}/hpcstat/doc/putty3.png (100%) create mode 100644 packages/hpcstat/doc/setup.md rename {local/pkgs => packages}/hpcstat/doc/winscp1.png (100%) rename {local/pkgs => packages}/hpcstat/doc/winscp2.png (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/common.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/disk.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/env.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/keys.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/lfs.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/push.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/sql.hpp (100%) rename {local/pkgs => packages}/hpcstat/include/hpcstat/ssh.hpp (100%) rename {local/pkgs => packages}/hpcstat/openssh.patch (100%) rename {local/pkgs => packages}/hpcstat/share/keys/00 (100%) rename {local/pkgs => packages}/hpcstat/share/keys/01 (100%) rename {local/pkgs => packages}/hpcstat/share/keys/02 (100%) rename {local/pkgs => packages}/hpcstat/share/keys/03 (100%) rename {local/pkgs => packages}/hpcstat/share/keys/04 (100%) rename {local/pkgs => packages}/hpcstat/share/keys/05 (100%) rename {local/pkgs => packages}/hpcstat/share/keys/chn (100%) rename {local/pkgs => packages}/hpcstat/share/keys/gb (100%) rename {local/pkgs => packages}/hpcstat/share/keys/hpcstat (100%) rename {local/pkgs => packages}/hpcstat/share/keys/xll (100%) rename {local/pkgs => packages}/hpcstat/share/keys/xly (100%) rename {local/pkgs => packages}/hpcstat/share/keys/yjq (100%) rename {local/pkgs => packages}/hpcstat/share/keys/zem (100%) rename {local/pkgs => packages}/hpcstat/src/common.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/disk.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/env.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/keys.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/lfs.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/main.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/push.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/sql.cpp (100%) rename {local/pkgs => packages}/hpcstat/src/ssh.cpp (100%) rename {local/pkgs => packages}/kylin-virtual-keyboard.nix (100%) rename {local/pkgs => packages}/lmod.nix (100%) rename {local/pkgs => packages}/matplotplusplus.nix (100%) rename {local/pkgs => packages}/mirism.nix (100%) rename {local/pkgs => packages}/misskey.nix (100%) rename {local/pkgs => packages}/mk-meili-mgn.nix (100%) rename {local/pkgs => packages}/mkPnpmPackage.nix (100%) rename {local/pkgs => packages}/mumax.nix (100%) rename {local/pkgs => packages}/nameof.nix (100%) rename {local/pkgs => packages}/nodesoup.nix (100%) rename {local/pkgs => packages}/nvhpc.nix (100%) rename {local/pkgs => packages}/oneapi.nix (100%) rename {local/pkgs => packages}/openxlsx.nix (100%) rename {local/pkgs => packages}/pix2tex/default.nix (100%) rename {local/pkgs => packages}/pix2tex/remove-version-requires.patch (100%) rename {local/pkgs => packages}/pslist.nix (100%) rename {local/pkgs => packages}/pyreadline3.nix (100%) rename {local/pkgs => packages}/rsshub.nix (100%) rename {local/pkgs => packages}/sbatch-tui/.clangd (100%) rename {local/pkgs => packages}/sbatch-tui/.envrc (100%) rename {local/pkgs => packages}/sbatch-tui/CMakeLists.txt (100%) rename {local/pkgs => packages}/sbatch-tui/default.nix (100%) rename {local/pkgs => packages}/sbatch-tui/include/sbatch-tui/device.hpp (100%) rename {local/pkgs => packages}/sbatch-tui/src/device.cpp (100%) rename {local/pkgs => packages}/sbatch-tui/src/device.cpp.template (100%) rename {local/pkgs => packages}/sbatch-tui/src/main.cpp (100%) rename {local/pkgs => packages}/slate.nix (100%) rename {local/pkgs => packages}/sockpp.nix (100%) rename {local/pkgs => packages}/sqlite-orm.nix (100%) rename {local/pkgs => packages}/tgbot-cpp.nix (100%) rename {local/pkgs => packages}/torchdata.nix (100%) rename {local/pkgs => packages}/torchtext.nix (100%) rename {local/pkgs => packages}/ufo/.gitignore (100%) rename {local/pkgs => packages}/ufo/CMakeLists.txt (100%) rename {local/pkgs => packages}/ufo/default.nix (100%) rename {local/pkgs => packages}/ufo/include/ufo/fold.hpp (100%) rename {local/pkgs => packages}/ufo/include/ufo/plot.hpp (100%) rename {local/pkgs => packages}/ufo/include/ufo/solver.hpp (100%) rename {local/pkgs => packages}/ufo/include/ufo/unfold.hpp (100%) rename {local/pkgs => packages}/ufo/src/fold.cpp (100%) rename {local/pkgs => packages}/ufo/src/main.cpp (100%) rename {local/pkgs => packages}/ufo/src/plot.cpp (100%) rename {local/pkgs => packages}/ufo/src/solver.cpp (100%) rename {local/pkgs => packages}/ufo/src/unfold.cpp (100%) rename {local/pkgs => packages}/v-sim.nix (100%) rename {local/pkgs => packages}/vasp/constr_cell_relax.F (100%) rename {local/pkgs => packages}/vasp/gnu/default.nix (100%) rename {local/pkgs => packages}/vasp/gnu/makefile.include (100%) rename {local/pkgs => packages}/vasp/hdf5-nvhpc/default.nix (100%) rename {local/pkgs => packages}/vasp/hdf5-oneapi/default.nix (100%) rename {local/pkgs => packages}/vasp/intel/default.nix (100%) rename {local/pkgs => packages}/vasp/intel/makefile.include (100%) rename {local/pkgs => packages}/vasp/nvidia/default.nix (100%) rename {local/pkgs => packages}/vasp/nvidia/makefile.include (100%) rename {local/pkgs => packages}/vasp/source.nix (100%) rename {local/pkgs => packages}/vasp/vtst.nix (100%) rename {local/pkgs => packages}/vasp/vtst.patch (100%) rename {local/pkgs => packages}/vasp/vtstscripts.nix (100%) rename {local/pkgs => packages}/vaspkit.nix (100%) rename {local/pkgs => packages}/vesta.nix (100%) rename {local/pkgs => packages}/winjob/.clangd (100%) rename {local/pkgs => packages}/winjob/.envrc (100%) rename {local/pkgs => packages}/winjob/CMakeLists.txt (100%) rename {local/pkgs => packages}/winjob/default.nix (100%) rename {local/pkgs => packages}/winjob/include/winjob/windows.hpp (100%) rename {local/pkgs => packages}/winjob/src/windows.cpp (100%) rename {local/pkgs => packages}/winjob/src/winjob.cpp (100%) rename {local/pkgs => packages}/winjob/src/winjobd.cpp (100%) rename {local/pkgs => packages}/yoga-support.nix (100%) rename {local/pkgs => packages}/zpp-bits.nix (100%) rename {local/pkgs => packages}/zxorm.nix (100%) diff --git a/flake.nix b/flake.nix index 0a125d99..970a2710 100644 --- a/flake.nix +++ b/flake.nix @@ -103,7 +103,7 @@ hpcstat = let openssh = (pkgs.pkgsStatic.openssh.override { withLdns = false; etcDir = null; }).overrideAttrs - (prev: { doCheck = false; patches = prev.patches ++ [ ./local/pkgs/hpcstat/openssh.patch ];}); + (prev: { doCheck = false; patches = prev.patches ++ [ ./packages/hpcstat/openssh.patch ];}); duc = pkgs.pkgsStatic.duc.override { enableCairo = false; cairo = null; pango = null; }; in pkgs.pkgsStatic.localPackages.hpcstat.override { inherit openssh duc; standalone = true; version = inputs.self.rev or "dirty"; }; @@ -139,7 +139,7 @@ [ (moduleInputs: { config.nixpkgs.overlays = [(prev: final: # replace pkgs with final to avoid infinite recursion - { localPackages = import ./local/pkgs (moduleInputs // { pkgs = final; }); })]; }) + { localPackages = import ./packages (moduleInputs // { pkgs = final; }); })]; }) ./modules ./devices/${system} ]; @@ -155,7 +155,7 @@ [ (moduleInputs: { config.nixpkgs.overlays = [(prev: final: # replace pkgs with final to avoid infinite recursion - { localPackages = import ./local/pkgs (moduleInputs // { pkgs = final; }); })]; }) + { localPackages = import ./packages (moduleInputs // { pkgs = final; }); })]; }) ./modules ./devices/pi3b ]; @@ -163,7 +163,7 @@ } ); overlays.default = final: prev: - { localPackages = (import ./local/pkgs { inherit (inputs) lib; pkgs = final; topInputs = inputs; }); }; + { localPackages = (import ./packages { inherit (inputs) lib; pkgs = final; topInputs = inputs; }); }; config = { archive = false; branch = "production"; }; devShells.x86_64-linux = let inherit (inputs.self.packages.x86_64-linux) pkgs; in { diff --git a/local/pkgs/hpcstat/doc/setup.md b/local/pkgs/hpcstat/doc/setup.md index 2e4f4dac..4c51fc24 100644 --- a/local/pkgs/hpcstat/doc/setup.md +++ b/local/pkgs/hpcstat/doc/setup.md @@ -1,214 +1 @@ -# 设置 SSH agent forwarding - -为了区分登陆 jykang@hpc.xmu.edu.cn 时使用的密钥,并分密钥统计使用情况,需要启用一项名为“SSH agent forwarding”的功能。 -接下来的内容将带领您在 Windows 系统上配置 SSH agent forwarding。 - -> [!NOTE] -> 在 Linux 上的配置方法放在了文章末尾。大多数用户不需要阅读。 - -要启用“SSH agent forwarding”,需要下面三个步骤: -1. 启动 Pageant 并添加密钥。 **这一步骤每次登陆前都需要执行。** -2. 配置 PuTTY,使 PuTTY 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次。 -3. 配置 WinSCP,使 WinSCP 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次。 - -接下来将分别说明这三个步骤。 - -## Pageant: - -1. 找到 Pageant 程序。Pageant 会随着 PuTTY 一起安装,一般来说您可以直接在开始菜单中搜索 “pageant” 找到它,也可以在 PuTTY 的安装目录中找到它。 -2. 启动 Pageant。启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 pageant 的图标就可以了。 - - ![](pageant1.png) - -3. 双击 Pageant 图标,打开 Pageant 窗口。选择 “Add Key”,然后选择您的密钥文件。 - - ![](pageant2.png) - -4. 在使用服务器期间保持 Pageant 启动(可以关闭 Pageant 的窗口,但不要在系统托盘中右键退出)。 -5. 使用完毕后,在系统托盘中右键退出 Pageant。 - -> [!NOTE] -> 无论是使用 WinSCP 还是 PuTTY,每次使用前,都需要如此启动 Pageant 并添加密钥。 - -> [!TIP] -> 如果您觉得每次打开 Pageant 都要手动添加密钥很麻烦,并且熟悉 Windows 命令行的使用, -> 可以编写一个批处理文件(将下方代码用记事本保存,然后将扩展名从 `.txt` 改为 `.bat`),每次双击该文件即可启动 Pageant 并自动添加密钥: -> -> `"C:\ProgramData\chocolatey\bin\PAGEANT.EXE" "Z:\.ssh\id_rsa.ppk"` -> -> 其中第一个引号内为 Pageant 的路径,第二个引号内为您的密钥文件的路径。也可以将该批处理文件放入开机启动项中,使得 Pageant 在开机时自动启动。 -> -> 因为每个人的密钥文件以及 Pageant 的路径都可能不同,所以这里无法提供通用的批处理文件。 - -## PuTTY: - -1. 在 Connection -> SSH -> Auth,勾选“Attempt authentication using Pageant”和“Allow agent forwarding”。 - - ![](putty1.png) - -2. 在 Connection -> SSH -> Auth -> Credentials,清空 “Private key file for authentication”,然后保存。 - - ![](putty2.png) - -3. (选做但推荐)在 Connection -> Data 中,将 “Auto-login username” 设置为 `jykang`,这样每次登陆时就不需要手动输入用户名了。 - -## WinSCP: - -1. 在 SSH -> Authentication,勾选 “使用 Pageant 进行认证”,勾选 “允许代理转发”,清空 “密钥文件”,然后保存。 - - ![](winscp1.png) - -2. (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面 -> 工具 -> 选项 -> 集成 -> 应用程序路径中, - 在原来的基础上增加 `-A` 参数。 - - ![](winscp2.png) - -> [!TIP] -> 如果 WinSCP 不让你直接修改那个字符串,就把它复制到记事本里修改,然后再复制回去。 - -至此,您已经成功配置了 SSH agent forwarding。 -之后使用 PuTTY 登陆 `jykang@hpc.xmu.edu.cn` 时,会收到包含了您的名字的提示(如图所示),表明您已经成功启用了 SSH agent forwarding。 - - ![](putty3.png) - -> [!NOTE] -> 无论是 PuTTY 还是 WinSCP,改完设置后都记得保存。 - -> [!IMPORTANT] -> 如果您确认已经按照教程设置好了却仍然不能连接,可以尝试将 WinSCP 和 PuTTY 都更新到最新。 -> -> 我测试使用的版本是:PuTTY 0.78 和 WinSCP 6.3.3。 - ---- - -# 其它内容 - -接下来的内容不是使用 jykang@hpc.xmu.edu.cn 的必需内容,不须要阅读。 -如果您按照上面的步骤配置 SSH agent forwarding 失败,那么请再次仔细阅读上面的内容,**接下来的内容对您没有帮助**。 - -接下来的内容包括: -* 解释为什么不转发 agent 就无法区分不同密钥。 -* 介绍一些可能有用的附加功能,例如区分使用同一个密钥的不同用户,以及如何设置任务进度微信通知。 - -## 为什么不转发 agent 就无法区分不同密钥? - -如果你好奇为什么不使用 Pageant 就无法区分使用不同密钥的登陆: - -SSH 连接并不是直接由 jykang 用户处理的, - 而是由一个名为 `sshd` 的程序处理,它通常以 `root` 用户的身份运行。 -在完成认证后,`sshd` 会将 Windows 电脑发来的信息解密后转发给以 `jykang` 用户运行的进程, - 并将以 `jykang` 用户运行的进程的输出加密后发回给 Windows 电脑。 -我们只能控制 `jykang` 用户运行的进程,但这里拿不到任何关于密钥的信息。 - -```mermaid -flowchart TB - subgraph "Run on windows" - A[(密钥文件)] -.->|从硬盘读取| B["SSH client (putty, WinSCP, etc.)"] - end - subgraph "Run on hpc by root" - C["SSH server (sshd)"] - end - B <--> |"认证信息 & 加密的数据"| C - subgraph "Run on hpc by jykang" - D["Other programs (bash, VASP, etc.)"] - end - C <--> |"解密后的数据(不包含密钥信息)"| D -``` - -Pageant 程序就是所谓的“SSH agent”。“SSH agent forwarding” 就是将到 Pageant 的连接通过已经建立的 SSH 连接转发给远程服务器, - 使得远程服务器可以与 Pageant 通信,进而读取密钥信息。 -“SSH agent forwarding” 典型的用途是在远程服务器上使用本地的密钥再次登陆其他服务器,而不是为了区分使用不同密钥的登陆。 - -```mermaid -flowchart TB - subgraph "Run on windows" - A[(密钥文件)] -.->|从硬盘读取| E["SSH agent (pageant)"] - E <-->|认证信息| B["SSH client (putty, WinSCP, etc.)"] - end - subgraph "Run on hpc by root" - C["SSH server (sshd)"] - end - B <--> |"认证信息 & 加密的数据"| C - subgraph "Run on hpc by jykang" - D["Other programs (bash, VASP, etc.)"] - end - C <--> |"解密后的数据(不包含密钥信息)"| D - E <-...-> |"通过已经建立的 SSH 连接转发密钥信息"| D -``` - -事实上,linux 的管理(统计用户使用的资源,等)非常依赖于不同的用户,即用高权限的用户去管理低权限的用户。 -大家都使用同一个账户的情况下,很多管理的功能没有现成的解决方案(要自己手写代码、思考如何设计),甚至完全无法实现。 -整这个东西真的挺麻烦的。我也嫌麻烦(而且我要做的事情比大多数用户多得多)。要不是康老师一定要我做,我才不会做。 -如果你嫌这些麻烦,与其埋怨我,不如去建议自己的导师去自己申请一个账号用。 - -## 设置子账户: - -一个老师拿到密钥后,可能会将它分发给多个不同的学生。 -如果希望区分不同学生的使用情况,可以修改 `TERM` 变量,加上 `hpcstat_subaccount:your_name:` 前缀, - 以此来进一步区分使用同一个密钥的不同用户。 - -对于 PuTTY 来说,`TERM` 变量在 Connection -> Data -> Ternimal-type string 中修改。 -例如,如果原本的 `TERM` 变量是 `xterm`,那么修改后的 `TERM` 变量可以是 `hpcstat_subaccount:chn:xterm`。 -`TERM` 变量只在交互式登陆时有效,因此无法在 WinSCP 中使用。 - -如果设置了这个参数,那么会额外统计不同子账户的使用情况(登陆次数、投递的任务、占用的核时,等)。 -是否设置这个参数都不影响按密钥统计的功能(即,按照密钥统计的核时,是所有使用这个密钥的用户的总和,无论是否设置了这个参数)。 - -同时,子账户的统计结果也仅供参考,事实上这个统计结果很容易造假 - (如果 A 和 B 都使用同一个密钥登陆,那么显然 B 可以在 TERM 中填入 A 的名字以假装自己是 A,把自己用的核时都算到 A 头上)。 - -> [!CAUTION] -> 如果 `TERM` 变量的格式设置得不正确,PuTTY 登陆后一些程序会无法正常工作,因此尝试时应该仔细且小心。 - -## PuTTY 登陆时自动跳转: - -如果您希望在登陆时自动跳转到自己的目录下,可以在 `TERM` 中再增加以下前缀:`chn_cd:your_path:`。 - -例如,将 `TERM` 变量修改为 `chn_cd:linwei/chn:xterm`,那么使用 PuTTY 登陆后会自动跳转到 `linwei/chn` 目录下。 - -如果同时使用了 `hpcstat_subaccount` 和 `chn_cd`,那么 `hpcstat_subaccount` 必须在 `chn_cd` 之后, - 例如 `chn_cd:linwei/chn:hpcstat_subaccount:chn:xterm`。 - -## 任务进度微信通知: - -用微信打开下面的链接: - -``` -https://wxpusher.zjiecode.com/wxuser/?type=1&id=75864#/follow -``` - -您应该会被引导去关注一个公众号(WxPusher 消息推送平台)。关注这个公众号之后会收到一条包含 UID 的消息。 -然后把下面的信息发给我: -* 您的 UID -* 您使用的密钥的指纹(用 PuTTY 登陆时会提示) -* 如果使用了子账户(在 `TERM` 中设置了 `hpcstat_subaccount`),还需要告诉我您设置的子账户名 - -之后您投递的任务有新进度(例如,开始运行、运行结束)时就会通过这个公众号收到通知。 - -需要注意的是,这个 UID 会被明文写到 jykang 上的文件里。 -也就是说存在这样的风险:有权限登陆 jykang 的人都有权限通过这个公众号给您发消息。 - -## 在 Linux 上配置 SSH agent forwarding - -1. 使用以下命令将 `.ppk` 的私钥部分拆分出来: - - ```bash - puttygen id_rsa.ppk -O private-openssh -o ./id_rsa - ``` - - 确保 `id_rsa` 的权限为 `600`。 - -2. 在 `~/.ssh/config` 中添加以下内容: - - ``` - Host jykang - AddKeysToAgent yes - ForwardAgent yes - IdentityFile ~/path/to/id_rsa - ``` - -然后就可以正常使用了,例如: - -```bash -ssh jykang -``` +Moved to [../../../../packages/hpcstat/doc/setup.md](../../../../packages/hpcstat/doc/setup.md) diff --git a/local/pkgs/biu/.clangd b/packages/biu/.clangd similarity index 100% rename from local/pkgs/biu/.clangd rename to packages/biu/.clangd diff --git a/local/pkgs/biu/.envrc b/packages/biu/.envrc similarity index 100% rename from local/pkgs/biu/.envrc rename to packages/biu/.envrc diff --git a/local/pkgs/biu/CMakeLists.txt b/packages/biu/CMakeLists.txt similarity index 100% rename from local/pkgs/biu/CMakeLists.txt rename to packages/biu/CMakeLists.txt diff --git a/local/pkgs/biu/README.md b/packages/biu/README.md similarity index 100% rename from local/pkgs/biu/README.md rename to packages/biu/README.md diff --git a/local/pkgs/biu/biuConfig.cmake b/packages/biu/biuConfig.cmake similarity index 100% rename from local/pkgs/biu/biuConfig.cmake rename to packages/biu/biuConfig.cmake diff --git a/local/pkgs/biu/default.nix b/packages/biu/default.nix similarity index 100% rename from local/pkgs/biu/default.nix rename to packages/biu/default.nix diff --git a/local/pkgs/biu/include/biu.hpp b/packages/biu/include/biu.hpp similarity index 100% rename from local/pkgs/biu/include/biu.hpp rename to packages/biu/include/biu.hpp diff --git a/local/pkgs/biu/include/biu/atomic/atomic.hpp b/packages/biu/include/biu/atomic/atomic.hpp similarity index 100% rename from local/pkgs/biu/include/biu/atomic/atomic.hpp rename to packages/biu/include/biu/atomic/atomic.hpp diff --git a/local/pkgs/biu/include/biu/atomic/atomic.tpp b/packages/biu/include/biu/atomic/atomic.tpp similarity index 100% rename from local/pkgs/biu/include/biu/atomic/atomic.tpp rename to packages/biu/include/biu/atomic/atomic.tpp diff --git a/local/pkgs/biu/include/biu/atomic/nolog.hpp b/packages/biu/include/biu/atomic/nolog.hpp similarity index 100% rename from local/pkgs/biu/include/biu/atomic/nolog.hpp rename to packages/biu/include/biu/atomic/nolog.hpp diff --git a/local/pkgs/biu/include/biu/atomic/nolog.tpp b/packages/biu/include/biu/atomic/nolog.tpp similarity index 100% rename from local/pkgs/biu/include/biu/atomic/nolog.tpp rename to packages/biu/include/biu/atomic/nolog.tpp diff --git a/local/pkgs/biu/include/biu/called_by.hpp b/packages/biu/include/biu/called_by.hpp similarity index 100% rename from local/pkgs/biu/include/biu/called_by.hpp rename to packages/biu/include/biu/called_by.hpp diff --git a/local/pkgs/biu/include/biu/common.hpp b/packages/biu/include/biu/common.hpp similarity index 100% rename from local/pkgs/biu/include/biu/common.hpp rename to packages/biu/include/biu/common.hpp diff --git a/local/pkgs/biu/include/biu/common.tpp b/packages/biu/include/biu/common.tpp similarity index 100% rename from local/pkgs/biu/include/biu/common.tpp rename to packages/biu/include/biu/common.tpp diff --git a/local/pkgs/biu/include/biu/concepts.hpp b/packages/biu/include/biu/concepts.hpp similarity index 100% rename from local/pkgs/biu/include/biu/concepts.hpp rename to packages/biu/include/biu/concepts.hpp diff --git a/local/pkgs/biu/include/biu/concepts.tpp b/packages/biu/include/biu/concepts.tpp similarity index 100% rename from local/pkgs/biu/include/biu/concepts.tpp rename to packages/biu/include/biu/concepts.tpp diff --git a/local/pkgs/biu/include/biu/eigen.hpp b/packages/biu/include/biu/eigen.hpp similarity index 100% rename from local/pkgs/biu/include/biu/eigen.hpp rename to packages/biu/include/biu/eigen.hpp diff --git a/local/pkgs/biu/include/biu/eigen.tpp b/packages/biu/include/biu/eigen.tpp similarity index 100% rename from local/pkgs/biu/include/biu/eigen.tpp rename to packages/biu/include/biu/eigen.tpp diff --git a/local/pkgs/biu/include/biu/format.hpp b/packages/biu/include/biu/format.hpp similarity index 100% rename from local/pkgs/biu/include/biu/format.hpp rename to packages/biu/include/biu/format.hpp diff --git a/local/pkgs/biu/include/biu/format.tpp b/packages/biu/include/biu/format.tpp similarity index 100% rename from local/pkgs/biu/include/biu/format.tpp rename to packages/biu/include/biu/format.tpp diff --git a/local/pkgs/biu/include/biu/logger.hpp b/packages/biu/include/biu/logger.hpp similarity index 100% rename from local/pkgs/biu/include/biu/logger.hpp rename to packages/biu/include/biu/logger.hpp diff --git a/local/pkgs/biu/include/biu/logger.tpp b/packages/biu/include/biu/logger.tpp similarity index 100% rename from local/pkgs/biu/include/biu/logger.tpp rename to packages/biu/include/biu/logger.tpp diff --git a/local/pkgs/biu/include/biu/smartref.hpp b/packages/biu/include/biu/smartref.hpp similarity index 100% rename from local/pkgs/biu/include/biu/smartref.hpp rename to packages/biu/include/biu/smartref.hpp diff --git a/local/pkgs/biu/include/biu/smartref.tpp b/packages/biu/include/biu/smartref.tpp similarity index 100% rename from local/pkgs/biu/include/biu/smartref.tpp rename to packages/biu/include/biu/smartref.tpp diff --git a/local/pkgs/biu/include/biu/string.hpp b/packages/biu/include/biu/string.hpp similarity index 100% rename from local/pkgs/biu/include/biu/string.hpp rename to packages/biu/include/biu/string.hpp diff --git a/local/pkgs/biu/include/biu/string.tpp b/packages/biu/include/biu/string.tpp similarity index 100% rename from local/pkgs/biu/include/biu/string.tpp rename to packages/biu/include/biu/string.tpp diff --git a/local/pkgs/biu/src/common.cpp b/packages/biu/src/common.cpp similarity index 100% rename from local/pkgs/biu/src/common.cpp rename to packages/biu/src/common.cpp diff --git a/local/pkgs/biu/src/logger.cpp b/packages/biu/src/logger.cpp similarity index 100% rename from local/pkgs/biu/src/logger.cpp rename to packages/biu/src/logger.cpp diff --git a/local/pkgs/biu/src/string.cpp b/packages/biu/src/string.cpp similarity index 100% rename from local/pkgs/biu/src/string.cpp rename to packages/biu/src/string.cpp diff --git a/local/pkgs/biu/test/process.cpp b/packages/biu/test/process.cpp similarity index 100% rename from local/pkgs/biu/test/process.cpp rename to packages/biu/test/process.cpp diff --git a/local/pkgs/biu/test/serialize.cpp b/packages/biu/test/serialize.cpp similarity index 100% rename from local/pkgs/biu/test/serialize.cpp rename to packages/biu/test/serialize.cpp diff --git a/local/pkgs/blurred-wallpaper.nix b/packages/blurred-wallpaper.nix similarity index 100% rename from local/pkgs/blurred-wallpaper.nix rename to packages/blurred-wallpaper.nix diff --git a/local/pkgs/chn-bsub/CMakeLists.txt b/packages/chn-bsub/CMakeLists.txt similarity index 100% rename from local/pkgs/chn-bsub/CMakeLists.txt rename to packages/chn-bsub/CMakeLists.txt diff --git a/local/pkgs/chn-bsub/default.nix b/packages/chn-bsub/default.nix similarity index 100% rename from local/pkgs/chn-bsub/default.nix rename to packages/chn-bsub/default.nix diff --git a/local/pkgs/chn-bsub/src/main.cpp b/packages/chn-bsub/src/main.cpp similarity index 100% rename from local/pkgs/chn-bsub/src/main.cpp rename to packages/chn-bsub/src/main.cpp diff --git a/local/pkgs/concurrencpp.nix b/packages/concurrencpp.nix similarity index 100% rename from local/pkgs/concurrencpp.nix rename to packages/concurrencpp.nix diff --git a/local/pkgs/cppcoro/cppcoro-include-utility.patch b/packages/cppcoro/cppcoro-include-utility.patch similarity index 100% rename from local/pkgs/cppcoro/cppcoro-include-utility.patch rename to packages/cppcoro/cppcoro-include-utility.patch diff --git a/local/pkgs/cppcoro/default.nix b/packages/cppcoro/default.nix similarity index 100% rename from local/pkgs/cppcoro/default.nix rename to packages/cppcoro/default.nix diff --git a/local/pkgs/date.nix b/packages/date.nix similarity index 100% rename from local/pkgs/date.nix rename to packages/date.nix diff --git a/local/pkgs/default.nix b/packages/default.nix similarity index 100% rename from local/pkgs/default.nix rename to packages/default.nix diff --git a/local/pkgs/eigen.nix b/packages/eigen.nix similarity index 100% rename from local/pkgs/eigen.nix rename to packages/eigen.nix diff --git a/local/pkgs/eigengdb.nix b/packages/eigengdb.nix similarity index 100% rename from local/pkgs/eigengdb.nix rename to packages/eigengdb.nix diff --git a/local/pkgs/esbonio.nix b/packages/esbonio.nix similarity index 100% rename from local/pkgs/esbonio.nix rename to packages/esbonio.nix diff --git a/local/pkgs/git-lfs-transfer.nix b/packages/git-lfs-transfer.nix similarity index 100% rename from local/pkgs/git-lfs-transfer.nix rename to packages/git-lfs-transfer.nix diff --git a/local/pkgs/glad.nix b/packages/glad.nix similarity index 100% rename from local/pkgs/glad.nix rename to packages/glad.nix diff --git a/local/pkgs/hpcstat/.clangd b/packages/hpcstat/.clangd similarity index 100% rename from local/pkgs/hpcstat/.clangd rename to packages/hpcstat/.clangd diff --git a/local/pkgs/hpcstat/.envrc b/packages/hpcstat/.envrc similarity index 100% rename from local/pkgs/hpcstat/.envrc rename to packages/hpcstat/.envrc diff --git a/local/pkgs/hpcstat/CMakeLists.txt b/packages/hpcstat/CMakeLists.txt similarity index 100% rename from local/pkgs/hpcstat/CMakeLists.txt rename to packages/hpcstat/CMakeLists.txt diff --git a/local/pkgs/hpcstat/default.nix b/packages/hpcstat/default.nix similarity index 100% rename from local/pkgs/hpcstat/default.nix rename to packages/hpcstat/default.nix diff --git a/local/pkgs/hpcstat/doc/pageant1.png b/packages/hpcstat/doc/pageant1.png similarity index 100% rename from local/pkgs/hpcstat/doc/pageant1.png rename to packages/hpcstat/doc/pageant1.png diff --git a/local/pkgs/hpcstat/doc/pageant2.png b/packages/hpcstat/doc/pageant2.png similarity index 100% rename from local/pkgs/hpcstat/doc/pageant2.png rename to packages/hpcstat/doc/pageant2.png diff --git a/local/pkgs/hpcstat/doc/putty1.png b/packages/hpcstat/doc/putty1.png similarity index 100% rename from local/pkgs/hpcstat/doc/putty1.png rename to packages/hpcstat/doc/putty1.png diff --git a/local/pkgs/hpcstat/doc/putty2.png b/packages/hpcstat/doc/putty2.png similarity index 100% rename from local/pkgs/hpcstat/doc/putty2.png rename to packages/hpcstat/doc/putty2.png diff --git a/local/pkgs/hpcstat/doc/putty3.png b/packages/hpcstat/doc/putty3.png similarity index 100% rename from local/pkgs/hpcstat/doc/putty3.png rename to packages/hpcstat/doc/putty3.png diff --git a/packages/hpcstat/doc/setup.md b/packages/hpcstat/doc/setup.md new file mode 100644 index 00000000..2e4f4dac --- /dev/null +++ b/packages/hpcstat/doc/setup.md @@ -0,0 +1,214 @@ +# 设置 SSH agent forwarding + +为了区分登陆 jykang@hpc.xmu.edu.cn 时使用的密钥,并分密钥统计使用情况,需要启用一项名为“SSH agent forwarding”的功能。 +接下来的内容将带领您在 Windows 系统上配置 SSH agent forwarding。 + +> [!NOTE] +> 在 Linux 上的配置方法放在了文章末尾。大多数用户不需要阅读。 + +要启用“SSH agent forwarding”,需要下面三个步骤: +1. 启动 Pageant 并添加密钥。 **这一步骤每次登陆前都需要执行。** +2. 配置 PuTTY,使 PuTTY 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次。 +3. 配置 WinSCP,使 WinSCP 在每次登陆时不直接使用密钥,而是利用 Pageant 完成认证。这一步骤只需要执行一次。 + +接下来将分别说明这三个步骤。 + +## Pageant: + +1. 找到 Pageant 程序。Pageant 会随着 PuTTY 一起安装,一般来说您可以直接在开始菜单中搜索 “pageant” 找到它,也可以在 PuTTY 的安装目录中找到它。 +2. 启动 Pageant。启动后可能没有任何反应,也可能有一个黑框闪过,这是正常的。只要右下角的系统托盘中出现了 pageant 的图标就可以了。 + + ![](pageant1.png) + +3. 双击 Pageant 图标,打开 Pageant 窗口。选择 “Add Key”,然后选择您的密钥文件。 + + ![](pageant2.png) + +4. 在使用服务器期间保持 Pageant 启动(可以关闭 Pageant 的窗口,但不要在系统托盘中右键退出)。 +5. 使用完毕后,在系统托盘中右键退出 Pageant。 + +> [!NOTE] +> 无论是使用 WinSCP 还是 PuTTY,每次使用前,都需要如此启动 Pageant 并添加密钥。 + +> [!TIP] +> 如果您觉得每次打开 Pageant 都要手动添加密钥很麻烦,并且熟悉 Windows 命令行的使用, +> 可以编写一个批处理文件(将下方代码用记事本保存,然后将扩展名从 `.txt` 改为 `.bat`),每次双击该文件即可启动 Pageant 并自动添加密钥: +> +> `"C:\ProgramData\chocolatey\bin\PAGEANT.EXE" "Z:\.ssh\id_rsa.ppk"` +> +> 其中第一个引号内为 Pageant 的路径,第二个引号内为您的密钥文件的路径。也可以将该批处理文件放入开机启动项中,使得 Pageant 在开机时自动启动。 +> +> 因为每个人的密钥文件以及 Pageant 的路径都可能不同,所以这里无法提供通用的批处理文件。 + +## PuTTY: + +1. 在 Connection -> SSH -> Auth,勾选“Attempt authentication using Pageant”和“Allow agent forwarding”。 + + ![](putty1.png) + +2. 在 Connection -> SSH -> Auth -> Credentials,清空 “Private key file for authentication”,然后保存。 + + ![](putty2.png) + +3. (选做但推荐)在 Connection -> Data 中,将 “Auto-login username” 设置为 `jykang`,这样每次登陆时就不需要手动输入用户名了。 + +## WinSCP: + +1. 在 SSH -> Authentication,勾选 “使用 Pageant 进行认证”,勾选 “允许代理转发”,清空 “密钥文件”,然后保存。 + + ![](winscp1.png) + +2. (选做)如果您需要通过 WinSCP 打开 PuTTY 的话,需要在 WinSCP 主界面 -> 工具 -> 选项 -> 集成 -> 应用程序路径中, + 在原来的基础上增加 `-A` 参数。 + + ![](winscp2.png) + +> [!TIP] +> 如果 WinSCP 不让你直接修改那个字符串,就把它复制到记事本里修改,然后再复制回去。 + +至此,您已经成功配置了 SSH agent forwarding。 +之后使用 PuTTY 登陆 `jykang@hpc.xmu.edu.cn` 时,会收到包含了您的名字的提示(如图所示),表明您已经成功启用了 SSH agent forwarding。 + + ![](putty3.png) + +> [!NOTE] +> 无论是 PuTTY 还是 WinSCP,改完设置后都记得保存。 + +> [!IMPORTANT] +> 如果您确认已经按照教程设置好了却仍然不能连接,可以尝试将 WinSCP 和 PuTTY 都更新到最新。 +> +> 我测试使用的版本是:PuTTY 0.78 和 WinSCP 6.3.3。 + +--- + +# 其它内容 + +接下来的内容不是使用 jykang@hpc.xmu.edu.cn 的必需内容,不须要阅读。 +如果您按照上面的步骤配置 SSH agent forwarding 失败,那么请再次仔细阅读上面的内容,**接下来的内容对您没有帮助**。 + +接下来的内容包括: +* 解释为什么不转发 agent 就无法区分不同密钥。 +* 介绍一些可能有用的附加功能,例如区分使用同一个密钥的不同用户,以及如何设置任务进度微信通知。 + +## 为什么不转发 agent 就无法区分不同密钥? + +如果你好奇为什么不使用 Pageant 就无法区分使用不同密钥的登陆: + +SSH 连接并不是直接由 jykang 用户处理的, + 而是由一个名为 `sshd` 的程序处理,它通常以 `root` 用户的身份运行。 +在完成认证后,`sshd` 会将 Windows 电脑发来的信息解密后转发给以 `jykang` 用户运行的进程, + 并将以 `jykang` 用户运行的进程的输出加密后发回给 Windows 电脑。 +我们只能控制 `jykang` 用户运行的进程,但这里拿不到任何关于密钥的信息。 + +```mermaid +flowchart TB + subgraph "Run on windows" + A[(密钥文件)] -.->|从硬盘读取| B["SSH client (putty, WinSCP, etc.)"] + end + subgraph "Run on hpc by root" + C["SSH server (sshd)"] + end + B <--> |"认证信息 & 加密的数据"| C + subgraph "Run on hpc by jykang" + D["Other programs (bash, VASP, etc.)"] + end + C <--> |"解密后的数据(不包含密钥信息)"| D +``` + +Pageant 程序就是所谓的“SSH agent”。“SSH agent forwarding” 就是将到 Pageant 的连接通过已经建立的 SSH 连接转发给远程服务器, + 使得远程服务器可以与 Pageant 通信,进而读取密钥信息。 +“SSH agent forwarding” 典型的用途是在远程服务器上使用本地的密钥再次登陆其他服务器,而不是为了区分使用不同密钥的登陆。 + +```mermaid +flowchart TB + subgraph "Run on windows" + A[(密钥文件)] -.->|从硬盘读取| E["SSH agent (pageant)"] + E <-->|认证信息| B["SSH client (putty, WinSCP, etc.)"] + end + subgraph "Run on hpc by root" + C["SSH server (sshd)"] + end + B <--> |"认证信息 & 加密的数据"| C + subgraph "Run on hpc by jykang" + D["Other programs (bash, VASP, etc.)"] + end + C <--> |"解密后的数据(不包含密钥信息)"| D + E <-...-> |"通过已经建立的 SSH 连接转发密钥信息"| D +``` + +事实上,linux 的管理(统计用户使用的资源,等)非常依赖于不同的用户,即用高权限的用户去管理低权限的用户。 +大家都使用同一个账户的情况下,很多管理的功能没有现成的解决方案(要自己手写代码、思考如何设计),甚至完全无法实现。 +整这个东西真的挺麻烦的。我也嫌麻烦(而且我要做的事情比大多数用户多得多)。要不是康老师一定要我做,我才不会做。 +如果你嫌这些麻烦,与其埋怨我,不如去建议自己的导师去自己申请一个账号用。 + +## 设置子账户: + +一个老师拿到密钥后,可能会将它分发给多个不同的学生。 +如果希望区分不同学生的使用情况,可以修改 `TERM` 变量,加上 `hpcstat_subaccount:your_name:` 前缀, + 以此来进一步区分使用同一个密钥的不同用户。 + +对于 PuTTY 来说,`TERM` 变量在 Connection -> Data -> Ternimal-type string 中修改。 +例如,如果原本的 `TERM` 变量是 `xterm`,那么修改后的 `TERM` 变量可以是 `hpcstat_subaccount:chn:xterm`。 +`TERM` 变量只在交互式登陆时有效,因此无法在 WinSCP 中使用。 + +如果设置了这个参数,那么会额外统计不同子账户的使用情况(登陆次数、投递的任务、占用的核时,等)。 +是否设置这个参数都不影响按密钥统计的功能(即,按照密钥统计的核时,是所有使用这个密钥的用户的总和,无论是否设置了这个参数)。 + +同时,子账户的统计结果也仅供参考,事实上这个统计结果很容易造假 + (如果 A 和 B 都使用同一个密钥登陆,那么显然 B 可以在 TERM 中填入 A 的名字以假装自己是 A,把自己用的核时都算到 A 头上)。 + +> [!CAUTION] +> 如果 `TERM` 变量的格式设置得不正确,PuTTY 登陆后一些程序会无法正常工作,因此尝试时应该仔细且小心。 + +## PuTTY 登陆时自动跳转: + +如果您希望在登陆时自动跳转到自己的目录下,可以在 `TERM` 中再增加以下前缀:`chn_cd:your_path:`。 + +例如,将 `TERM` 变量修改为 `chn_cd:linwei/chn:xterm`,那么使用 PuTTY 登陆后会自动跳转到 `linwei/chn` 目录下。 + +如果同时使用了 `hpcstat_subaccount` 和 `chn_cd`,那么 `hpcstat_subaccount` 必须在 `chn_cd` 之后, + 例如 `chn_cd:linwei/chn:hpcstat_subaccount:chn:xterm`。 + +## 任务进度微信通知: + +用微信打开下面的链接: + +``` +https://wxpusher.zjiecode.com/wxuser/?type=1&id=75864#/follow +``` + +您应该会被引导去关注一个公众号(WxPusher 消息推送平台)。关注这个公众号之后会收到一条包含 UID 的消息。 +然后把下面的信息发给我: +* 您的 UID +* 您使用的密钥的指纹(用 PuTTY 登陆时会提示) +* 如果使用了子账户(在 `TERM` 中设置了 `hpcstat_subaccount`),还需要告诉我您设置的子账户名 + +之后您投递的任务有新进度(例如,开始运行、运行结束)时就会通过这个公众号收到通知。 + +需要注意的是,这个 UID 会被明文写到 jykang 上的文件里。 +也就是说存在这样的风险:有权限登陆 jykang 的人都有权限通过这个公众号给您发消息。 + +## 在 Linux 上配置 SSH agent forwarding + +1. 使用以下命令将 `.ppk` 的私钥部分拆分出来: + + ```bash + puttygen id_rsa.ppk -O private-openssh -o ./id_rsa + ``` + + 确保 `id_rsa` 的权限为 `600`。 + +2. 在 `~/.ssh/config` 中添加以下内容: + + ``` + Host jykang + AddKeysToAgent yes + ForwardAgent yes + IdentityFile ~/path/to/id_rsa + ``` + +然后就可以正常使用了,例如: + +```bash +ssh jykang +``` diff --git a/local/pkgs/hpcstat/doc/winscp1.png b/packages/hpcstat/doc/winscp1.png similarity index 100% rename from local/pkgs/hpcstat/doc/winscp1.png rename to packages/hpcstat/doc/winscp1.png diff --git a/local/pkgs/hpcstat/doc/winscp2.png b/packages/hpcstat/doc/winscp2.png similarity index 100% rename from local/pkgs/hpcstat/doc/winscp2.png rename to packages/hpcstat/doc/winscp2.png diff --git a/local/pkgs/hpcstat/include/hpcstat/common.hpp b/packages/hpcstat/include/hpcstat/common.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/common.hpp rename to packages/hpcstat/include/hpcstat/common.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/disk.hpp b/packages/hpcstat/include/hpcstat/disk.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/disk.hpp rename to packages/hpcstat/include/hpcstat/disk.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/env.hpp b/packages/hpcstat/include/hpcstat/env.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/env.hpp rename to packages/hpcstat/include/hpcstat/env.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/keys.hpp b/packages/hpcstat/include/hpcstat/keys.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/keys.hpp rename to packages/hpcstat/include/hpcstat/keys.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/lfs.hpp b/packages/hpcstat/include/hpcstat/lfs.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/lfs.hpp rename to packages/hpcstat/include/hpcstat/lfs.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/push.hpp b/packages/hpcstat/include/hpcstat/push.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/push.hpp rename to packages/hpcstat/include/hpcstat/push.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/sql.hpp b/packages/hpcstat/include/hpcstat/sql.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/sql.hpp rename to packages/hpcstat/include/hpcstat/sql.hpp diff --git a/local/pkgs/hpcstat/include/hpcstat/ssh.hpp b/packages/hpcstat/include/hpcstat/ssh.hpp similarity index 100% rename from local/pkgs/hpcstat/include/hpcstat/ssh.hpp rename to packages/hpcstat/include/hpcstat/ssh.hpp diff --git a/local/pkgs/hpcstat/openssh.patch b/packages/hpcstat/openssh.patch similarity index 100% rename from local/pkgs/hpcstat/openssh.patch rename to packages/hpcstat/openssh.patch diff --git a/local/pkgs/hpcstat/share/keys/00 b/packages/hpcstat/share/keys/00 similarity index 100% rename from local/pkgs/hpcstat/share/keys/00 rename to packages/hpcstat/share/keys/00 diff --git a/local/pkgs/hpcstat/share/keys/01 b/packages/hpcstat/share/keys/01 similarity index 100% rename from local/pkgs/hpcstat/share/keys/01 rename to packages/hpcstat/share/keys/01 diff --git a/local/pkgs/hpcstat/share/keys/02 b/packages/hpcstat/share/keys/02 similarity index 100% rename from local/pkgs/hpcstat/share/keys/02 rename to packages/hpcstat/share/keys/02 diff --git a/local/pkgs/hpcstat/share/keys/03 b/packages/hpcstat/share/keys/03 similarity index 100% rename from local/pkgs/hpcstat/share/keys/03 rename to packages/hpcstat/share/keys/03 diff --git a/local/pkgs/hpcstat/share/keys/04 b/packages/hpcstat/share/keys/04 similarity index 100% rename from local/pkgs/hpcstat/share/keys/04 rename to packages/hpcstat/share/keys/04 diff --git a/local/pkgs/hpcstat/share/keys/05 b/packages/hpcstat/share/keys/05 similarity index 100% rename from local/pkgs/hpcstat/share/keys/05 rename to packages/hpcstat/share/keys/05 diff --git a/local/pkgs/hpcstat/share/keys/chn b/packages/hpcstat/share/keys/chn similarity index 100% rename from local/pkgs/hpcstat/share/keys/chn rename to packages/hpcstat/share/keys/chn diff --git a/local/pkgs/hpcstat/share/keys/gb b/packages/hpcstat/share/keys/gb similarity index 100% rename from local/pkgs/hpcstat/share/keys/gb rename to packages/hpcstat/share/keys/gb diff --git a/local/pkgs/hpcstat/share/keys/hpcstat b/packages/hpcstat/share/keys/hpcstat similarity index 100% rename from local/pkgs/hpcstat/share/keys/hpcstat rename to packages/hpcstat/share/keys/hpcstat diff --git a/local/pkgs/hpcstat/share/keys/xll b/packages/hpcstat/share/keys/xll similarity index 100% rename from local/pkgs/hpcstat/share/keys/xll rename to packages/hpcstat/share/keys/xll diff --git a/local/pkgs/hpcstat/share/keys/xly b/packages/hpcstat/share/keys/xly similarity index 100% rename from local/pkgs/hpcstat/share/keys/xly rename to packages/hpcstat/share/keys/xly diff --git a/local/pkgs/hpcstat/share/keys/yjq b/packages/hpcstat/share/keys/yjq similarity index 100% rename from local/pkgs/hpcstat/share/keys/yjq rename to packages/hpcstat/share/keys/yjq diff --git a/local/pkgs/hpcstat/share/keys/zem b/packages/hpcstat/share/keys/zem similarity index 100% rename from local/pkgs/hpcstat/share/keys/zem rename to packages/hpcstat/share/keys/zem diff --git a/local/pkgs/hpcstat/src/common.cpp b/packages/hpcstat/src/common.cpp similarity index 100% rename from local/pkgs/hpcstat/src/common.cpp rename to packages/hpcstat/src/common.cpp diff --git a/local/pkgs/hpcstat/src/disk.cpp b/packages/hpcstat/src/disk.cpp similarity index 100% rename from local/pkgs/hpcstat/src/disk.cpp rename to packages/hpcstat/src/disk.cpp diff --git a/local/pkgs/hpcstat/src/env.cpp b/packages/hpcstat/src/env.cpp similarity index 100% rename from local/pkgs/hpcstat/src/env.cpp rename to packages/hpcstat/src/env.cpp diff --git a/local/pkgs/hpcstat/src/keys.cpp b/packages/hpcstat/src/keys.cpp similarity index 100% rename from local/pkgs/hpcstat/src/keys.cpp rename to packages/hpcstat/src/keys.cpp diff --git a/local/pkgs/hpcstat/src/lfs.cpp b/packages/hpcstat/src/lfs.cpp similarity index 100% rename from local/pkgs/hpcstat/src/lfs.cpp rename to packages/hpcstat/src/lfs.cpp diff --git a/local/pkgs/hpcstat/src/main.cpp b/packages/hpcstat/src/main.cpp similarity index 100% rename from local/pkgs/hpcstat/src/main.cpp rename to packages/hpcstat/src/main.cpp diff --git a/local/pkgs/hpcstat/src/push.cpp b/packages/hpcstat/src/push.cpp similarity index 100% rename from local/pkgs/hpcstat/src/push.cpp rename to packages/hpcstat/src/push.cpp diff --git a/local/pkgs/hpcstat/src/sql.cpp b/packages/hpcstat/src/sql.cpp similarity index 100% rename from local/pkgs/hpcstat/src/sql.cpp rename to packages/hpcstat/src/sql.cpp diff --git a/local/pkgs/hpcstat/src/ssh.cpp b/packages/hpcstat/src/ssh.cpp similarity index 100% rename from local/pkgs/hpcstat/src/ssh.cpp rename to packages/hpcstat/src/ssh.cpp diff --git a/local/pkgs/kylin-virtual-keyboard.nix b/packages/kylin-virtual-keyboard.nix similarity index 100% rename from local/pkgs/kylin-virtual-keyboard.nix rename to packages/kylin-virtual-keyboard.nix diff --git a/local/pkgs/lmod.nix b/packages/lmod.nix similarity index 100% rename from local/pkgs/lmod.nix rename to packages/lmod.nix diff --git a/local/pkgs/matplotplusplus.nix b/packages/matplotplusplus.nix similarity index 100% rename from local/pkgs/matplotplusplus.nix rename to packages/matplotplusplus.nix diff --git a/local/pkgs/mirism.nix b/packages/mirism.nix similarity index 100% rename from local/pkgs/mirism.nix rename to packages/mirism.nix diff --git a/local/pkgs/misskey.nix b/packages/misskey.nix similarity index 100% rename from local/pkgs/misskey.nix rename to packages/misskey.nix diff --git a/local/pkgs/mk-meili-mgn.nix b/packages/mk-meili-mgn.nix similarity index 100% rename from local/pkgs/mk-meili-mgn.nix rename to packages/mk-meili-mgn.nix diff --git a/local/pkgs/mkPnpmPackage.nix b/packages/mkPnpmPackage.nix similarity index 100% rename from local/pkgs/mkPnpmPackage.nix rename to packages/mkPnpmPackage.nix diff --git a/local/pkgs/mumax.nix b/packages/mumax.nix similarity index 100% rename from local/pkgs/mumax.nix rename to packages/mumax.nix diff --git a/local/pkgs/nameof.nix b/packages/nameof.nix similarity index 100% rename from local/pkgs/nameof.nix rename to packages/nameof.nix diff --git a/local/pkgs/nodesoup.nix b/packages/nodesoup.nix similarity index 100% rename from local/pkgs/nodesoup.nix rename to packages/nodesoup.nix diff --git a/local/pkgs/nvhpc.nix b/packages/nvhpc.nix similarity index 100% rename from local/pkgs/nvhpc.nix rename to packages/nvhpc.nix diff --git a/local/pkgs/oneapi.nix b/packages/oneapi.nix similarity index 100% rename from local/pkgs/oneapi.nix rename to packages/oneapi.nix diff --git a/local/pkgs/openxlsx.nix b/packages/openxlsx.nix similarity index 100% rename from local/pkgs/openxlsx.nix rename to packages/openxlsx.nix diff --git a/local/pkgs/pix2tex/default.nix b/packages/pix2tex/default.nix similarity index 100% rename from local/pkgs/pix2tex/default.nix rename to packages/pix2tex/default.nix diff --git a/local/pkgs/pix2tex/remove-version-requires.patch b/packages/pix2tex/remove-version-requires.patch similarity index 100% rename from local/pkgs/pix2tex/remove-version-requires.patch rename to packages/pix2tex/remove-version-requires.patch diff --git a/local/pkgs/pslist.nix b/packages/pslist.nix similarity index 100% rename from local/pkgs/pslist.nix rename to packages/pslist.nix diff --git a/local/pkgs/pyreadline3.nix b/packages/pyreadline3.nix similarity index 100% rename from local/pkgs/pyreadline3.nix rename to packages/pyreadline3.nix diff --git a/local/pkgs/rsshub.nix b/packages/rsshub.nix similarity index 100% rename from local/pkgs/rsshub.nix rename to packages/rsshub.nix diff --git a/local/pkgs/sbatch-tui/.clangd b/packages/sbatch-tui/.clangd similarity index 100% rename from local/pkgs/sbatch-tui/.clangd rename to packages/sbatch-tui/.clangd diff --git a/local/pkgs/sbatch-tui/.envrc b/packages/sbatch-tui/.envrc similarity index 100% rename from local/pkgs/sbatch-tui/.envrc rename to packages/sbatch-tui/.envrc diff --git a/local/pkgs/sbatch-tui/CMakeLists.txt b/packages/sbatch-tui/CMakeLists.txt similarity index 100% rename from local/pkgs/sbatch-tui/CMakeLists.txt rename to packages/sbatch-tui/CMakeLists.txt diff --git a/local/pkgs/sbatch-tui/default.nix b/packages/sbatch-tui/default.nix similarity index 100% rename from local/pkgs/sbatch-tui/default.nix rename to packages/sbatch-tui/default.nix diff --git a/local/pkgs/sbatch-tui/include/sbatch-tui/device.hpp b/packages/sbatch-tui/include/sbatch-tui/device.hpp similarity index 100% rename from local/pkgs/sbatch-tui/include/sbatch-tui/device.hpp rename to packages/sbatch-tui/include/sbatch-tui/device.hpp diff --git a/local/pkgs/sbatch-tui/src/device.cpp b/packages/sbatch-tui/src/device.cpp similarity index 100% rename from local/pkgs/sbatch-tui/src/device.cpp rename to packages/sbatch-tui/src/device.cpp diff --git a/local/pkgs/sbatch-tui/src/device.cpp.template b/packages/sbatch-tui/src/device.cpp.template similarity index 100% rename from local/pkgs/sbatch-tui/src/device.cpp.template rename to packages/sbatch-tui/src/device.cpp.template diff --git a/local/pkgs/sbatch-tui/src/main.cpp b/packages/sbatch-tui/src/main.cpp similarity index 100% rename from local/pkgs/sbatch-tui/src/main.cpp rename to packages/sbatch-tui/src/main.cpp diff --git a/local/pkgs/slate.nix b/packages/slate.nix similarity index 100% rename from local/pkgs/slate.nix rename to packages/slate.nix diff --git a/local/pkgs/sockpp.nix b/packages/sockpp.nix similarity index 100% rename from local/pkgs/sockpp.nix rename to packages/sockpp.nix diff --git a/local/pkgs/sqlite-orm.nix b/packages/sqlite-orm.nix similarity index 100% rename from local/pkgs/sqlite-orm.nix rename to packages/sqlite-orm.nix diff --git a/local/pkgs/tgbot-cpp.nix b/packages/tgbot-cpp.nix similarity index 100% rename from local/pkgs/tgbot-cpp.nix rename to packages/tgbot-cpp.nix diff --git a/local/pkgs/torchdata.nix b/packages/torchdata.nix similarity index 100% rename from local/pkgs/torchdata.nix rename to packages/torchdata.nix diff --git a/local/pkgs/torchtext.nix b/packages/torchtext.nix similarity index 100% rename from local/pkgs/torchtext.nix rename to packages/torchtext.nix diff --git a/local/pkgs/ufo/.gitignore b/packages/ufo/.gitignore similarity index 100% rename from local/pkgs/ufo/.gitignore rename to packages/ufo/.gitignore diff --git a/local/pkgs/ufo/CMakeLists.txt b/packages/ufo/CMakeLists.txt similarity index 100% rename from local/pkgs/ufo/CMakeLists.txt rename to packages/ufo/CMakeLists.txt diff --git a/local/pkgs/ufo/default.nix b/packages/ufo/default.nix similarity index 100% rename from local/pkgs/ufo/default.nix rename to packages/ufo/default.nix diff --git a/local/pkgs/ufo/include/ufo/fold.hpp b/packages/ufo/include/ufo/fold.hpp similarity index 100% rename from local/pkgs/ufo/include/ufo/fold.hpp rename to packages/ufo/include/ufo/fold.hpp diff --git a/local/pkgs/ufo/include/ufo/plot.hpp b/packages/ufo/include/ufo/plot.hpp similarity index 100% rename from local/pkgs/ufo/include/ufo/plot.hpp rename to packages/ufo/include/ufo/plot.hpp diff --git a/local/pkgs/ufo/include/ufo/solver.hpp b/packages/ufo/include/ufo/solver.hpp similarity index 100% rename from local/pkgs/ufo/include/ufo/solver.hpp rename to packages/ufo/include/ufo/solver.hpp diff --git a/local/pkgs/ufo/include/ufo/unfold.hpp b/packages/ufo/include/ufo/unfold.hpp similarity index 100% rename from local/pkgs/ufo/include/ufo/unfold.hpp rename to packages/ufo/include/ufo/unfold.hpp diff --git a/local/pkgs/ufo/src/fold.cpp b/packages/ufo/src/fold.cpp similarity index 100% rename from local/pkgs/ufo/src/fold.cpp rename to packages/ufo/src/fold.cpp diff --git a/local/pkgs/ufo/src/main.cpp b/packages/ufo/src/main.cpp similarity index 100% rename from local/pkgs/ufo/src/main.cpp rename to packages/ufo/src/main.cpp diff --git a/local/pkgs/ufo/src/plot.cpp b/packages/ufo/src/plot.cpp similarity index 100% rename from local/pkgs/ufo/src/plot.cpp rename to packages/ufo/src/plot.cpp diff --git a/local/pkgs/ufo/src/solver.cpp b/packages/ufo/src/solver.cpp similarity index 100% rename from local/pkgs/ufo/src/solver.cpp rename to packages/ufo/src/solver.cpp diff --git a/local/pkgs/ufo/src/unfold.cpp b/packages/ufo/src/unfold.cpp similarity index 100% rename from local/pkgs/ufo/src/unfold.cpp rename to packages/ufo/src/unfold.cpp diff --git a/local/pkgs/v-sim.nix b/packages/v-sim.nix similarity index 100% rename from local/pkgs/v-sim.nix rename to packages/v-sim.nix diff --git a/local/pkgs/vasp/constr_cell_relax.F b/packages/vasp/constr_cell_relax.F similarity index 100% rename from local/pkgs/vasp/constr_cell_relax.F rename to packages/vasp/constr_cell_relax.F diff --git a/local/pkgs/vasp/gnu/default.nix b/packages/vasp/gnu/default.nix similarity index 100% rename from local/pkgs/vasp/gnu/default.nix rename to packages/vasp/gnu/default.nix diff --git a/local/pkgs/vasp/gnu/makefile.include b/packages/vasp/gnu/makefile.include similarity index 100% rename from local/pkgs/vasp/gnu/makefile.include rename to packages/vasp/gnu/makefile.include diff --git a/local/pkgs/vasp/hdf5-nvhpc/default.nix b/packages/vasp/hdf5-nvhpc/default.nix similarity index 100% rename from local/pkgs/vasp/hdf5-nvhpc/default.nix rename to packages/vasp/hdf5-nvhpc/default.nix diff --git a/local/pkgs/vasp/hdf5-oneapi/default.nix b/packages/vasp/hdf5-oneapi/default.nix similarity index 100% rename from local/pkgs/vasp/hdf5-oneapi/default.nix rename to packages/vasp/hdf5-oneapi/default.nix diff --git a/local/pkgs/vasp/intel/default.nix b/packages/vasp/intel/default.nix similarity index 100% rename from local/pkgs/vasp/intel/default.nix rename to packages/vasp/intel/default.nix diff --git a/local/pkgs/vasp/intel/makefile.include b/packages/vasp/intel/makefile.include similarity index 100% rename from local/pkgs/vasp/intel/makefile.include rename to packages/vasp/intel/makefile.include diff --git a/local/pkgs/vasp/nvidia/default.nix b/packages/vasp/nvidia/default.nix similarity index 100% rename from local/pkgs/vasp/nvidia/default.nix rename to packages/vasp/nvidia/default.nix diff --git a/local/pkgs/vasp/nvidia/makefile.include b/packages/vasp/nvidia/makefile.include similarity index 100% rename from local/pkgs/vasp/nvidia/makefile.include rename to packages/vasp/nvidia/makefile.include diff --git a/local/pkgs/vasp/source.nix b/packages/vasp/source.nix similarity index 100% rename from local/pkgs/vasp/source.nix rename to packages/vasp/source.nix diff --git a/local/pkgs/vasp/vtst.nix b/packages/vasp/vtst.nix similarity index 100% rename from local/pkgs/vasp/vtst.nix rename to packages/vasp/vtst.nix diff --git a/local/pkgs/vasp/vtst.patch b/packages/vasp/vtst.patch similarity index 100% rename from local/pkgs/vasp/vtst.patch rename to packages/vasp/vtst.patch diff --git a/local/pkgs/vasp/vtstscripts.nix b/packages/vasp/vtstscripts.nix similarity index 100% rename from local/pkgs/vasp/vtstscripts.nix rename to packages/vasp/vtstscripts.nix diff --git a/local/pkgs/vaspkit.nix b/packages/vaspkit.nix similarity index 100% rename from local/pkgs/vaspkit.nix rename to packages/vaspkit.nix diff --git a/local/pkgs/vesta.nix b/packages/vesta.nix similarity index 100% rename from local/pkgs/vesta.nix rename to packages/vesta.nix diff --git a/local/pkgs/winjob/.clangd b/packages/winjob/.clangd similarity index 100% rename from local/pkgs/winjob/.clangd rename to packages/winjob/.clangd diff --git a/local/pkgs/winjob/.envrc b/packages/winjob/.envrc similarity index 100% rename from local/pkgs/winjob/.envrc rename to packages/winjob/.envrc diff --git a/local/pkgs/winjob/CMakeLists.txt b/packages/winjob/CMakeLists.txt similarity index 100% rename from local/pkgs/winjob/CMakeLists.txt rename to packages/winjob/CMakeLists.txt diff --git a/local/pkgs/winjob/default.nix b/packages/winjob/default.nix similarity index 100% rename from local/pkgs/winjob/default.nix rename to packages/winjob/default.nix diff --git a/local/pkgs/winjob/include/winjob/windows.hpp b/packages/winjob/include/winjob/windows.hpp similarity index 100% rename from local/pkgs/winjob/include/winjob/windows.hpp rename to packages/winjob/include/winjob/windows.hpp diff --git a/local/pkgs/winjob/src/windows.cpp b/packages/winjob/src/windows.cpp similarity index 100% rename from local/pkgs/winjob/src/windows.cpp rename to packages/winjob/src/windows.cpp diff --git a/local/pkgs/winjob/src/winjob.cpp b/packages/winjob/src/winjob.cpp similarity index 100% rename from local/pkgs/winjob/src/winjob.cpp rename to packages/winjob/src/winjob.cpp diff --git a/local/pkgs/winjob/src/winjobd.cpp b/packages/winjob/src/winjobd.cpp similarity index 100% rename from local/pkgs/winjob/src/winjobd.cpp rename to packages/winjob/src/winjobd.cpp diff --git a/local/pkgs/yoga-support.nix b/packages/yoga-support.nix similarity index 100% rename from local/pkgs/yoga-support.nix rename to packages/yoga-support.nix diff --git a/local/pkgs/zpp-bits.nix b/packages/zpp-bits.nix similarity index 100% rename from local/pkgs/zpp-bits.nix rename to packages/zpp-bits.nix diff --git a/local/pkgs/zxorm.nix b/packages/zxorm.nix similarity index 100% rename from local/pkgs/zxorm.nix rename to packages/zxorm.nix