diff --git a/modules/packages/default.nix b/modules/packages/default.nix index 1724161e..3b66a9e0 100644 --- a/modules/packages/default.nix +++ b/modules/packages/default.nix @@ -25,470 +25,564 @@ inputs: _pythonPackages = mkOption { type = types.listOf types.unspecified; default = []; }; _prebuildPackages = mkOption { type = types.listOf types.unspecified; default = []; }; }; - config = let inherit (inputs.lib) mkMerge mkIf; inherit (inputs.localLib) stripeTabs; in mkMerge - [ - # >= server - { - nixos = - { - packages = with inputs.pkgs; - { - _packages = - [ - # shell - ksh - # basic tools - beep dos2unix gnugrep pv tmux screen parallel tldr cowsay jq zellij neofetch ipfetch localPackages.pslist - unstablePackages.fastfetch - # lsxx - pciutils usbutils lshw util-linux lsof - # top - iotop iftop htop btop powertop s-tui - # editor - nano bat - # downloader - wget aria2 curl - # file manager - tree exa trash-cli lsd broot file xdg-ninja mlocate - # compress - pigz rar upx unzip zip lzip p7zip - # file system management - sshfs e2fsprogs adb-sync duperemove compsize - # disk management - smartmontools hdparm - # encryption and authentication - apacheHttpd openssl ssh-to-age gnupg age sops pam_u2f yubico-piv-tool - # networking - ipset iptables iproute2 dig nettools traceroute tcping-go whois tcpdump nmap inetutils - # nix tools - nix-output-monitor nix-tree - # office - todo-txt-cli - # development - gdb try - ] ++ (with inputs.config.boot.kernelPackages; [ cpupower usbip ]); - _pythonPackages = [(pythonPackages: with pythonPackages; - [ - inquirerpy requests python-telegram-bot tqdm fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2 - certifi charset-normalizer idna orjson psycopg2 localPackages.eigengdb - ])]; - }; - users.sharedModules = [(home-inputs: - { - config.programs = - { - zsh = - { - enable = true; - initExtraBeforeCompInit = - '' - # p10k instant prompt - P10K_INSTANT_PROMPT="$XDG_CACHE_HOME/p10k-instant-prompt-''${(%):-%n}.zsh" - [[ ! -r "$P10K_INSTANT_PROMPT" ]] || source "$P10K_INSTANT_PROMPT" - HYPHEN_INSENSITIVE="true" - export PATH=~/bin:$PATH - function br - { - local cmd cmd_file code - cmd_file=$(mktemp) - if broot --outcmd "$cmd_file" "$@"; then - cmd=$(<"$cmd_file") - command rm -f "$cmd_file" - eval "$cmd" - else - code=$? - command rm -f "$cmd_file" - return "$code" - fi - } - alias todo="todo.sh" - ''; - plugins = - [ - { - file = "powerlevel10k.zsh-theme"; - name = "powerlevel10k"; - src = "${inputs.pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k"; - } - { - file = "p10k.zsh"; - name = "powerlevel10k-config"; - src = ./p10k-config; - } - { - name = "zsh-lsd"; - src = inputs.pkgs.fetchFromGitHub - { - owner = "z-shell"; - repo = "zsh-lsd"; - rev = "029a9cb0a9b39c9eb6c5b5100dd9182813332250"; - sha256 = "sha256-oWjWnhiimlGBMaZlZB+OM47jd9hporKlPNwCx6524Rk="; - }; - } - ]; - history = - { - path = "${home-inputs.config.xdg.dataHome}/zsh/zsh_history"; - extended = true; - save = 100000000; - size = 100000000; - share = true; - }; - }; - direnv = { enable = true; nix-direnv.enable = true; }; - git = - { - enable = true; - lfs.enable = true; - extraConfig = - { - core.editor = if inputs.config.nixos.system.gui.preferred then "code --wait" else "vim"; - advice.detachedHead = false; - merge.conflictstyle = "diff3"; - diff.colorMoved = "default"; - }; - package = inputs.pkgs.gitFull; - delta = - { - enable = true; - options = - { - side-by-side = true; - navigate = true; - syntax-theme = "GitHub"; - light = true; - zero-style = "syntax white"; - line-numbers-zero-style = "#ffffff"; - }; - }; - }; - ssh = - { - enable = true; - controlMaster = "auto"; - controlPersist = "1m"; - compression = true; - }; - vim = - { - enable = true; - defaultEditor = true; - packageConfigurable = inputs.config.programs.vim.package; - settings = - { - number = true; - expandtab = false; - shiftwidth = 2; - tabstop = 2; - }; - extraConfig = - '' - set clipboard=unnamedplus - colorscheme evening - ''; - }; - }; - })]; - }; - programs = - { - nix-index-database.comma.enable = true; - nix-index.enable = true; - zsh = - { - enable = true; - syntaxHighlighting.enable = true; - autosuggestions.enable = true; - enableCompletion = true; - ohMyZsh = - { - enable = true; - plugins = [ "git" "colored-man-pages" "extract" "history-substring-search" "autojump" ]; - customPkgs = with inputs.pkgs; [ zsh-nix-shell ]; - }; - }; - ccache.enable = true; - command-not-found.enable = false; - adb.enable = true; - gnupg.agent = { enable = true; enableSSHSupport = true; }; - autojump.enable = true; - git = - { - enable = true; - package = inputs.pkgs.gitFull; - lfs.enable = true; - config = - { - init.defaultBranch = "main"; - core = { quotepath = false; editor = "vim"; }; - }; - }; - }; - services = - { - fwupd.enable = true; - udev.packages = with inputs.pkgs; [ yubikey-personalization libfido2 ]; - }; - nix.settings.extra-sandbox-paths = [ inputs.config.programs.ccache.cacheDir ]; - nixpkgs.config = - { - permittedInsecurePackages = with inputs.pkgs; - [ - openssl_1_1.name electron_19.name nodejs-16_x.name python2.name electron_12.name - ]; - allowUnfree = true; - }; - home-manager = - { - useGlobalPkgs = true; - useUserPackages = true; - }; - } - # >= desktop - ( - mkIf (builtins.elem inputs.config.nixos.packages.packageSet [ "desktop" "workstation" ] ) + config = + let + inherit (inputs.lib) mkMerge mkIf; + inherit (builtins) concatLists map listToAttrs; + inherit (inputs.localLib) attrsToList; + in mkMerge + [ + # >= server { nixos = { packages = with inputs.pkgs; { - _packages = + _packages = [ - # system management - gparted snapper-gui libsForQt5.qtstyleplugin-kvantum wl-clipboard-x11 kio-fuse wl-mirror - wayland-utils clinfo glxinfo vulkan-tools dracut etcher unstablePackages.btrfs-assistant - # nix tools - ssh-to-age deploy-rs.deploy-rs nixpkgs-fmt - # instant messager - element-desktop telegram-desktop discord inputs.config.nur.repos.linyinfeng.wemeet # native - cinny-desktop # nur-xddxdd.wine-wechat thunder - # browser - google-chrome + # shell + ksh + # basic tools + beep dos2unix gnugrep pv tmux screen parallel tldr cowsay jq zellij neofetch ipfetch localPackages.pslist + unstablePackages.fastfetch + # lsxx + pciutils usbutils lshw util-linux lsof + # top + iotop iftop htop btop powertop s-tui + # editor + nano bat + # downloader + wget aria2 curl + # file manager + tree exa trash-cli lsd broot file xdg-ninja mlocate + # compress + pigz rar upx unzip zip lzip p7zip + # file system management + sshfs e2fsprogs adb-sync duperemove compsize + # disk management + smartmontools hdparm + # encryption and authentication + apacheHttpd openssl ssh-to-age gnupg age sops pam_u2f yubico-piv-tool # networking - remmina putty mtr-gui - # password and key management - bitwarden yubikey-manager yubikey-manager-qt yubikey-personalization yubikey-personalization-gui - # download - qbittorrent yt-dlp nur-xddxdd.baidupcs-go wgetpaste + ipset iptables iproute2 dig nettools traceroute tcping-go whois tcpdump nmap inetutils + # nix tools + nix-output-monitor nix-tree # office - unstablePackages.crow-translate zotero pandoc ydict + todo-txt-cli # development - scrcpy - # media - spotify yesplaymusic mpv nomacs simplescreenrecorder imagemagick gimp netease-cloud-music-gtk vlc - # text editor - localPackages.typora - # themes - orchis-theme tela-circle-icon-theme plasma-overdose-kde-theme materia-kde-theme graphite-kde-theme - arc-kde-theme materia-theme - # news - fluent-reader rssguard - # davinci-resolve playonlinux - weston cage openbox krita - genymotion hdfview electrum - ( - vscode-with-extensions.override - { - vscodeExtensions = with nix-vscode-extensions.vscode-marketplace; - (with equinusocio; [ vsc-community-material-theme vsc-material-theme-icons ]) - ++ (with github; [ copilot copilot-chat copilot-labs github-vscode-theme ]) - ++ (with intellsmi; [ comment-translate deepl-translate ]) - ++ (with ms-python; [ isort python vscode-pylance ]) - ++ (with ms-toolsai; - [ - jupyter jupyter-keymap jupyter-renderers vscode-jupyter-cell-tags vscode-jupyter-slideshow - ]) - ++ (with ms-vscode; - [ - cmake-tools cpptools cpptools-extension-pack cpptools-themes hexeditor remote-explorer - test-adapter-converter - ]) - ++ (with ms-vscode-remote; [ remote-ssh remote-containers remote-ssh-edit ]) - ++ [ - donjayamanne.githistory genieai.chatgpt-vscode fabiospampinato.vscode-diff cschlosser.doxdocgen - llvm-vs-code-extensions.vscode-clangd ms-ceintl.vscode-language-pack-zh-hans - oderwat.indent-rainbow - twxs.cmake guyutongxue.cpp-reference znck.grammarly thfriedrich.lammps leetcode.vscode-leetcode - james-yu.latex-workshop gimly81.matlab affenwiesel.matlab-formatter ckolkman.vscode-postgres - yzhang.markdown-all-in-one pkief.material-icon-theme bbenoist.nix ms-ossdata.vscode-postgresql - redhat.vscode-xml dotjoshjohnson.xml jnoortheen.nix-ide xdebug.php-debug - hbenl.vscode-test-explorer - jeff-hykin.better-cpp-syntax fredericbonnet.cmake-test-adapter mesonbuild.mesonbuild - hirse.vscode-ungit fortran-lang.linter-gfortran tboox.xmake-vscode ccls-project.ccls - feiskyer.chatgpt-copilot yukiuuh2936.vscode-modern-fortran-formatter wolframresearch.wolfram - njpipeorgan.wolfram-language-notebook brettm12345.nixfmt-vscode webfreak.debug - gruntfuggly.todo-tree - ]; - } - ) - ] ++ (with inputs.lib; filter isDerivation (attrValues plasma5Packages.kdeGear)); + gdb unstablePackages.try + ] ++ (with inputs.config.boot.kernelPackages; [ cpupower usbip ]); + _pythonPackages = [(pythonPackages: with pythonPackages; + [ + inquirerpy requests python-telegram-bot tqdm fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2 + certifi charset-normalizer idna orjson psycopg2 localPackages.eigengdb + ])]; }; - users.sharedModules = - [{ + users.sharedModules = [(home-inputs: + { + config.programs = + { + zsh = + { + enable = true; + initExtraBeforeCompInit = + '' + # p10k instant prompt + P10K_INSTANT_PROMPT="$XDG_CACHE_HOME/p10k-instant-prompt-''${(%):-%n}.zsh" + [[ ! -r "$P10K_INSTANT_PROMPT" ]] || source "$P10K_INSTANT_PROMPT" + HYPHEN_INSENSITIVE="true" + export PATH=~/bin:$PATH + function br + { + local cmd cmd_file code + cmd_file=$(mktemp) + if broot --outcmd "$cmd_file" "$@"; then + cmd=$(<"$cmd_file") + command rm -f "$cmd_file" + eval "$cmd" + else + code=$? + command rm -f "$cmd_file" + return "$code" + fi + } + alias todo="todo.sh" + ''; + plugins = + [ + { + file = "powerlevel10k.zsh-theme"; + name = "powerlevel10k"; + src = "${inputs.pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k"; + } + { + file = "p10k.zsh"; + name = "powerlevel10k-config"; + src = ./p10k-config; + } + { + name = "zsh-lsd"; + src = inputs.pkgs.fetchFromGitHub + { + owner = "z-shell"; + repo = "zsh-lsd"; + rev = "029a9cb0a9b39c9eb6c5b5100dd9182813332250"; + sha256 = "sha256-oWjWnhiimlGBMaZlZB+OM47jd9hporKlPNwCx6524Rk="; + }; + } + ]; + history = + { + path = "${home-inputs.config.xdg.dataHome}/zsh/zsh_history"; + extended = true; + save = 100000000; + size = 100000000; + share = true; + }; + }; + direnv = { enable = true; nix-direnv.enable = true; }; + git = + { + enable = true; + lfs.enable = true; + extraConfig = + { + core.editor = if inputs.config.nixos.system.gui.preferred then "code --wait" else "vim"; + advice.detachedHead = false; + merge.conflictstyle = "diff3"; + diff.colorMoved = "default"; + }; + package = inputs.pkgs.gitFull; + delta = + { + enable = true; + options = + { + side-by-side = true; + navigate = true; + syntax-theme = "GitHub"; + light = true; + zero-style = "syntax white"; + line-numbers-zero-style = "#ffffff"; + }; + }; + }; + ssh = + { + enable = true; + controlMaster = "auto"; + controlPersist = "1m"; + compression = true; + }; + vim = + { + enable = true; + defaultEditor = true; + packageConfigurable = inputs.config.programs.vim.package; + settings = + { + number = true; + expandtab = false; + shiftwidth = 2; + tabstop = 2; + }; + extraConfig = + '' + set clipboard=unnamedplus + colorscheme evening + ''; + }; + }; + })]; + }; + programs = + { + nix-index-database.comma.enable = true; + nix-index.enable = true; + zsh = + { + enable = true; + syntaxHighlighting.enable = true; + autosuggestions.enable = true; + enableCompletion = true; + ohMyZsh = + { + enable = true; + plugins = [ "git" "colored-man-pages" "extract" "history-substring-search" "autojump" ]; + customPkgs = with inputs.pkgs; [ zsh-nix-shell ]; + }; + }; + ccache.enable = true; + command-not-found.enable = false; + adb.enable = true; + gnupg.agent = { enable = true; enableSSHSupport = true; }; + autojump.enable = true; + git = + { + enable = true; + package = inputs.pkgs.gitFull; + lfs.enable = true; config = { - programs = + init.defaultBranch = "main"; + core = { quotepath = false; editor = "vim"; }; + }; + }; + }; + services = + { + fwupd.enable = true; + udev.packages = with inputs.pkgs; [ yubikey-personalization libfido2 ]; + openssh.knownHosts = + let + servers = { - chromium = + vps6 = { - enable = true; - extensions = - [ - { id = "mpkodccbngfoacfalldjimigbofkhgjn"; } # Aria2 Explorer - { id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden - { id = "kbfnbcaeplbcioakkpcpgfkobkghlhen"; } # Grammarly - { id = "ihnfpdchjnmlehnoeffgcbakfmdjcckn"; } # Pixiv Fanbox Downloader - { id = "cimiefiiaegbelhefglklhhakcgmhkai"; } # Plasma Integration - { id = "dkndmhgdcmjdmkdonmbgjpijejdcilfh"; } # Powerful Pixiv Downloader - { id = "padekgcemlokbadohgkifijomclgjgif"; } # Proxy SwitchyOmega - { id = "kefjpfngnndepjbopdmoebkipbgkggaa"; } # RSSHub Radar - { id = "abpdnfjocnmdomablahdcfnoggeeiedb"; } # Save All Resources - { id = "nbokbjkabcmbfdlbddjidfmibcpneigj"; } # SmoothScroll - { id = "onepmapfbjohnegdmfhndpefjkppbjkm"; } # SuperCopy 超级复制 - { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # uBlock Origin - { id = "gppongmhjkpfnbhagpmjfkannfbllamg"; } # Wappalyzer - { id = "hkbdddpiemdeibjoknnofflfgbgnebcm"; } # YouTube™ 双字幕 - { id = "ekhagklcjbdpajgpjgmbionohlpdbjgc"; } # Zotero Connector - { id = "ikhdkkncnoglghljlkmcimlnlhkeamad"; } # 划词翻译 - { id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } # 篡改猴 - { id = "hipekcciheckooncpjeljhnekcoolahp"; } # Tabliss - { id = "nkbihfbeogaeaoehlefnkodbefgpgknn"; } # MetaMask - ]; + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO5ZcvyRyOnUCuRtqrM/Qf+AdUe3a5bhbnfyhw2FSLDZ"; + hostnames = [ "vps6.chn.moe" "74.211.99.69" "192.168.82.1" ]; }; - obs-studio = + "initrd.vps6" = { - enable = true; - plugins = with inputs.pkgs.obs-studio-plugins; - [ wlrobs obs-vaapi obs-nvfbc droidcam-obs obs-vkcapture ]; + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB4DKB/zzUYco5ap6k9+UxeO04LL12eGvkmQstnYxgnS"; + hostnames = [ "initrd.vps6.chn.moe" "74.211.99.69" ]; + }; + vps7 = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF5XkdilejDAlg5hZZD0oq69k8fQpe9hIJylTo/aLRgY"; + hostnames = [ "vps7.chn.moe" "95.111.228.40" "192.168.82.2" ]; + }; + "initrd.vps7" = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGZyQpdQmEZw3nLERFmk2tS1gpSvXwW0Eish9UfhrRxC"; + hostnames = [ "initrd.vps7.chn.moe" "95.111.228.40" ]; + }; + nas = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIktNbEcDMKlibXg54u7QOLt0755qB/P4vfjwca8xY6V"; + hostnames = [ "[office.chn.moe]:5440" "192.168.82.4" ]; + }; + "initrd.nas" = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAoMu0HEaFQsnlJL0L6isnkNZdRq0OiDXyaX3+fl3NjT"; + hostnames = [ "[office.chn.moe]:5440" ]; + }; + pc = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSfREi19OSwQnhdsE8wiNwGSFFJwNGN0M5gN+sdrrLJ"; + hostnames = [ "192.168.8.2.3" ]; + }; + hpc = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDVpsQW3kZt5alHC6mZhay3ZEe2fRGziG4YJWCv2nn/O"; + hostnames = [ "hpc.xmu.edu.cn" ]; + }; + github = + { + ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl"; + hostnames = [ "github.com" ]; }; }; - home.file.".config/baloofilerc".text = - '' - [Basic Settings] - Indexing-Enabled=false - ''; - }; - }]; + in listToAttrs (concatLists (map + (server: + ( + if builtins.pathExists ./ssh/${server.name}_rsa.pub then + [{ + name = "${server.name}-rsa"; + value = + { + publicKey = builtins.readFile ./ssh/${server.name}_rsa.pub; + hostNames = server.value.hostnames; + }; + }] + else [] + ) + ++ ( + if builtins.pathExists ./ssh/${server.name}_ecdsa.pub then + [{ + name = "${server.name}-ecdsa"; + value = + { + publicKey = builtins.readFile ./ssh/${server.name}_ecdsa.pub; + hostNames = server.value.hostnames; + }; + }] + else [] + ) + ++ ( + if server.value ? ed25519 then + [{ + name = "${server.name}-ed25519"; + value = + { + publicKey = server.value.ed25519; + hostNames = server.value.hostnames; + }; + }] + else [] + )) + (attrsToList servers))); }; - programs = + nix.settings.extra-sandbox-paths = [ inputs.config.programs.ccache.cacheDir ]; + nixpkgs.config = { - steam.enable = true; - kdeconnect.enable = true; - wireshark = { enable = true; package = inputs.pkgs.wireshark; }; - firefox = - { - enable = true; - languagePacks = [ "zh-CN" "en-US" ]; - nativeMessagingHosts.firefoxpwa = true; - }; - vim.package = inputs.pkgs.genericPackages.vim-full; + permittedInsecurePackages = with inputs.pkgs; + [ + openssl_1_1.name electron_19.name nodejs-16_x.name python2.name electron_12.name + ]; + allowUnfree = true; }; - nixpkgs.config.packageOverrides = pkgs: + home-manager = { - telegram-desktop = pkgs.telegram-desktop.overrideAttrs (attrs: - { - patches = (if (attrs ? patches) then attrs.patches else []) ++ [ ./telegram.patch ]; - }); + useGlobalPkgs = true; + useUserPackages = true; }; - services.pcscd.enable = true; } - ) - # >= workstation - ( - mkIf (inputs.config.nixos.packages.packageSet == "workstation") - { - nixos.packages = with inputs.pkgs; + # >= desktop + ( + mkIf (builtins.elem inputs.config.nixos.packages.packageSet [ "desktop" "workstation" ] ) { - _packages = - [ - # nix tools - nix-template appimage-run nil nixd nix-alien nix-serve node2nix nix-prefetch-github prefetch-npm-deps - nix-prefetch-docker pnpm-lock-export bundix - # instant messager - zoom-us signal-desktop qq nur-xddxdd.wechat-uos slack # jail - # office - libreoffice-qt texlive.combined.scheme-full texstudio poppler_utils pdftk gnuplot pdfchain - # development - jetbrains.clion android-studio dbeaver cling clang-tools_16 ccls fprettify - # media - nur-xddxdd.svp obs-studio waifu2x-converter-cpp inkscape blender - # virtualization - wineWowPackages.stagingFull virt-viewer bottles # wine64 - # text editor - appflowy notion-app-enhanced joplin-desktop standardnotes - # math, physics and chemistry - mathematica octaveFull root ovito paraview localPackages.vesta qchem.quantum-espresso - localPackages.vasp localPackages.phonon-unfolding localPackages.vaspkit jmol localPackages.v_sim - # news - newsflash newsboat - ]; - _pythonPackages = [(pythonPackages: with pythonPackages; - [ - phonopy tensorflow keras openai scipy scikit-learn jupyterlab - ])]; - _prebuildPackages = - [ - httplib magic-enum xtensor boost cereal cxxopts ftxui yaml-cpp gfortran gcc10 python2 - unstablePackages.gcc13Stdenv - ]; - }; - programs = - { - anime-game-launcher = { enable = true; package = inputs.pkgs.anime-game-launcher; }; - honkers-railway-launcher = { enable = true; package = inputs.pkgs.honkers-railway-launcher; }; - nix-ld.enable = true; - gamemode = + nixos = { - enable = true; - settings = + packages = with inputs.pkgs; { - general.renice = 10; - gpu = + _packages = + [ + # system management + gparted snapper-gui libsForQt5.qtstyleplugin-kvantum wl-clipboard-x11 kio-fuse wl-mirror + wayland-utils clinfo glxinfo vulkan-tools dracut etcher unstablePackages.btrfs-assistant + # nix tools + ssh-to-age deploy-rs.deploy-rs nixpkgs-fmt + # instant messager + element-desktop telegram-desktop discord inputs.config.nur.repos.linyinfeng.wemeet # native + cinny-desktop # nur-xddxdd.wine-wechat thunder + # browser + google-chrome + # networking + remmina putty mtr-gui + # password and key management + bitwarden yubikey-manager yubikey-manager-qt yubikey-personalization yubikey-personalization-gui + # download + qbittorrent yt-dlp nur-xddxdd.baidupcs-go wgetpaste + # office + unstablePackages.crow-translate zotero pandoc ydict + # development + scrcpy + # media + spotify yesplaymusic mpv nomacs simplescreenrecorder imagemagick gimp netease-cloud-music-gtk vlc + # text editor + localPackages.typora + # themes + orchis-theme tela-circle-icon-theme plasma-overdose-kde-theme materia-kde-theme graphite-kde-theme + arc-kde-theme materia-theme + # news + fluent-reader rssguard + # davinci-resolve playonlinux + weston cage openbox krita + genymotion hdfview electrum + ( + vscode-with-extensions.override + { + vscodeExtensions = with nix-vscode-extensions.vscode-marketplace; + (with equinusocio; [ vsc-community-material-theme vsc-material-theme-icons ]) + ++ (with github; [ copilot copilot-chat copilot-labs github-vscode-theme ]) + ++ (with intellsmi; [ comment-translate deepl-translate ]) + ++ (with ms-python; [ isort python vscode-pylance ]) + ++ (with ms-toolsai; + [ + jupyter jupyter-keymap jupyter-renderers vscode-jupyter-cell-tags vscode-jupyter-slideshow + ]) + ++ (with ms-vscode; + [ + cmake-tools cpptools cpptools-extension-pack cpptools-themes hexeditor remote-explorer + test-adapter-converter + ]) + ++ (with ms-vscode-remote; [ remote-ssh remote-containers remote-ssh-edit ]) + ++ [ + donjayamanne.githistory genieai.chatgpt-vscode fabiospampinato.vscode-diff cschlosser.doxdocgen + llvm-vs-code-extensions.vscode-clangd ms-ceintl.vscode-language-pack-zh-hans + oderwat.indent-rainbow + twxs.cmake guyutongxue.cpp-reference znck.grammarly thfriedrich.lammps leetcode.vscode-leetcode + james-yu.latex-workshop gimly81.matlab affenwiesel.matlab-formatter ckolkman.vscode-postgres + yzhang.markdown-all-in-one pkief.material-icon-theme bbenoist.nix ms-ossdata.vscode-postgresql + redhat.vscode-xml dotjoshjohnson.xml jnoortheen.nix-ide xdebug.php-debug + hbenl.vscode-test-explorer + jeff-hykin.better-cpp-syntax fredericbonnet.cmake-test-adapter mesonbuild.mesonbuild + hirse.vscode-ungit fortran-lang.linter-gfortran tboox.xmake-vscode ccls-project.ccls + feiskyer.chatgpt-copilot yukiuuh2936.vscode-modern-fortran-formatter wolframresearch.wolfram + njpipeorgan.wolfram-language-notebook brettm12345.nixfmt-vscode webfreak.debug + gruntfuggly.todo-tree + ]; + } + ) + ] ++ (with inputs.lib; filter isDerivation (attrValues plasma5Packages.kdeGear)); + }; + users.sharedModules = + [{ + config = { - apply_gpu_optimisations = "accept-responsibility"; - nv_powermizer_mode = 1; + programs = + { + chromium = + { + enable = true; + extensions = + [ + { id = "mpkodccbngfoacfalldjimigbofkhgjn"; } # Aria2 Explorer + { id = "nngceckbapebfimnlniiiahkandclblb"; } # Bitwarden + { id = "kbfnbcaeplbcioakkpcpgfkobkghlhen"; } # Grammarly + { id = "ihnfpdchjnmlehnoeffgcbakfmdjcckn"; } # Pixiv Fanbox Downloader + { id = "cimiefiiaegbelhefglklhhakcgmhkai"; } # Plasma Integration + { id = "dkndmhgdcmjdmkdonmbgjpijejdcilfh"; } # Powerful Pixiv Downloader + { id = "padekgcemlokbadohgkifijomclgjgif"; } # Proxy SwitchyOmega + { id = "kefjpfngnndepjbopdmoebkipbgkggaa"; } # RSSHub Radar + { id = "abpdnfjocnmdomablahdcfnoggeeiedb"; } # Save All Resources + { id = "nbokbjkabcmbfdlbddjidfmibcpneigj"; } # SmoothScroll + { id = "onepmapfbjohnegdmfhndpefjkppbjkm"; } # SuperCopy 超级复制 + { id = "cjpalhdlnbpafiamejdnhcphjbkeiagm"; } # uBlock Origin + { id = "gppongmhjkpfnbhagpmjfkannfbllamg"; } # Wappalyzer + { id = "hkbdddpiemdeibjoknnofflfgbgnebcm"; } # YouTube™ 双字幕 + { id = "ekhagklcjbdpajgpjgmbionohlpdbjgc"; } # Zotero Connector + { id = "ikhdkkncnoglghljlkmcimlnlhkeamad"; } # 划词翻译 + { id = "dhdgffkkebhmkfjojejmpbldmpobfkfo"; } # 篡改猴 + { id = "hipekcciheckooncpjeljhnekcoolahp"; } # Tabliss + { id = "nkbihfbeogaeaoehlefnkodbefgpgknn"; } # MetaMask + ]; + }; + obs-studio = + { + enable = true; + plugins = with inputs.pkgs.obs-studio-plugins; + [ wlrobs obs-vaapi obs-nvfbc droidcam-obs obs-vkcapture ]; + }; + }; + home.file.".config/baloofilerc".text = + '' + [Basic Settings] + Indexing-Enabled=false + ''; }; - custom = let notify-send = "${inputs.pkgs.libnotify}/bin/notify-send"; in + }]; + }; + programs = + { + steam.enable = true; + kdeconnect.enable = true; + wireshark = { enable = true; package = inputs.pkgs.wireshark; }; + firefox = + { + enable = true; + languagePacks = [ "zh-CN" "en-US" ]; + nativeMessagingHosts.firefoxpwa = true; + }; + vim.package = inputs.pkgs.genericPackages.vim-full; + }; + nixpkgs.config.packageOverrides = pkgs: + { + telegram-desktop = pkgs.telegram-desktop.overrideAttrs (attrs: + { + patches = (if (attrs ? patches) then attrs.patches else []) ++ [ ./telegram.patch ]; + }); + }; + services.pcscd.enable = true; + } + ) + # >= workstation + ( + mkIf (inputs.config.nixos.packages.packageSet == "workstation") + { + nixos.packages = with inputs.pkgs; + { + _packages = + [ + # nix tools + nix-template appimage-run nil nixd nix-alien nix-serve node2nix nix-prefetch-github prefetch-npm-deps + nix-prefetch-docker pnpm-lock-export bundix + # instant messager + zoom-us signal-desktop qq nur-xddxdd.wechat-uos slack # jail + # office + libreoffice-qt texlive.combined.scheme-full texstudio poppler_utils pdftk gnuplot pdfchain + # development + jetbrains.clion android-studio dbeaver cling clang-tools_16 ccls fprettify + # media + nur-xddxdd.svp obs-studio waifu2x-converter-cpp inkscape blender + # virtualization + wineWowPackages.stagingFull virt-viewer bottles # wine64 + # text editor + appflowy notion-app-enhanced joplin-desktop standardnotes + # math, physics and chemistry + mathematica octaveFull root ovito paraview localPackages.vesta qchem.quantum-espresso + localPackages.vasp localPackages.phonon-unfolding localPackages.vaspkit jmol localPackages.v_sim + # news + newsflash newsboat + ]; + _pythonPackages = [(pythonPackages: with pythonPackages; + [ + phonopy tensorflow keras openai scipy scikit-learn jupyterlab + ])]; + _prebuildPackages = + [ + httplib magic-enum xtensor boost cereal cxxopts ftxui yaml-cpp gfortran gcc10 python2 + unstablePackages.gcc13Stdenv + ]; + }; + programs = + { + anime-game-launcher = { enable = true; package = inputs.pkgs.anime-game-launcher; }; + honkers-railway-launcher = { enable = true; package = inputs.pkgs.honkers-railway-launcher; }; + nix-ld.enable = true; + gamemode = + { + enable = true; + settings = { - start = "${notify-send} 'GameMode started'"; - end = "${notify-send} 'GameMode ended'"; + general.renice = 10; + gpu = + { + apply_gpu_optimisations = "accept-responsibility"; + nv_powermizer_mode = 1; + }; + custom = let notify-send = "${inputs.pkgs.libnotify}/bin/notify-send"; in + { + start = "${notify-send} 'GameMode started'"; + end = "${notify-send} 'GameMode ended'"; + }; }; }; + chromium = + { + enable = true; + extraOpts.PasswordManagerEnabled = false; + }; }; - chromium = - { - enable = true; - extraOpts.PasswordManagerEnabled = false; - }; - }; + } + ) + # apply package configs + { + environment.systemPackages = let inherit (inputs.lib.lists) subtractLists; in with inputs.config.nixos.packages; + (subtractLists excludePackages (_packages ++ extraPackages)) + ++ [ + (inputs.pkgs.python3.withPackages (pythonPackages: + subtractLists + (builtins.concatLists (builtins.map (packageFunction: packageFunction pythonPackages) + excludePythonPackages)) + (builtins.concatLists (builtins.map (packageFunction: packageFunction pythonPackages) + (_pythonPackages ++ extraPythonPackages))))) + (inputs.pkgs.callPackage ({ stdenv }: stdenv.mkDerivation + { + name = "prebuild-packages"; + propagateBuildInputs = subtractLists excludePrebuildPackages (_prebuildPackages ++ extraPrebuildPackages); + phases = [ "installPhase" ]; + installPhase = + '' + runHook preInstall + mkdir -p $out + runHook postInstall + ''; + }) {}) + ]; } - ) - # apply package configs - { - environment.systemPackages = let inherit (inputs.lib.lists) subtractLists; in with inputs.config.nixos.packages; - (subtractLists excludePackages (_packages ++ extraPackages)) - ++ [ - (inputs.pkgs.python3.withPackages (pythonPackages: - subtractLists - (builtins.concatLists (builtins.map (packageFunction: packageFunction pythonPackages) - excludePythonPackages)) - (builtins.concatLists (builtins.map (packageFunction: packageFunction pythonPackages) - (_pythonPackages ++ extraPythonPackages))))) - (inputs.pkgs.callPackage ({ stdenv }: stdenv.mkDerivation - { - name = "prebuild-packages"; - propagateBuildInputs = subtractLists excludePrebuildPackages (_prebuildPackages ++ extraPrebuildPackages); - phases = [ "installPhase" ]; - installPhase = stripeTabs - '' - runHook preInstall - mkdir -p $out - runHook postInstall - ''; - }) {}) - ]; - } - ]; + ]; } # programs.firejail = diff --git a/modules/packages/ssh/github_ecdsa.pub b/modules/packages/ssh/github_ecdsa.pub new file mode 100644 index 00000000..42de6e5c --- /dev/null +++ b/modules/packages/ssh/github_ecdsa.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg= \ No newline at end of file diff --git a/modules/packages/ssh/github_rsa.pub b/modules/packages/ssh/github_rsa.pub new file mode 100644 index 00000000..0d0f4ff0 --- /dev/null +++ b/modules/packages/ssh/github_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk= \ No newline at end of file diff --git a/modules/packages/ssh/hpc_ecdsa.pub b/modules/packages/ssh/hpc_ecdsa.pub new file mode 100644 index 00000000..0e006789 --- /dev/null +++ b/modules/packages/ssh/hpc_ecdsa.pub @@ -0,0 +1 @@ +ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBDkkl7A9kWWBoi4b5g6Vus70ja1KhPfcZZjeU1/QbYdN8PRRw/hsGklrhefslKRbym/TMFS0ko0g5WUi9G5vbGw= \ No newline at end of file diff --git a/modules/packages/ssh/hpc_rsa.pub b/modules/packages/ssh/hpc_rsa.pub new file mode 100644 index 00000000..c4f8b5d9 --- /dev/null +++ b/modules/packages/ssh/hpc_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgs8MvV2nczjGMZ548tuAhgvCEd4uHu0VhLDSwQG7Nh/UR4Pgc5T9Nf7Vfwg96Lah/pwD5my4RaWis6bLMmlkYyDBKFBOsGYQUe5J5XfZdxk8pz+7L0Hq6gPfAZAdNlUiuFVKsvkE+NF42NgJyXSYQicPbu5LQiFwZGXlW20+LO8uBQ1y1xabKVpg8XGwordduL99VepwEzeLK/st+UVfW+mKgxkf9TuxvD2fuYIDZM7y2rXqcjf4/6OXA5kACsYK1MgZSFxgO/m6+1uCC1qBDseMTA3D+Tsjf9VtcqUE9dMd/dJ/uuILHJ0+oIqkykTCecPLgJY3Vh8rAtln/lbId \ No newline at end of file diff --git a/modules/packages/ssh/nas_rsa.pub b/modules/packages/ssh/nas_rsa.pub new file mode 100644 index 00000000..33893007 --- /dev/null +++ b/modules/packages/ssh/nas_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0+xafJMnOGCHv6OLljaq8iJ3ZBaIezv7AJ9rVWJXFg/QJRYBwct35c4zaVom7If8F+Ss+BTLMp33HZ8gLpoat6LkjARjy65Ycog3NOnEposX2JjZEYXDbovxEmcJkDXAIVmnaBUi3r22z4UI8OqsHPeRXj017O0yQrQQYEAw/IO/tSNQZt2k8JHxAX50UTqGFdgkriO1fYHBocq48m0nn3sXrMuM3yBe5zy3NngOHxMn7UxjECmAElsuu/nu1x083pRnv5NSa+JxDGJ+S6Zhj3nGGNwZesa51I4cJjsYLxgmO/NxL1J86bDp6HhK9C9799ruG60pGTw6HcvbKTgx7klUgn4936wsy7qukWqp53MvqrLSJkRb/HHU9zZqvzcjbwet+Iv1OAAok5QC88j7Jgenk3nbZw4BNFd2r/8rOZuXheDnMKOa61dXxnvoAO3Euk0RPdZqW1slT/DDyD/kB6TPY7yOywNURNnrwzfSsmravKi6bGA5t2Ehhpf2LETM= \ No newline at end of file diff --git a/modules/packages/ssh/pc_rsa.pub b/modules/packages/ssh/pc_rsa.pub new file mode 100644 index 00000000..0b6f1330 --- /dev/null +++ b/modules/packages/ssh/pc_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDOyU7VvusseL2tDp7JkIXKGxRGQNHpYWVAPraUj17Xls7Z9e7HO6+GBiGP+bB9tZbzsoTNGHdXg8VaJmf98QAhhg0FcUb6IvWmfmPWzQ0MC8L+USqdDpaH7s9SOZF/yveNYCR5GOMmFdSW4OPVYIOrjPltDIe5S1SN2nOXvjxbLmuoMjg+5U4F0ii0ZaCRuMVDskeift+Amxe7iRnSzeDbECd0rJhaUb8gf3shz0Hp9lRUMej7cJH8LLP3m0s3Vk+kasKntz18MpJ6/3n+fR2aK75qkcq9FZaFA4tSIabh9eKoxlRCy7g8Qj6nNStW+ys/a1UYBFgAoTyE7e47o3dpcxR5oMLbeDwhOstWL0YOjEH1K5Wyj3eEOT71C6kuQBPcCJQ9q9hknRpW0mWe9Q6qaAzTgE9LLssijr/yTfYQk7zKEyo0i4f6buOfmyYZfnzfnCB3LiJKa98TVEEzrKYHIO44LwIkNf/YHOMDknzjYpav6HfDy+AebRHZFYhGax1YP/tP0Ve/FSq5rh6Vwuqa/zyfFUPZmZVf+EYXK7DdyuBhEZhBEu6QrjY60NRMTMLpnUZMcZXRAz9byMpAGcCYQv6gjU99ps8AkRjZNkn+FpAtDGT+oJxixQwyZMSxZ+ZuzkZGyBMeMplZXMMLICGZ2LRAgT0bxXLZUxHJBLwwnw== \ No newline at end of file diff --git a/modules/packages/ssh/vps6_rsa.pub b/modules/packages/ssh/vps6_rsa.pub new file mode 100644 index 00000000..3134de99 --- /dev/null +++ b/modules/packages/ssh/vps6_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDYiP+ELuG5KTmafVjBkY0ZSggJg+mDkvZpF8d7NljMst0YwKWV3IgHnkAGXdTd7jlRgm9HH6oc8rP2R6Q8EJmfr+xcL1IQIWKuYAoddHlpe2Ds4EE74xbgm5Elf7FpdYNHUH9XyVmMmIhVSpLw2N10jUhvYqw+h+xC2nObEKZuBOt/lqrTGbC/EMv3+sDv0ApBh8lKt2yfjt88pnAj1LKPANDgIYSyQOllHQWeUY/eD/5Qc9XWR3uWclslVaxriRmEA0sNZlOFCeRIyDbYpSzQBdcnojkwt7Z5kjhaqGlT9g00fdiqO0OMaeY/G8ki3QxqjONqTEDqK+DpEZFO6jyZARcY6ki0ANc0AO4qosEC3gEbAvVwyPwDFtyDggMTHlTzaw8iakMGSDEk10zKaUOgZYLzC2yCWYYQS5mae9wC1gkXIGD51/laeq2E7NpM+nha6kp9weLVyvwf0DLfwsiP+0qlCLrxBLTSRa0HQ+BnQMi4r16Ss7YJwLf/oXrbOVk= \ No newline at end of file diff --git a/modules/packages/ssh/vps7_rsa.pub b/modules/packages/ssh/vps7_rsa.pub new file mode 100644 index 00000000..4ece205f --- /dev/null +++ b/modules/packages/ssh/vps7_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDFwb7qi9/DvhpMvu43LRlTEC+3kPAA0KNeyk4FT4HlpRE/yxMxN6tgrP9vcx2c6TMfkRwIJKDcBuVVtKOVx+SDZo+nQBxpSz73v1qSmqlsy8D4gCk0a7cLgStb3Cvh0UZjJ5nVnxjzqY2CFnpnKYGmxL+a3qTj1KYPuA2wSsxkYVcHUfDj/uTtEDdRPaNTACsUxe1a57T/Tsjp+321+zKldYreozaABEBsexf9Z34+3vZvyQcfDB3QuxlBRPJBLik80QllpNpE1bqol8swoGEPbl/Ac7tNy+GtlwTG9SH1povmoT9K+8tjJaG2pD+z+vvgZQtJQh+aczYmEBJRZp3ksw1JH4eGqTWG/SDat9Isnx2NDhJe12b9izniDciuBScNySAazIDPidsCMUYjc9kgWdSOiODOtodj5IB+KazFVJgfpmzPv97LHVdjvR74usrgbFw2mYCw2YEiL3xjDYpQGmXSNklsQLwJiBe59oyS4QNpNYQzYD9StjgRIdvtmiM= \ No newline at end of file