zaphyra's git: nixfiles

zaphyra and void'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 
{
  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 {
    sops.secrets.zaphyraPassword = {
      neededForUsers = true;
      sopsFile = inputs.self.sopsSecrets.common;
    };

    programs.fuse.userAllowOther = lib.mkIf config.modules.filesystem.impermanence.home.enable (
      lib.mkDefault true
    );

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

    home-manager.users.zaphyra.imports = lib.concatLists [
      [
        homeManagerModules.zaphyra.common
      ]

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

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

          programs.ghostty
          programs.ssh
          programs.git
          programs.gpg

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

          programs.nautilus

          programs.firefox
          programs.thunderbird
          programs.errands

          programs.fractal
          programs.tuba

          programs.typst
          programs.ocrmypdf
          programs.papers
          programs.pdfarranger
          programs.libreoffice
          programs.apostrophe

          programs.celluloid

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

}