LINUX.ORG.RU

Кеширование home-manager

 


0

2

Есть configuration.nix

{ config, pkgs, ... }:

let
  my_cfg = builtins.fromJSON (builtins.readFile /etc/nixos/.env.json);

  home-manager = builtins.fetchTarball {
    url = "${my_cfg.nodes.homeManager.url}-${my_cfg.nodes.os.version}.tar.gz";
  };

Сначала подумал, что надо как-то кешировать тарбол. А то вдруг отключат интернеты, а я даже переконфигурировать не смогу систему

{ config, pkgs, ... }:
# with config;

let
  my_cfg = builtins.fromJSON (builtins.readFile /etc/nixos/.env.json);

  home-manager = let
    localTarball = "/${my_cfg.nodes.homeManager.path}/${my_cfg.nodes.homeManager.name}-${my_cfg.nodes.os.version}.tar.gz";
  in
    if builtins.pathExists localTarball then
      builtins.fetchTarball "file://${localTarball}"
    else
      builtins.fetchTarball "${my_cfg.nodes.homeManager.url}-${my_cfg.nodes.os.version}.tar.gz";

  # home.file."Downloads/${fileName}".source = builtins.fetchurl {
  #   url = "https://github.com/nix-community/home-manager/archive/release-${version}.tar.gz";
  #   sha256 = "";
  # };

in

{

  # get home-manager tarboll
  environment.etc."/${my_cfg.nodes.homeManager.path}/${my_cfg.nodes.homeManager.name}-${my_cfg.nodes.os.version}.tar.gz".source =
    url = "${my_cfg.nodes.homeManager.url}-${my_cfg.nodes.os.version}.tar.gz";
    sha256 = "${my_cfg.nodes.homeManager.sha256}";
  };
...

Как вообще правильно закешировать home-manager? Написать деривацию с fetchTarboll и импортировать ее в configuration.nix?

★★★★