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 
98 
99 
100 
101 
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
132 
{
  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.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

              programs.ghostty
              programs.ssh
              programs.git
              programs.gpg
              homeManagerModules.common.programs.gpg

              programs.yt-dlp
              programs.phockup
              programs.bitwarden-cli
              programs.chaosctl

              programs.firefox
              programs.thunderbird

              programs.errands
              programs.gnome-calendar

              programs.fractal
              programs.dino
              programs.gajim
              programs.tuba
              programs.profanity

              programs.nautilus

              programs.typst
              programs.ocrmypdf
              programs.papers
              programs.pdfarranger
              programs.libreoffice
              programs.apostrophe
              programs.gnome-text-editor

              programs.plattenalbum
              programs.celluloid
              programs.loupe
              programs.gnome-obfuscate

              programs.javascript
            ]
          ))

          (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
            ]
          ))
        ];
      })
    ]
  );

}