system/users/jan/default.nix

163 lines
4.6 KiB
Nix
Raw Normal View History

2024-04-16 02:51:46 +03:00
{ 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;
2024-04-16 02:51:46 +03:00
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;
2024-04-16 18:01:38 +03:00
home.sessionVariables = lib.mkIf config.local.programs.pass.enable {
PASSWORD_STORE_DIR = "${config.home-manager.users.jan.xdg.dataHome}/pass/store";
};
2024-04-16 02:51:46 +03:00
################################################################################
# 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;
};
2024-04-16 02:51:46 +03:00
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";
};
};
2024-04-16 02:51:46 +03:00
services.pass-secret-service.enable = config.local.programs.pass.enable;
2024-04-16 02:51:46 +03:00
################################################################################
# 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;
};
}