2023-10-09 10:44:07 -07:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
|
|
|
|
|
|
let
|
2024-03-03 00:11:51 -08:00
|
|
|
home = config.constants.homeDir;
|
2023-10-09 10:44:07 -07:00
|
|
|
usr = config.constants.userName;
|
|
|
|
|
usrPwdFile = "users/${usr}/password";
|
|
|
|
|
in
|
|
|
|
|
{
|
2024-03-03 14:58:03 -08:00
|
|
|
fonts = {
|
2024-03-13 22:04:42 -07:00
|
|
|
fontDir.enable = true;
|
2024-03-03 14:58:03 -08:00
|
|
|
fontconfig.defaultFonts = {
|
2024-03-13 22:04:42 -07:00
|
|
|
sansSerif = [ "Inter" "Noto Sans CJK SC" ];
|
|
|
|
|
monospace = [ "Iosevka" "Noto Sans Mono CJK SC" ];
|
2024-03-03 14:58:03 -08:00
|
|
|
};
|
|
|
|
|
packages = with pkgs; [
|
2024-03-13 22:04:42 -07:00
|
|
|
inter
|
|
|
|
|
iosevka
|
|
|
|
|
noto-fonts-cjk
|
2024-03-03 14:58:03 -08:00
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
2023-10-09 10:44:07 -07:00
|
|
|
home-manager = {
|
|
|
|
|
useGlobalPkgs = true;
|
2024-03-03 21:12:38 -08:00
|
|
|
users.${usr} = { config, osConfig, pkgs, ... }:
|
|
|
|
|
{
|
|
|
|
|
home = {
|
|
|
|
|
file.".local/share/fonts".source = config.lib.file.mkOutOfStoreSymlink "/run/current-system/sw/share/X11/fonts";
|
|
|
|
|
packages = with pkgs; [
|
|
|
|
|
dua
|
|
|
|
|
fd
|
|
|
|
|
nil
|
|
|
|
|
nixpkgs-fmt
|
|
|
|
|
rclone
|
|
|
|
|
sops
|
2023-10-09 10:44:07 -07:00
|
|
|
];
|
2024-03-03 21:12:38 -08:00
|
|
|
stateVersion = osConfig.system.stateVersion;
|
2023-10-09 10:44:07 -07:00
|
|
|
};
|
2024-03-03 21:12:38 -08:00
|
|
|
programs = {
|
|
|
|
|
bat.enable = true;
|
|
|
|
|
bottom.enable = true;
|
|
|
|
|
direnv = {
|
|
|
|
|
enable = true;
|
|
|
|
|
nix-direnv.enable = true;
|
|
|
|
|
};
|
2024-03-13 22:04:42 -07:00
|
|
|
eza.enable = true;
|
2024-03-03 21:12:38 -08:00
|
|
|
fish.enable = true;
|
|
|
|
|
fzf.enable = true;
|
|
|
|
|
git = {
|
|
|
|
|
enable = true;
|
|
|
|
|
extraConfig = {
|
|
|
|
|
core.autocrlf = "input";
|
|
|
|
|
init.defaultBranch = "development";
|
|
|
|
|
pull.rebase = false;
|
|
|
|
|
push.autoSetupRemote = true;
|
2023-10-09 10:44:07 -07:00
|
|
|
};
|
2024-03-03 21:12:38 -08:00
|
|
|
ignores = [
|
|
|
|
|
".direnv"
|
|
|
|
|
".envrc"
|
|
|
|
|
];
|
|
|
|
|
userEmail = osConfig.constants.postMaster;
|
|
|
|
|
userName = osConfig.constants.userName;
|
|
|
|
|
};
|
|
|
|
|
helix = {
|
|
|
|
|
enable = true;
|
|
|
|
|
defaultEditor = true;
|
|
|
|
|
settings = {
|
|
|
|
|
editor = {
|
|
|
|
|
lsp.display-inlay-hints = true;
|
|
|
|
|
soft-wrap.enable = true;
|
|
|
|
|
};
|
|
|
|
|
theme = "base16_transparent";
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
ripgrep.enable = true;
|
|
|
|
|
starship = {
|
|
|
|
|
enable = true;
|
|
|
|
|
enableTransience = true;
|
|
|
|
|
};
|
|
|
|
|
tealdeer.enable = true;
|
|
|
|
|
zoxide = {
|
|
|
|
|
enable = true;
|
|
|
|
|
options = [ "--cmd cd" ];
|
2023-10-09 10:44:07 -07:00
|
|
|
};
|
|
|
|
|
};
|
2024-03-03 21:12:38 -08:00
|
|
|
xdg.enable = true;
|
2023-10-09 10:44:07 -07:00
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
programs.fish.enable = true;
|
|
|
|
|
|
2024-03-02 15:10:23 -08:00
|
|
|
services = {
|
|
|
|
|
openssh = {
|
|
|
|
|
hostKeys = [{
|
|
|
|
|
comment = "host@${config.networking.hostName}";
|
|
|
|
|
path = "/etc/ssh/host";
|
|
|
|
|
rounds = 100;
|
|
|
|
|
type = "ed25519";
|
|
|
|
|
}];
|
|
|
|
|
settings = {
|
|
|
|
|
PasswordAuthentication = false;
|
|
|
|
|
KbdInteractiveAuthentication = false;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
resolved.enable = true;
|
2024-03-03 00:11:51 -08:00
|
|
|
syncthing = {
|
|
|
|
|
configDir = "${home}/.config/syncthing";
|
|
|
|
|
dataDir = "${home}/.local/share/syncthing";
|
|
|
|
|
openDefaultPorts = true;
|
|
|
|
|
overrideDevices = true;
|
|
|
|
|
overrideFolders = true;
|
|
|
|
|
settings.devices = config.constants.syncthingDevices;
|
|
|
|
|
user = usr;
|
|
|
|
|
};
|
2024-03-02 15:10:23 -08:00
|
|
|
};
|
|
|
|
|
|
2023-10-09 10:44:07 -07:00
|
|
|
sops.secrets.${usrPwdFile}.neededForUsers = true;
|
|
|
|
|
|
|
|
|
|
users = {
|
|
|
|
|
mutableUsers = false;
|
|
|
|
|
users.${usr} = {
|
|
|
|
|
description = "Sicheng Pan";
|
|
|
|
|
extraGroups = [
|
|
|
|
|
"audio"
|
|
|
|
|
"input"
|
|
|
|
|
"networkmanager"
|
|
|
|
|
"uinput"
|
|
|
|
|
"wheel"
|
|
|
|
|
];
|
|
|
|
|
hashedPasswordFile = config.sops.secrets.${usrPwdFile}.path;
|
|
|
|
|
home = config.constants.homeDir;
|
|
|
|
|
isNormalUser = true;
|
|
|
|
|
openssh.authorizedKeys.keys = config.constants.publicKeys;
|
|
|
|
|
shell = pkgs.fish;
|
|
|
|
|
};
|
|
|
|
|
};
|
|
|
|
|
}
|