zaphyra's git: nixfiles

zaphyra's nixfiles

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
93 
94 
95 
96 
97 
{
  inputs,
  povSelf,
  config,
  lib,
  pkgs,
  homeManagerModules,
  ...
}:
let
  inherit (lib) types;
  cfg = lib.getAttrFromPath povSelf config;

in
{

  options.enable = {
    type = types.bool;
    default = false;
  };

  config = lib.mkIf cfg.enable (
    lib.mkMerge [
      {
        sops.secrets.zaphyraPassword = {
          neededForUsers = true;
          sopsFile = inputs.self.sopsSecrets.common;
        };

        users.users.zaphyra = {
          uid = 1001;
          description = "Katja";
          hashedPasswordFile = config.sops.secrets.zaphyraPassword.path;
          isNormalUser = true;
          extraGroups = [
            "ssh"
            "wheel"
            "networkmanager"
          ];
          openssh.authorizedKeys.keys = [
            (builtins.readFile "${pkgs.zaphyra-website}/ssh_pubkey.asc")
            "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPnNyOCX+PopTHuNrfBwEmPM7FC6oM7nFgW/2tvW7ddT"
          ];
        };
      }

      (lib.mkIf config.modules.homeManager.enable {
        home-manager.users.zaphyra = {
          imports = lib.concatLists [
            [
              homeManagerModules.common.home
              homeManagerModules.zaphyra.home
            ]

            (lib.optionals config.modules.filesystem.impermanence.home.enable [
              homeManagerModules.zaphyra.impermanence
            ])

            (lib.optionals config.modules.presets.graphical.enable (
              with homeManagerModules.zaphyra;
              [
                configure.xdg

                services.owntone

                homeManagerModules.common.programs.gpg
              ]
            ))

            (lib.optionals (config.modules.presets.graphical.type == "gnomeMinimal") (
              with homeManagerModules.zaphyra;
              [
                configure.gnome

                gnomeExtensions.dash-to-dock
                gnomeExtensions.just-perfection
                gnomeExtensions.space-bar
                gnomeExtensions.search-light
                gnomeExtensions.emoji-copy
                gnomeExtensions.pip-on-top
                gnomeExtensions.bluetoothBatteryMeter
              ]
            ))

            (lib.optionals (config.modules.presets.graphical.type == "niri") (
              with homeManagerModules.zaphyra;
              [
                configure.niri
              ]
            ))
          ];
        };
      })
    ]
  );

}