186 lines
5.4 KiB
Nix
186 lines
5.4 KiB
Nix
{ config, pkgs, lib, inputs, globalData, packagesPath, ... }:
|
||
|
||
{
|
||
imports = [./davmail.secret.nix];
|
||
|
||
nixpkgs.overlays = lib.mkAfter [
|
||
inputs.nil.overlays.nil
|
||
inputs.wired.overlays.default
|
||
];
|
||
|
||
programs.zsh.enable = true;
|
||
|
||
nix.settings.trusted-users = lib.mkAfter [ "jan" ];
|
||
|
||
age.secrets.users-jan-passfile.file = ./users-jan-passfile.age;
|
||
users.users.jan = {
|
||
isNormalUser = true;
|
||
extraGroups = [
|
||
"wheel" # Enable ‘sudo’ for the user.
|
||
(lib.mkIf config.networking.networkmanager.enable "networkmanager")
|
||
(lib.mkIf config.virtualisation.docker.enable "docker")
|
||
(lib.mkIf config.services.transmission.enable "transmission")
|
||
(lib.mkIf config.services.kubo.enable config.services.kubo.group)
|
||
(lib.mkIf config.programs.adb.enable "adbusers")
|
||
(lib.mkIf config.programs.adb.enable "plugdev")
|
||
(lib.mkIf config.hardware.pulseaudio.systemWide "pulse-access")
|
||
];
|
||
shell = pkgs.zsh;
|
||
hashedPasswordFile = config.age.secrets.users-jan-passfile.path;
|
||
|
||
openssh.authorizedKeys.keys = globalData.publicKeys.users.jan;
|
||
};
|
||
|
||
users.groups.plugdev = lib.mkIf config.programs.adb.enable { };
|
||
|
||
networking.firewall.allowedUDPPorts =
|
||
let lanMouseCfg = config.home-manager.users.jan.local.services.lan-mouse;
|
||
in lib.optional lanMouseCfg.enable lanMouseCfg.settings.port;
|
||
|
||
# Required to use MS Exchange in aerc
|
||
services.davmail = {
|
||
enable = true;
|
||
url = "https://outlook.office365.com/EWS/Exchange.asmx";
|
||
config.davmail = {
|
||
allowRemote = false;
|
||
ssl = {
|
||
nosecurecaldav = false;
|
||
nosecureimap = false;
|
||
nosecureldap = false;
|
||
nosecuresmtp = false;
|
||
};
|
||
mode = "O365Manual";
|
||
};
|
||
};
|
||
|
||
home-manager.users.jan = {
|
||
imports = [
|
||
./email_accounts.secret.nix
|
||
./calendars.secret.nix
|
||
./ssh.secret.nix
|
||
./git
|
||
];
|
||
|
||
################################################################################
|
||
# Configs
|
||
################################################################################
|
||
|
||
local.keyboard = {
|
||
enable = true;
|
||
variant = "dvorak,";
|
||
};
|
||
|
||
local.window-manager = {
|
||
xmonad.enable = lib.mkDefault true;
|
||
polybar.enable = lib.mkDefault true;
|
||
};
|
||
|
||
xdg.enable = lib.mkDefault true;
|
||
|
||
local.shell.enable = lib.mkDefault true;
|
||
|
||
################################################################################
|
||
# Programs
|
||
################################################################################
|
||
|
||
local.programs.terminals = {
|
||
wezterm.enable = lib.mkDefault config.local.window-manager.xmonad.enable;
|
||
foot.enable = lib.mkDefault (!config.local.window-manager.xmonad.enable);
|
||
};
|
||
|
||
local.programs.editors.neovim = {
|
||
enable = lib.mkDefault true;
|
||
defaultEditor = lib.mkDefault true;
|
||
ltex.enable = lib.mkDefault true;
|
||
};
|
||
|
||
local.programs.file-managers.vifm.enable = lib.mkDefault true;
|
||
local.programs.file-managers.nnn = {
|
||
enable = true;
|
||
package = pkgs.unstable.nnn;
|
||
};
|
||
|
||
local.programs.aerc.enable = lib.mkDefault true;
|
||
|
||
local.programs.communication = {
|
||
matrix = {
|
||
enable = lib.mkDefault false;
|
||
package = pkgs.unstable.nheko;
|
||
};
|
||
tox = {
|
||
enable = lib.mkDefault true;
|
||
package = pkgs.unstable.qTox;
|
||
};
|
||
};
|
||
|
||
local.programs.dev-tools = {
|
||
base.enable = lib.mkDefault true;
|
||
nix.enable = lib.mkDefault true;
|
||
web.enable = lib.mkDefault true;
|
||
psql = {
|
||
enable = lib.mkDefault true;
|
||
package = lib.mkDefault pkgs.postgresql_16;
|
||
};
|
||
eza.enable = lib.mkDefault true;
|
||
direnv.enable = lib.mkDefault true;
|
||
zoxide.enable = lib.mkDefault true;
|
||
};
|
||
|
||
local.programs.share-files.croc.enable = lib.mkDefault true;
|
||
|
||
local.programs.flameshot.enable = lib.mkDefault true;
|
||
|
||
local.programs.argos-translate.enable = lib.mkDefault true;
|
||
|
||
################################################################################
|
||
# Services
|
||
################################################################################
|
||
|
||
local.services.wired.enable = lib.mkDefault true;
|
||
|
||
local.services.lan-mouse = {
|
||
# x11 input capture not available: not implemented
|
||
enable = lib.mkDefault false;
|
||
settings = {
|
||
# releaseBind = [ "KeyLeftCtrl" "KeyLeftShift" "KeyF1" ];
|
||
port = lib.mkDefault 32000;
|
||
frontend = "cli";
|
||
};
|
||
};
|
||
|
||
services.pass-secret-service = lib.mkIf config.local.programs.pass.enable {
|
||
enable = true;
|
||
storePath = config.home-manager.users.jan.home.sessionVariables.PASSWORD_STORE_DIR;
|
||
};
|
||
home.sessionVariables = lib.mkIf config.local.programs.pass.enable {
|
||
PASSWORD_STORE_DIR = "${config.home-manager.users.jan.xdg.dataHome}/pass/store";
|
||
};
|
||
|
||
################################################################################
|
||
# Packages
|
||
################################################################################
|
||
|
||
home.packages = with pkgs.unstable; [
|
||
image-roll
|
||
# vlc
|
||
|
||
# tools
|
||
procs
|
||
bottom
|
||
jq
|
||
|
||
nodePackages.vscode-langservers-extracted # html, css, json, eslint
|
||
|
||
(pkgs.callPackage (packagesPath + /micro-agent) {})
|
||
];
|
||
|
||
home.file = {
|
||
"pictures/wallpapers" = {
|
||
source = ./wallpapers;
|
||
recursive = true;
|
||
};
|
||
};
|
||
|
||
home.stateVersion = config.system.stateVersion;
|
||
};
|
||
}
|