diff --git a/.sops.yaml b/.sops.yaml index 4c42092..dac73f2 100644 --- a/.sops.yaml +++ b/.sops.yaml @@ -4,7 +4,6 @@ keys: - &host-raspite age1nugzw24upk8pz5lyz2z89qk8se4gpcsg3ypcs58nykncr56sevrsm8qpvj - &host-sgp-00 age13s6rwd3wjk2x5wkn69tdczhl3l5d7mfmlv90efsv4q67jne43qss9tcakx - &host-tok-00 age1t5nw2jx4dw67jkf72uxcxt72j7lq3xyj35lvl09f8kala90h2g2s2a5yvj - - &host-la-00 age1fw2sqaa5s9c8ml6ncsexkj8ar4288387ju92ytjys4awf9aw6smqqz94dh - &host-massicot age1jle2auermhswqtehww9gqada8car5aczrx43ztzqf9wtcld0sfmqzaecta creation_rules: - path_regex: machines/calcite/secrets.yaml @@ -32,11 +31,6 @@ creation_rules: - age: - *xin - *host-tok-00 - - path_regex: machines/dolomite/secrets/la-00.yaml - key_groups: - - age: - - *xin - - *host-la-00 - path_regex: machines/secrets.yaml key_groups: - age: @@ -45,7 +39,6 @@ creation_rules: - *host-raspite - *host-sgp-00 - *host-tok-00 - - *host-la-00 - *host-massicot - path_regex: home/xin/secrets.yaml key_groups: diff --git a/machines/calcite/configuration.nix b/machines/calcite/configuration.nix index c31ce3e..f906f3b 100644 --- a/machines/calcite/configuration.nix +++ b/machines/calcite/configuration.nix @@ -203,7 +203,6 @@ element-desktop tdesktop qq - wechat-uos # Password manager bitwarden diff --git a/machines/dolomite/bandwagon.nix b/machines/dolomite/bandwagon.nix deleted file mode 100644 index 853f8d8..0000000 --- a/machines/dolomite/bandwagon.nix +++ /dev/null @@ -1,38 +0,0 @@ -{ config, lib, pkgs, modulesPath, ... }: -let - cfg = config.isBandwagon; -in -{ - imports = [ (modulesPath + "/profiles/qemu-guest.nix") ]; - - - options = { - isBandwagon = lib.mkEnableOption "Bandwagon instance"; - }; - - config = lib.mkIf cfg.isBandwagon { - boot.initrd.availableKernelModules = [ "ata_piix" "xhci_pci" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-label/NIXROOT"; - fsType = "xfs"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-label/NIXBOOT"; - fsType = "vfat"; - }; - - swapDevices = [ ]; - - boot.loader.grub.enable = lib.mkForce true; - boot.loader.grub.version = lib.mkForce 2; - boot.loader.grub.device = lib.mkForce "/dev/sda"; - networking.useDHCP = false; - networking.interfaces.ens18.useDHCP = true; - networking.interfaces.ens19.useDHCP = true; - }; -} diff --git a/machines/dolomite/default.nix b/machines/dolomite/default.nix index 15f7e2e..1599db5 100644 --- a/machines/dolomite/default.nix +++ b/machines/dolomite/default.nix @@ -1,19 +1,12 @@ { inputs, config, pkgs, lib, modulesPath, ... }: -let - awsHosts = [ "sgp-00" "tok-00 "]; - bwgHosts = [ "la-00" ]; -in { imports = [ ../sops.nix - ./bandwagon.nix - ./lightsail.nix + "${modulesPath}/virtualisation/amazon-image.nix" ]; config = { - isBandwagon = builtins.elem config.networking.hostName bwgHosts; - isLightsail = builtins.elem config.networking.hostName awsHosts; sops = { secrets = { wg_private_key = { @@ -26,6 +19,7 @@ in }; }; }; + boot.loader.grub.device = lib.mkForce "/dev/nvme0n1"; boot.kernel.sysctl = { "net.core.default_qdisc" = "fq"; "net.ipv4.tcp_congestion_control" = "bbr"; @@ -45,9 +39,9 @@ in custom.prometheus = { enable = false; - exporters.enable = false; + exporters.enable = true; grafana = { - enable = false; + enable = true; password_file = config.sops.secrets.grafana_cloud_api.path; }; }; diff --git a/machines/dolomite/lightsail.nix b/machines/dolomite/lightsail.nix deleted file mode 100644 index 187c6ff..0000000 --- a/machines/dolomite/lightsail.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ config, lib, pkgs, modulesPath, ... }: -let - cfg = config.isLightsail; -in -{ - imports = [ "${modulesPath}/virtualisation/amazon-image.nix" ]; - options = { - isLightsail = lib.mkEnableOption "Lightsail instance"; - }; - config = lib.mkIf cfg.isLightsail{ - boot.loader.grub.device = lib.mkForce "/dev/nvme0n1"; - }; -} diff --git a/machines/dolomite/secrets/la-00.yaml b/machines/dolomite/secrets/la-00.yaml deleted file mode 100644 index 266dae5..0000000 --- a/machines/dolomite/secrets/la-00.yaml +++ /dev/null @@ -1,31 +0,0 @@ -wg_private_key: ENC[AES256_GCM,data:jz/03kP/dj625Jweu0MEw9aGm3Z3M1f43cZqGy2eElCIDhD78n+zZAqOM8c=,iv:fZxuvZLx97YyDoafQXbqVYjqRYzZq90PJiri9vdjwro=,tag:0A9sGnSl3y3gpEuvsdRtGg==,type:str] -wg_ipv6_local_addr: ENC[AES256_GCM,data:W/uR+9kAKdXViAbZ0vEhC2eNwlzqX0x+LpzLrLCmQuVgRbZAtJCqfeE=,iv:pMZumU7fMV5MYX59hO7SEMLlG4m8DdPXeAiNgLxNzZk=,tag:xdGBpOBdWlc8Q9BDMv04sA==,type:str] -sops: - kms: [] - gcp_kms: [] - azure_kv: [] - hc_vault: [] - age: - - recipient: age1uw059wcwfvd9xuj0hpqzqpeg7qemecspjrsatg37wc7rs2pumfdsgken0c - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4WjRVY3BKdVU1WERrVzla - L1NNYWp2SFZEaW84b0h1clFGRHVmRDhnM3o0CkUrZjZKNHp2TGtrTXpyOHNVckJw - VURjOEVaR3VQU1pJY2NaOFBQRjVIdWcKLS0tIFBQRWRnNnk4aWxsQVhhdUdVWWpy - aG9Oa3lOY0JjY2tFU3ZTazcyZW5SM0kKRfTrM65aI5LMOHoGsls3PWChrY5pEz91 - EERpRd552+PxYBKvumI59mtdlD263d5kmlTxIIZXTOJ2fcl1bii2bg== - -----END AGE ENCRYPTED FILE----- - - recipient: age1fw2sqaa5s9c8ml6ncsexkj8ar4288387ju92ytjys4awf9aw6smqqz94dh - enc: | - -----BEGIN AGE ENCRYPTED FILE----- - YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBTdzk4ajV5ekNpZXNGTHdD - aVBLZDlSbzE1aG5LT0cvVVVlVDBNOWtackNVCjVnZDhYZmFoT21DZHNYT2pMVDF6 - ZW5UY1ZFRFdtbDdPZHZIWUVuWjhJMk0KLS0tIGR4UUYwcjJtZUFYYlJSS2d6Q3hZ - WVJYSWhOaTEvNUdYTXV6OThPenJaY0UKv3WK6gacUxO6PFklkW+jDMG5FgIUuEvN - RvvI9ZXRD4QwKW1mpVrxbC+fRqlKawyyyyikvHFGJvpts4/88IcgUQ== - -----END AGE ENCRYPTED FILE----- - lastmodified: "2024-04-15T11:37:57Z" - mac: ENC[AES256_GCM,data:iCgvJMijsUjdBT9hMQx4owYkbp2nV1jORB5HGtz5IPHgI9A5FXAAPFtaSGgQSI3twSkYMU94NULjumCyyWt3syH5KK9itHgHwONyVFieyXLiWozqpN2Z0SA5G4SnK3E6X273br9gwNAj33I2MdS/3K8b4EOO2yEzilWmrW7f3rk=,iv:UD7uHrtq4O6+EsWFrjegTXHtQUFcnhKsu4J0e0srDtk=,tag:b0eJEeUJPwi4+rDPeBY7oA==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.8.1 diff --git a/modules/home-manager/vscode.nix b/modules/home-manager/vscode.nix index ef5f45a..f164de4 100644 --- a/modules/home-manager/vscode.nix +++ b/modules/home-manager/vscode.nix @@ -3,139 +3,62 @@ with lib; let cfg = config.custom-hm.vscode; - - packages = { - nixPackages = { - systemPackages = with pkgs; [ nixd nixpkgs-fmt ]; - extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ - jnoortheen.nix-ide - ]; - settings = { - "nix.enableLanguageServer" = true; - "nix.formatterPath" = "nixpkgs-fmt"; - "nix.serverPath" = "nixd"; - }; - }; - cxxPackages = { - systemPackages = with pkgs; [ clang-tools ]; - extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ - llvm-vs-code-extensions.vscode-clangd - (ms-vscode.cmake-tools.overrideAttrs (_: { sourceRoot = "extension"; })) - twxs.cmake - ]; - settings = { - "cmake.configureOnEdit" = false; - "cmake.showOptionsMovedNotification" = false; - "cmake.showNotAllDocumentsSavedQuestion" = false; - }; - }; - pythonPackages = { - systemPackages = with pkgs; [ ]; - extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ - ms-python.python - ]; - settings = { }; - }; - scalaPackages = { - systemPackages = with pkgs; [ ]; - extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ - scala-lang.scala - scalameta.metals - ]; - settings = { }; - }; - latexPackages = { - systemPackages = with pkgs; [ texliveSmall ]; - extension = with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ - james-yu.latex-workshop - ]; - settings = { - "latex-workshop.latex.autoBuild.run" = "never"; - "latex-workshop.latex.tools" = [ - { "name" = "xelatex"; - "command" = "xelatex"; - "args" = [ "-synctex=1" "-interaction=nonstopmode" "-file-line-error" "-pdf" "%DOCFILE%" ]; - } - { "name" = "pdflatex"; - "command" = "pdflatex"; - "args" = [ "-synctex=1" "-interaction=nonstopmode" "-file-line-error" "%DOCFILE%" ]; - } - { "name" = "bibtex"; "command" = "bibtex"; "args" = [ "%DOCFILE%" ]; } - ]; - "latex-workshop.latex.recipes" = [ - { "name" = "xelatex"; "tools" = [ "xelatex" ]; } - { "name" = "pdflatex"; "tools" = [ "pdflatex" ]; } - { "name" = "xe->bib->xe->xe"; "tools" = [ "xelatex" "bibtex" "xelatex" "xelatex" ]; } - { "name" = "pdf->bib->pdf->pdf"; "tools" = [ "pdflatex" "bibtex" "pdflatex" "pdflatex" ]; } - ]; - "[latex]" = { - "editor.formatOnPaste" = false; - "editor.suggestSelection" = "recentlyusedbyprefix"; - "editor.wordWrap" = "bounded"; - "editor.wordWrapColumn" = 80; - "editor.unicodeHighlight.ambiguousCharacters" = false; - }; - }; - }; - }; - - languages = [ "nix" "cxx" "python" "scala" "latex" ]; - zipAttrsWithLanguageOption = (attr: - (map (l: (lib.mkIf cfg.languages.${l} packages."${l}Packages".${attr})) languages) - ); in { options.custom-hm.vscode = { enable = mkEnableOption "Vscode config"; - languages = { - nix = mkOption { - type = lib.types.bool; - default = true; - }; - cxx = mkEnableOption "C++"; - python = mkEnableOption "Python"; - scala = mkEnableOption "Scala"; - latex = mkEnableOption "Latex"; - }; }; config = mkIf cfg.enable { - home.packages = lib.mkMerge ([ - [ pkgs.clang-tools ] - ] ++ zipAttrsWithLanguageOption "systemPackages"); + home.packages = with pkgs; [ + pkgs.wl-clipboard-x11 + ]; programs.vscode = { enable = true; enableUpdateCheck = false; enableExtensionUpdateCheck = false; mutableExtensionsDir = false; - extensions = lib.mkMerge ([ - (with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ - mkhl.direnv + extensions = (with inputs.nix-vscode-extensions.extensions.${pkgs.system}.vscode-marketplace; [ + mkhl.direnv - ms-azuretools.vscode-docker - ms-vscode-remote.remote-ssh - vscodevim.vim - github.vscode-pull-request-github - gruntfuggly.todo-tree # todo highlight + bbenoist.nix + ms-azuretools.vscode-docker + ms-vscode-remote.remote-ssh + vscodevim.vim + github.vscode-pull-request-github + gruntfuggly.todo-tree # todo highlight - # Markdown - davidanson.vscode-markdownlint - # Latex - # Scale / chisel - sterben.fpga-support + # Language support + # Python + ms-python.python + # Markdown + davidanson.vscode-markdownlint + # C/C++ + llvm-vs-code-extensions.vscode-clangd + # Nix + jnoortheen.nix-ide + # Latex + james-yu.latex-workshop + # Vue + vue.volar + # Scale / chisel + scala-lang.scala + scalameta.metals - ms-vscode-remote.remote-ssh-edit - mushan.vscode-paste-image - ]) - (with pkgs.vscode-extensions; [ - waderyan.gitblame - catppuccin.catppuccin-vsc - # Rust - rust-lang.rust-analyzer - # ]) ++ ; - ]) - ] ++ zipAttrsWithLanguageOption "extension"); - userSettings = lib.mkMerge ([ - {"workbench.colorTheme" = "Catppuccin Macchiato"; + (ms-vscode.cmake-tools.overrideAttrs (_: { sourceRoot = "extension"; })) + twxs.cmake + + sterben.fpga-support + + ms-vscode-remote.remote-ssh-edit + mushan.vscode-paste-image + ]) ++ (with pkgs.vscode-extensions; [ + waderyan.gitblame + catppuccin.catppuccin-vsc + # Rust + rust-lang.rust-analyzer + ]); + userSettings = { + "workbench.colorTheme" = "Catppuccin Macchiato"; "terminal.integrated.sendKeybindingsToShell" = true; "extensions.ignoreRecommendations" = true; "files.autoSave" = "afterDelay"; @@ -147,10 +70,80 @@ in "git.autofetch" = false; "window.zoomLevel" = -1; - "extensions.experimental.affinity" = { - "vscodevim.vim" = 1; + "nix.enableLanguageServer" = true; + + "latex-workshop.latex.autoBuild.run" = "never"; + "latex-workshop.latex.tools" = [ + { + "name" = "xelatex"; + "command" = "xelatex"; + "args" = [ + "-synctex=1" + "-interaction=nonstopmode" + "-file-line-error" + "-pdf" + "%DOCFILE%" + ]; + } + { + "name" = "pdflatex"; + "command" = "pdflatex"; + "args" = [ + "-synctex=1" + "-interaction=nonstopmode" + "-file-line-error" + "%DOCFILE%" + ]; + } + { + "name" = "bibtex"; + "command" = "bibtex"; + "args" = [ + "%DOCFILE%" + ]; + } + ]; + "latex-workshop.latex.recipes" = [ + { + "name" = "xelatex"; + "tools" = [ + "xelatex" + ]; + } + { + "name" = "pdflatex"; + "tools" = [ + "pdflatex" + ]; + } + { + "name" = "xe->bib->xe->xe"; + "tools" = [ + "xelatex" + "bibtex" + "xelatex" + "xelatex" + ]; + } + { + "name" = "pdf->bib->pdf->pdf"; + "tools" = [ + "pdflatex" + "bibtex" + "pdflatex" + "pdflatex" + ]; + } + ]; + "[latex]" = { + "editor.formatOnPaste" = false; + "editor.suggestSelection" = "recentlyusedbyprefix"; + "editor.wordWrap" = "bounded"; + "editor.wordWrapColumn" = 80; + "editor.unicodeHighlight.ambiguousCharacters" = false; }; - }] ++ zipAttrsWithLanguageOption "settings"); + "cmake.configureOnEdit" = false; + }; }; }; } diff --git a/oci-images/nix-ci-base/flake.nix b/oci-images/nix-ci-base/flake.nix index b45cd9f..56bba4f 100644 --- a/oci-images/nix-ci-base/flake.nix +++ b/oci-images/nix-ci-base/flake.nix @@ -40,8 +40,6 @@ "https://nix-community.cachix.org" ]; - accept-flake-config = "true"; - log-lines = "300"; trusted-public-keys = [ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" diff --git a/overlays/add-pkgs.nix b/overlays/add-pkgs.nix index 5759252..2a8aa2f 100644 --- a/overlays/add-pkgs.nix +++ b/overlays/add-pkgs.nix @@ -3,8 +3,8 @@ { nixpkgs.overlays = [ (self: super: { - ssh-tpm-agent = pkgs.callPackage ./pkgs/ssh-tpm-agent.nix { }; - wechat-uos = pkgs.callPackage ./pkgs/wechat-uos.nix { }; + ssh-tpm-agent = + pkgs.callPackage ./pkgs/ssh-tpm-agent.nix { }; }) ]; } diff --git a/overlays/pkgs/wechat-uos.nix b/overlays/pkgs/wechat-uos.nix deleted file mode 100644 index 83d3cfd..0000000 --- a/overlays/pkgs/wechat-uos.nix +++ /dev/null @@ -1,239 +0,0 @@ -{ stdenvNoCC -, stdenv -, lib -, fetchurl -, requireFile -, dpkg -, nss -, nspr -, xorg -, pango -, zlib -, atkmm -, libdrm -, libxkbcommon -, xcbutilwm -, xcbutilimage -, xcbutilkeysyms -, xcbutilrenderutil -, mesa -, alsa-lib -, wayland -, openssl_1_1 -, atk -, qt6 -, at-spi2-atk -, at-spi2-core -, dbus -, cups -, gtk3 -, libxml2 -, cairo -, freetype -, fontconfig -, vulkan-loader -, gdk-pixbuf -, libexif -, ffmpeg -, pulseaudio -, systemd -, libuuid -, expat -, bzip2 -, glib -, libva -, libGL -, libnotify -, buildFHSEnv -, writeShellScript -, /** - License for wechat-uos, packed in a gz archive named "license.tar.gz". - It should have the following files: - license.tar.gz - ├── etc - │ ├── lsb-release - │ └── os-release - └── var - ├── lib - │ └── uos-license - │ └── .license.json - └── uos - └── .license.key - */ - uosLicense ? requireFile { - name = "license.tar.gz"; - url = "https://www.uniontech.com"; - sha256 = "53760079c1a5b58f2fa3d5effe1ed35239590b288841d812229ef4e55b2dbd69"; - } -}: -let - wechat-uos-env = stdenvNoCC.mkDerivation { - meta.priority = 1; - name = "wechat-uos-env"; - buildCommand = '' - mkdir -p $out/etc - mkdir -p $out/lib/license - mkdir -p $out/usr/bin - mkdir -p $out/usr/share - mkdir -p $out/opt - mkdir -p $out/var - ln -s ${wechat}/opt/* $out/opt/ - ln -s ${wechat}/usr/lib/wechat-uos/license/etc/os-release $out/etc/os-release - ln -s ${wechat}/usr/lib/wechat-uos/license/etc/lsb-release $out/etc/lsb-release - ln -s ${wechat}/usr/lib/wechat-uos/license/var/* $out/var/ - ln -s ${wechat}/usr/lib/wechat-uos/license/libuosdevicea.so $out/lib/license/ - ''; - preferLocalBuild = true; - }; - - wechat-uos-runtime = with xorg; [ - stdenv.cc.cc - stdenv.cc.libc - pango - zlib - xcbutilwm - xcbutilimage - xcbutilkeysyms - xcbutilrenderutil - libX11 - libXt - libXext - libSM - libICE - libxcb - libxkbcommon - libxshmfence - libXi - libXft - libXcursor - libXfixes - libXScrnSaver - libXcomposite - libXdamage - libXtst - libXrandr - libnotify - atk - atkmm - cairo - at-spi2-atk - at-spi2-core - alsa-lib - dbus - cups - gtk3 - gdk-pixbuf - libexif - ffmpeg - libva - freetype - fontconfig - libXrender - libuuid - expat - glib - nss - nspr - libGL - libxml2 - pango - libdrm - mesa - vulkan-loader - systemd - wayland - pulseaudio - qt6.qt5compat - openssl_1_1 - bzip2 - ]; - - wechat = stdenvNoCC.mkDerivation - rec { - pname = "wechat-uos"; - version = "1.0.0.238"; - - src = { - x86_64-linux = fetchurl { - url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_amd64.deb"; - hash = "sha256-NxAmZ526JaAzAjtAd9xScFnZBuwD6i2wX2/AEqtAyWs="; - }; - aarch64-linux = fetchurl { - url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_arm64.deb"; - hash = "sha256-3ru6KyBYXiuAlZuWhyyvtQCWbOJhGYzker3FS0788RE="; - }; - loongarch64-linux = fetchurl { - url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.wechat/com.tencent.wechat_${version}_loongarch64.deb"; - hash = "sha256-iuJeLMKD6v8J8iKw3+cyODN7PZQrLpi9p0//mkI0ujE="; - }; - }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported."); - - # Don't blame about this. WeChat requires some binary from here to work properly - uosSrc = { - x86_64-linux = fetchurl { - url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.weixin/com.tencent.weixin_2.1.5_amd64.deb"; - hash = "sha256-vVN7w+oPXNTMJ/g1Rpw/AVLIytMXI+gLieNuddyyIYE="; - }; - aarch64-linux = fetchurl { - url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.weixin/com.tencent.weixin_2.1.5_arm64.deb"; - hash = "sha256-XvGFPYJlsYPqRyDycrBGzQdXn/5Da1AJP5LgRVY1pzI="; - }; - loongarch64-linux = fetchurl { - url = "https://pro-store-packages.uniontech.com/appstore/pool/appstore/c/com.tencent.weixin/com.tencent.weixin_2.1.5_loongarch64.deb"; - hash = "sha256-oa6rLE6QXMCPlbebto9Tv7xT3fFqYIlXL6WHpB2U35s="; - }; - }.${stdenv.system} or (throw "${pname}-${version}: ${stdenv.system} is unsupported."); - - inherit uosLicense; - - nativeBuildInputs = [ dpkg ]; - - unpackPhase = '' - runHook preUnpack - dpkg -x $src ./wechat-uos - dpkg -x $uosSrc ./wechat-uos-old-source - tar -xvf $uosLicense - runHook postUnpack - ''; - - installPhase = '' - runHook preInstall - mkdir -p $out - cp -r wechat-uos/* $out - mkdir -pv $out/usr/lib/wechat-uos/license - cp -r license/* $out/usr/lib/wechat-uos/license - cp -r wechat-uos-old-source/usr/lib/license/libuosdevicea.so $out/usr/lib/wechat-uos/license/ - runHook postInstall - ''; - - meta = with lib; { - description = "Messaging app"; - homepage = "https://weixin.qq.com/"; - license = licenses.unfree; - platforms = [ "x86_64-linux" "aarch64-linux" "loongarch64-linux" ]; - sourceProvenance = with sourceTypes; [ binaryNativeCode ]; - maintainers = with maintainers; [ pokon548 ]; - mainProgram = "wechat-uos"; - }; - }; -in -buildFHSEnv { - inherit (wechat) name meta; - runScript = writeShellScript "wechat-uos-launcher" '' - export QT_QPA_PLATFORM=xcb - export LD_LIBRARY_PATH=${lib.makeLibraryPath wechat-uos-runtime} - ${wechat.outPath}/opt/apps/com.tencent.wechat/files/wechat - ''; - extraInstallCommands = '' - mkdir -p $out/share/applications - mkdir -p $out/share/icons - cp -r ${wechat.outPath}/opt/apps/com.tencent.wechat/entries/applications/com.tencent.wechat.desktop $out/share/applications - cp -r ${wechat.outPath}/opt/apps/com.tencent.wechat/entries/icons/* $out/share/icons/ - mv $out/bin/$name $out/bin/wechat-uos - substituteInPlace $out/share/applications/com.tencent.wechat.desktop \ - --replace-quiet 'Exec=/usr/bin/wechat' "Exec=$out/bin/wechat-uos --" - ''; - targetPkgs = pkgs: [ wechat-uos-env ]; - - extraOutputsToInstall = [ "usr" "var/lib/uos" "var/uos" "etc" ]; -}