system/users/jan/default.nix

165 lines
4.8 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ config, pkgs, lib, inputs, globalData, ... }:
{
nixpkgs.overlays = lib.mkAfter [
inputs.myneovim.overlays.default
inputs.nil.overlays.default
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;
home-manager.users.jan = {
imports = [
./accounts.secret.nix
./git
];
################################################################################
# Configs
################################################################################
local.keyboard = {
enable = true;
variant = "dvorak,";
};
local.window-manager = {
xmonad.enable = true;
polybar.enable = true;
};
xdg.enable = true;
local.shell.enable = true;
################################################################################
# Programs
################################################################################
local.programs.terminals.wezterm.enable = lib.mkDefault true;
local.programs.editors.neovim = {
enable = lib.mkDefault true;
defaultEditor = lib.mkDefault true;
ltex.enable = lib.mkDefault true;
nix.enable = lib.mkDefault true;
rust.enable = lib.mkDefault true;
typescript.enable = lib.mkDefault true;
vue.enable = lib.mkDefault true;
deno.enable = lib.mkDefault true;
python.enable = lib.mkDefault true;
};
local.programs.file-managers.vifm.enable = lib.mkDefault true;
local.programs.aerc.enable = lib.mkDefault true;
local.programs.communication = {
telegram.enable = lib.mkDefault true;
matrix.enable = lib.mkDefault true;
simplex-chat.enable = lib.mkDefault (config.local.system.kernel != "hardened");
};
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_14;
};
eza.enable = lib.mkDefault true;
direnv.enable = lib.mkDefault true;
zoxide.enable = lib.mkDefault true;
};
local.programs.share-files.croc.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
gimp
libresprite
# tools
procs
bottom
bind.dnsutils
kubo # ipfs
neofetch # command-line system information
# asciinema # record the terminal
woodpecker-cli
];
home.file = {
"pictures/wallpapers" = {
source = ./wallpapers;
recursive = true;
};
};
home.stateVersion = config.system.stateVersion;
};
}