NixOS a jazykovy balicek pre Libreoffice

Dobry den,

rad by som sa opytal ako sa v NixOS da do Libreoffice doinstalovat balik jazykovej podpory SK. V zaklade ma podporu CS a dalsich 21 jazykov ale SK tam nie je.

Zistil som ze v configu je su len : langs ? [ “ar” “ca” “cs” “da” “de” “en-GB” “en-US” “eo” “es” “fr” “hu” “it” “ja” “nl” “pl” “pt” “pt-BR” “ro” “ru” “sl” “tr” “uk” “zh-CN” ]

Dakujem

První nápad byl udělat to přes override:

{ config, pkgs, ... }:
let
  libreofficeSk = pkgs.libreoffice.override { langs = [ "sk" ]; }
in {
  environment.systemPackages = [ libreofficeSk ];
}

Nicméně to nefunguje, protože libreoffice je schovaný za nějakým wrapperem, více jsem to nezkoumal.

Další možnost je udělat to přímo přes callPackage. Podívej se do pkgs/top-level/all-packages.nix, jak je tam definován libreoffice. Je to cca

libreoffice = hiPrio libreoffice-still;
# ...
libreoffice-still = lowPrio (callPackage ../applications/office/libreoffice/wrapper.nix {
  unwrapped = callPackage ../applications/office/libreoffice {
    variant = "still";
  };
});

Takže možná (do /etc/nixos/configuration.nix):

{ config, pkgs, ... }:
let
  libreofficeSk = pkgs.callPackage <nixpkgs/pkgs/applications/office/libreoffice/wrapper.nix> {
    unwrapped = pkgs.callPackage <nixpkgs/pkgs/applications/office/libreoffice> {
      variant = "still";
      langs = [ "sk" ]; # + další jazyky co chceš mít
    };
  };
in {
  environment.systemPackages = [ libreofficeSk ];
}

Nezkoušel jsem, ale mohlo by to fungovat x)

Dakujem idem skusit a dam vediet.

Tak som vsetky moznosti skusal kazda vypisovala kopec chyb. Mam sem dat ten zoznam ?

dej :slight_smile:

ja bych k tomu dodal, ze vykopirovat si z nixpkgs neco celyho a upravit si to pro sebe ve svy konfiguraci, neni zas takova ostuda, jak se muze zdat (akorat mozna prace navic potom casem) - no a nekdy, nekdy je uplne nejlepsi udelat rovnou malinkej pull request, aby se do upstream nixpkgs tech 5 znaku i s mezerou - ' "sk"' - proste rovnou pridalo :slight_smile:

1 Like

sudo nixos-rebuild switch

error:
       … while evaluating the attribute 'config'

         at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:322:9:

          321|         options = checked options;
          322|         config = checked (removeAttrs config [ "_module" ]);
             |         ^
          323|         _module = checked (config._module);

       … while calling the 'seq' builtin

         at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:322:18:

          321|         options = checked options;
          322|         config = checked (removeAttrs config [ "_module" ]);
             |                  ^
          323|         _module = checked (config._module);

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: syntax error, unexpected '{'

       at /etc/nixos/configuration.nix:132:1:

          131|
          132| { config, pkgs, ... }:
             | ^
          133| let
building Nix...
error:
       … while evaluating the attribute 'config'

         at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:322:9:

          321|         options = checked options;
          322|         config = checked (removeAttrs config [ "_module" ]);
             |         ^
          323|         _module = checked (config._module);

       … while calling the 'seq' builtin

         at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:322:18:

          321|         options = checked options;
          322|         config = checked (removeAttrs config [ "_module" ]);
             |                  ^
          323|         _module = checked (config._module);

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: syntax error, unexpected '{'

       at /etc/nixos/configuration.nix:132:1:

          131|
          132| { config, pkgs, ... }:
             | ^
          133| let
building the system configuration...
error:
       … while evaluating the attribute 'config.system.build.toplevel'

         at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:322:9:

          321|         options = checked options;
          322|         config = checked (removeAttrs config [ "_module" ]);
             |         ^
          323|         _module = checked (config._module);

       … while calling the 'seq' builtin

         at /nix/var/nix/profiles/per-user/root/channels/nixos/lib/modules.nix:322:18:

          321|         options = checked options;
          322|         config = checked (removeAttrs config [ "_module" ]);
             |                  ^
          323|         _module = checked (config._module);

       (stack trace truncated; use '--show-trace' to show the full trace)

       error: syntax error, unexpected '{'

       at /etc/nixos/configuration.nix:132:1:

          131|
          132| { config, pkgs, ... }:
             | ^
          133| let

Ukaž celou konfiguraci, nejspíše jsi to tam špatně vložil. Pokud to máš v /etc/nixos/configuration.nix, tak tu { config, pkgs, ... }: funkci tam musíš mít jen jednou na začátku souboru, let ... in sekce se většinou dává pod tu hlavičku funkce a environment.systemPackages vložíš mezi ostatní konfigurační volby do attrsetu co ta funkce vrací. Pokud už tam environment.systemPackages máš, tak do něj přidáš libreofficeSk. Příště prosím posílej rovnou chyby i konfiguraci, které se týkají.

Ještě upozorním, že ta konfigurace co jsem posílal platí pro NixOS 24.05, ve 23.11 to je trochu jinak a fungovat to nejspíš nebude. Tu override verzi jsem sem dával jen pro ukázku, jak to může vypadat u jednodušších balíčků… pro libreoffice je potřeba ta druhá verze s callPackage. Teď jsem to zkoušel a došlo to až ke kompilaci libreoffice, takže by to mohlo být ok.

Dakujem idem skusit, tiez manapadlo ze " { config, pkgs, ... " tam len jeden krat moze byt, skusal som ale tiez chyby. Dam vediet ci sa podarilo

Alternativně můžeš dát

{ config, pkgs, ... }:
let
  libreofficeSk = pkgs.callPackage <nixpkgs/pkgs/applications/office/libreoffice/wrapper.nix> {
    unwrapped = pkgs.callPackage <nixpkgs/pkgs/applications/office/libreoffice> {
      variant = "still";
      langs = [ "sk" ]; # + další jazyky co chceš mít
    };
  };
in {
  environment.systemPackages = [ libreofficeSk ];
}

do /etc/nixos/libreoffice-sk.nix a potom v configuration.nix to importovat, aby to vypadalo takto:

{ config, pkgs, ... }:
{
  imports = [
    ./libreoffice-sk.nix
  ];

  # zbytek tvojí konfigurace
}

To už záleží na tobě, co se ti více libí :slight_smile:

Zdravim,

tak konecne toto posledne nastavenie preslo, parada, skompilovalo cely office a bolo. Ale bolo by jednoduchsie to tam pullnut ja to asi nezvladnem neviem moc s gitom.

Dakujem za pomoc

Jednoduche zmeny se daji udelat primo na webu GitHubu, bez pouziti gitu. Das edit na soubor a vygeneruje ti to samo vlastni fork/vetev a pull request.