mirror of
https://github.com/CHN-beta/nixos.git
synced 2024-10-23 15:08:45 +08:00
301 lines
10 KiB
Nix
301 lines
10 KiB
Nix
inputs:
|
|
{
|
|
config =
|
|
let
|
|
inherit (inputs.lib) mkIf;
|
|
inherit (builtins) concatLists map listToAttrs;
|
|
inherit (inputs.localLib) attrsToList;
|
|
in mkIf (builtins.elem "server" inputs.config.nixos.packages._packageSets)
|
|
{
|
|
nixos =
|
|
{
|
|
packages = with inputs.pkgs;
|
|
{
|
|
_packages =
|
|
[
|
|
# shell
|
|
ksh
|
|
# basic tools
|
|
beep dos2unix gnugrep pv tmux screen parallel tldr cowsay jq zellij neofetch ipfetch localPackages.pslist
|
|
fastfetch reptyr
|
|
# lsxx
|
|
pciutils usbutils lshw util-linux lsof
|
|
# top
|
|
iotop iftop htop btop powertop s-tui
|
|
# editor
|
|
nano bat
|
|
# downloader
|
|
wget aria2 curl yt-dlp
|
|
# file manager
|
|
tree eza trash-cli lsd broot file xdg-ninja mlocate
|
|
# compress
|
|
pigz rar upx unzip zip lzip p7zip
|
|
# file system management
|
|
sshfs e2fsprogs adb-sync duperemove compsize
|
|
# disk management
|
|
smartmontools hdparm
|
|
# encryption and authentication
|
|
apacheHttpd openssl ssh-to-age gnupg age sops pam_u2f yubico-piv-tool
|
|
# networking
|
|
ipset iptables iproute2 dig nettools traceroute tcping-go whois tcpdump nmap inetutils
|
|
# nix tools
|
|
nix-output-monitor nix-tree ssh-to-age
|
|
# office
|
|
todo-txt-cli
|
|
# development
|
|
gdb try inputs.topInputs.plasma-manager.packages.x86_64-linux.rc2nix
|
|
] ++ (with inputs.config.boot.kernelPackages; [ cpupower usbip ]);
|
|
_pythonPackages = [(pythonPackages: with pythonPackages;
|
|
[
|
|
inquirerpy requests python-telegram-bot tqdm fastapi pypdf2 pandas matplotlib plotly gunicorn redis jinja2
|
|
certifi charset-normalizer idna orjson psycopg2 localPackages.eigengdb
|
|
])];
|
|
};
|
|
users.sharedModules = [(home-inputs:
|
|
{
|
|
config.programs =
|
|
{
|
|
zsh =
|
|
{
|
|
enable = true;
|
|
initExtraBeforeCompInit =
|
|
''
|
|
# p10k instant prompt
|
|
P10K_INSTANT_PROMPT="$XDG_CACHE_HOME/p10k-instant-prompt-''${(%):-%n}.zsh"
|
|
[[ ! -r "$P10K_INSTANT_PROMPT" ]] || source "$P10K_INSTANT_PROMPT"
|
|
HYPHEN_INSENSITIVE="true"
|
|
export PATH=~/bin:$PATH
|
|
function br
|
|
{
|
|
local cmd cmd_file code
|
|
cmd_file=$(mktemp)
|
|
if broot --outcmd "$cmd_file" "$@"; then
|
|
cmd=$(<"$cmd_file")
|
|
command rm -f "$cmd_file"
|
|
eval "$cmd"
|
|
else
|
|
code=$?
|
|
command rm -f "$cmd_file"
|
|
return "$code"
|
|
fi
|
|
}
|
|
alias todo="todo.sh"
|
|
'';
|
|
plugins =
|
|
[
|
|
{
|
|
file = "powerlevel10k.zsh-theme";
|
|
name = "powerlevel10k";
|
|
src = "${inputs.pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k";
|
|
}
|
|
{
|
|
file = "p10k.zsh";
|
|
name = "powerlevel10k-config";
|
|
src = ./p10k-config;
|
|
}
|
|
{
|
|
name = "zsh-lsd";
|
|
src = inputs.pkgs.fetchFromGitHub
|
|
{
|
|
owner = "z-shell";
|
|
repo = "zsh-lsd";
|
|
rev = "029a9cb0a9b39c9eb6c5b5100dd9182813332250";
|
|
sha256 = "sha256-oWjWnhiimlGBMaZlZB+OM47jd9hporKlPNwCx6524Rk=";
|
|
};
|
|
}
|
|
];
|
|
history =
|
|
{
|
|
path = "${home-inputs.config.xdg.dataHome}/zsh/zsh_history";
|
|
extended = true;
|
|
save = 100000000;
|
|
size = 100000000;
|
|
};
|
|
};
|
|
direnv = { enable = true; nix-direnv.enable = true; };
|
|
git =
|
|
{
|
|
enable = true;
|
|
lfs.enable = true;
|
|
extraConfig =
|
|
{
|
|
core.editor = if inputs.config.nixos.system.gui.preferred then "code --wait" else "vim";
|
|
advice.detachedHead = false;
|
|
merge.conflictstyle = "diff3";
|
|
diff.colorMoved = "default";
|
|
};
|
|
package = inputs.pkgs.gitFull;
|
|
delta =
|
|
{
|
|
enable = true;
|
|
options =
|
|
{
|
|
side-by-side = true;
|
|
navigate = true;
|
|
syntax-theme = "GitHub";
|
|
light = true;
|
|
zero-style = "syntax white";
|
|
line-numbers-zero-style = "#ffffff";
|
|
};
|
|
};
|
|
};
|
|
ssh =
|
|
{
|
|
enable = true;
|
|
controlMaster = "auto";
|
|
controlPersist = "1m";
|
|
compression = true;
|
|
};
|
|
vim =
|
|
{
|
|
enable = true;
|
|
defaultEditor = true;
|
|
packageConfigurable = inputs.config.programs.vim.package;
|
|
settings =
|
|
{
|
|
number = true;
|
|
expandtab = false;
|
|
shiftwidth = 2;
|
|
tabstop = 2;
|
|
};
|
|
extraConfig =
|
|
''
|
|
set clipboard=unnamedplus
|
|
colorscheme evening
|
|
'';
|
|
};
|
|
};
|
|
})];
|
|
};
|
|
programs =
|
|
{
|
|
nix-index-database.comma.enable = true;
|
|
nix-index.enable = true;
|
|
zsh =
|
|
{
|
|
enable = true;
|
|
syntaxHighlighting.enable = true;
|
|
autosuggestions.enable = true;
|
|
enableCompletion = true;
|
|
ohMyZsh =
|
|
{
|
|
enable = true;
|
|
plugins = [ "git" "colored-man-pages" "extract" "history-substring-search" "autojump" ];
|
|
customPkgs = with inputs.pkgs; [ zsh-nix-shell ];
|
|
};
|
|
};
|
|
command-not-found.enable = false;
|
|
adb.enable = true;
|
|
gnupg.agent = { enable = true; enableSSHSupport = true; };
|
|
autojump.enable = true;
|
|
git =
|
|
{
|
|
enable = true;
|
|
package = inputs.pkgs.gitFull;
|
|
lfs.enable = true;
|
|
config =
|
|
{
|
|
init.defaultBranch = "main";
|
|
core = { quotepath = false; editor = "vim"; };
|
|
};
|
|
};
|
|
# yazi.enable = true;
|
|
};
|
|
services =
|
|
{
|
|
fwupd.enable = true;
|
|
udev.packages = with inputs.pkgs; [ yubikey-personalization libfido2 ];
|
|
openssh.knownHosts =
|
|
let
|
|
servers =
|
|
{
|
|
vps6 =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO5ZcvyRyOnUCuRtqrM/Qf+AdUe3a5bhbnfyhw2FSLDZ";
|
|
hostnames = [ "internal.vps6.chn.moe" "vps6.chn.moe" "74.211.99.69" "192.168.82.1" ];
|
|
};
|
|
"initrd.vps6" =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB4DKB/zzUYco5ap6k9+UxeO04LL12eGvkmQstnYxgnS";
|
|
hostnames = [ "initrd.vps6.chn.moe" "74.211.99.69" ];
|
|
};
|
|
vps7 =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIF5XkdilejDAlg5hZZD0oq69k8fQpe9hIJylTo/aLRgY";
|
|
hostnames = [ "internal.vps7.chn.moe" "vps7.chn.moe" "95.111.228.40" "192.168.82.2" ];
|
|
};
|
|
"initrd.vps7" =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGZyQpdQmEZw3nLERFmk2tS1gpSvXwW0Eish9UfhrRxC";
|
|
hostnames = [ "initrd.vps7.chn.moe" "95.111.228.40" ];
|
|
};
|
|
nas =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIktNbEcDMKlibXg54u7QOLt0755qB/P4vfjwca8xY6V";
|
|
hostnames = [ "internal.nas.chn.moe" "[office.chn.moe]:5440" "192.168.82.4" "192.168.1.185" ];
|
|
};
|
|
"initrd.nas" =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAoMu0HEaFQsnlJL0L6isnkNZdRq0OiDXyaX3+fl3NjT";
|
|
hostnames = [ "[office.chn.moe]:5440" "192.168.1.185" ];
|
|
};
|
|
pc =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIMSfREi19OSwQnhdsE8wiNwGSFFJwNGN0M5gN+sdrrLJ";
|
|
hostnames = [ "internal.pc.chn.moe" "192.168.8.2.3" ];
|
|
};
|
|
hpc =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDVpsQW3kZt5alHC6mZhay3ZEe2fRGziG4YJWCv2nn/O";
|
|
hostnames = [ "hpc.xmu.edu.cn" ];
|
|
};
|
|
github =
|
|
{
|
|
ed25519 = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl";
|
|
hostnames = [ "github.com" ];
|
|
};
|
|
};
|
|
in listToAttrs (concatLists (map
|
|
(server:
|
|
(
|
|
if builtins.pathExists ./ssh/${server.name}_rsa.pub then
|
|
[{
|
|
name = "${server.name}-rsa";
|
|
value =
|
|
{
|
|
publicKey = builtins.readFile ./ssh/${server.name}_rsa.pub;
|
|
hostNames = server.value.hostnames;
|
|
};
|
|
}]
|
|
else []
|
|
)
|
|
++ (
|
|
if builtins.pathExists ./ssh/${server.name}_ecdsa.pub then
|
|
[{
|
|
name = "${server.name}-ecdsa";
|
|
value =
|
|
{
|
|
publicKey = builtins.readFile ./ssh/${server.name}_ecdsa.pub;
|
|
hostNames = server.value.hostnames;
|
|
};
|
|
}]
|
|
else []
|
|
)
|
|
++ (
|
|
if server.value ? ed25519 then
|
|
[{
|
|
name = "${server.name}-ed25519";
|
|
value =
|
|
{
|
|
publicKey = server.value.ed25519;
|
|
hostNames = server.value.hostnames;
|
|
};
|
|
}]
|
|
else []
|
|
))
|
|
(attrsToList servers)));
|
|
};
|
|
home-manager = { useGlobalPkgs = true; useUserPackages = true; };
|
|
};
|
|
}
|