Weathercold / nixfiles

Dotfiles powered by Nix™ (plus package overlay)
MIT License
13 stars 1 forks source link

请教一下home里面的写法 #17

Open kpzhao opened 1 week ago

kpzhao commented 1 week ago

您好,我在按照您的flake结构给我的配置文件重构,现在正在配homemanager, 但是里面有个_base.nix.secret 是加密的,您方便给看下里面结构吗?方便隐去里面的私密信息吗?

Weathercold commented 1 week ago
{ self, lib, ... }:

with self.homeModules;

# Fancy
let
  echo = lib.abszero.trivial.join "echo ";
in

[
  profiles-full
  {
    abszero.emails = {
      protonmail = {
        primary = true;
        address = "weathercold.scr@proton.me";
        userName = "weathercold.scr@proton.me";
        passwordCommand = echo "<redacted>";
        imap = {
          host = "127.0.0.1";
          port = 1143;
        };
        smtp = {
          host = "127.0.0.1";
          port = 1025;
          tls.useStartTls = true;
        };
        realName = "Weathercold";
      };

      personal-gmail = {
        address = "<redacted>";
        passwordCommand = echo "<redacted>";
        flavor = "gmail.com";
        realName = "Weathercold";
      };

      school-gmail = {
        address = "<redacted>";
        passwordCommand = echo "<redacted>";
        flavor = "gmail.com";
        realName = "<redacted>";
      };

      school-outlook = {
        address = "<redacted>";
        passwordCommand = echo "<redacted>";
        flavor = "outlook.office365.com";
        realName = "<redacted>";
      };
    };
  }
]
Weathercold commented 1 week ago

我用 git-secret 加密整个文件,根据需求可以考虑 sops-nix 或者 agenix,但是这两个不支持在 eval time 读取机密

kpzhao commented 1 week ago

非常感谢,我研究一下。还有你的系统配置和home manager配置是分别build的吗?可以把home manager的配置作为flake的module吗?按照home manager manual里面添加为module提示withSystem不存在

Weathercold commented 6 days ago

没错,我的 NixOS 和 home-manager 配置是分开的,不过大多数人用 home-manager 的 NixOS module,这样的话方便一些,而且可以让 hm 配置读取系统配置。你说的把 home-manager 的配置作为 flake 的 module 我没明白,manual 里面并没有提到 flake-parts,你如果想分开配置的话定义 flake.homeConfigurations.* 就行了

kpzhao commented 6 days ago

您好,我是把home-manager作为nixos module配置的,

outputs = inputs@{ nixpkgs, home-manager, ... }: {
nixosConfigurations = {
hostname = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.jdoe = import ./home.nix;

        # Optionally, use home-manager.extraSpecialArgs to pass
        # arguments to home.nix
      }
    ];
  };
};

};

这样的话怎么引入自定义的home-manager的option呢?(比如home/modules/programs/fish.nix)