dotfiles

My PC Dotfiles & Website

base-ext.nix (1829B)


## Extended Base Configuration ##
_: {
  flake.modules = {
    nixos.base-ext = {
      config,
      lib,
      ...
    }: {
      # Binaries
      programs.nix-ld.enable = true;
      programs.appimage = {
        enable = true;
        binfmt = true;
      };

      # Documentation
      documentation = {
        dev.enable = true;
        man.enable = true;
      };

      # TTY
      services.kmscon = {
        enable = true;
        hwRender = false;
        extraConfig = ''
          mouse
          font-name=${config.stylix.fonts.monospace.name}
        '';
      };

      # GPG & SSH
      programs.gnupg.agent = {
        enable = true;
        enableSSHSupport = true;
      };

      environment.persist.directories = ["/etc/ssh"];
      services.openssh = {
        enable = true;
        settings = {
          PasswordAuthentication = false;
          PermitRootLogin = lib.mkForce "no";
        };

        hostKeys = [
          {
            comment = "Host SSH Key";
            bits = 4096;
            type = "ed25519";
            path = "/etc/ssh/ssh_key";
          }
        ];
      };
    };

    homeManager.base-ext = _: {
      home.persist.directories = [
        {
          directory = ".gnupg";
          mode = "0700";
        }
        {
          directory = ".ssh";
          mode = "0700";
        }
      ];

      programs.ssh = {
        enable = true;
        settings."*" = {
          ForwardAgent = false;
          AddKeysToAgent = "no";
          Compression = false;
          ServerAliveInterval = 0;
          ServerAliveCountMax = 3;
          HashKnownHosts = false;
          UserKnownHostsFile = "~/.ssh/known_hosts";
          ControlMaster = "no";
          ControlPath = "~/.ssh/master-%r@%n:%p";
          ControlPersist = "no";
        };
      };
    };
  };
}