mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-06-08 23:52:43 +02:00
feat: nixos configs & docs
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}: {
|
||||
programs = {
|
||||
chromium = {
|
||||
enable = true;
|
||||
commandLineArgs = ["--enable-features=TouchpadOverscrollHistoryNavigation"];
|
||||
extensions = [
|
||||
# {id = "";} // extension id, query from chrome web store
|
||||
];
|
||||
};
|
||||
|
||||
firefox = {
|
||||
enable = true;
|
||||
profiles.ryan = {};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
{pkgs, ...}: {
|
||||
home.packages = with pkgs; [
|
||||
# archives
|
||||
zip
|
||||
unzip
|
||||
p7zip
|
||||
|
||||
# utils
|
||||
ripgrep
|
||||
yq-go # https://github.com/mikefarah/yq
|
||||
htop
|
||||
|
||||
# misc
|
||||
libnotify
|
||||
wineWowPackages.wayland
|
||||
xdg-utils
|
||||
graphviz
|
||||
|
||||
# productivity
|
||||
obsidian
|
||||
|
||||
# IDE
|
||||
insomnia
|
||||
|
||||
# cloud native
|
||||
docker-compose
|
||||
kubectl
|
||||
|
||||
|
||||
nodejs
|
||||
nodePackages.npm
|
||||
nodePackages.pnpm
|
||||
yarn
|
||||
|
||||
# db related
|
||||
dbeaver
|
||||
mycli
|
||||
pgcli
|
||||
];
|
||||
|
||||
programs = {
|
||||
tmux = {
|
||||
enable = true;
|
||||
clock24 = true;
|
||||
keyMode = "vi";
|
||||
extraConfig = "mouse on";
|
||||
};
|
||||
|
||||
bat = {
|
||||
enable = true;
|
||||
config = {
|
||||
pager = "less -FR";
|
||||
theme = "Catppuccin-mocha";
|
||||
};
|
||||
themes = {
|
||||
Catppuccin-mocha = builtins.readFile (pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/catppuccin/bat/main/Catppuccin-mocha.tmTheme";
|
||||
hash = "sha256-qMQNJGZImmjrqzy7IiEkY5IhvPAMZpq0W6skLLsng/w=";
|
||||
});
|
||||
};
|
||||
};
|
||||
|
||||
btop.enable = true; # replacement of htop/nmon
|
||||
exa.enable = true; # A modern replacement for ‘ls’
|
||||
jq.enable = true; # A lightweight and flexible command-line JSON processor
|
||||
ssh.enable = true;
|
||||
aria2.enable = true;
|
||||
|
||||
skim = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
defaultCommand = "rg --files --hidden";
|
||||
changeDirWidgetOptions = [
|
||||
"--preview 'exa --icons --git --color always -T -L 3 {} | head -200'"
|
||||
"--exact"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
services = {
|
||||
syncthing.enable = true;
|
||||
|
||||
# auto mount usb drives
|
||||
udiskie.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
imports = [
|
||||
./browsers.nix
|
||||
./common.nix
|
||||
./git.nix
|
||||
./media.nix
|
||||
./vscode.nix
|
||||
./xdg.nix
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
pkgs,
|
||||
...
|
||||
}: {
|
||||
home.packages = [pkgs.gh];
|
||||
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
userName = "Ryan Yin";
|
||||
userEmail = "xiaoyin_c@qq.com";
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
pkgs,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
# media - control and enjoy audio/video
|
||||
{
|
||||
# imports = [
|
||||
# ];
|
||||
|
||||
home.packages = with pkgs; [
|
||||
# audio control
|
||||
pavucontrol
|
||||
playerctl
|
||||
pulsemixer
|
||||
# images
|
||||
imv
|
||||
];
|
||||
|
||||
programs = {
|
||||
mpv = {
|
||||
enable = true;
|
||||
defaultProfiles = ["gpu-hq"];
|
||||
scripts = [pkgs.mpvScripts.mpris];
|
||||
};
|
||||
|
||||
obs-studio.enable = true;
|
||||
};
|
||||
|
||||
services = {
|
||||
playerctld.enable = true;
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
{
|
||||
config,
|
||||
pkgs,
|
||||
home-manager,
|
||||
nix-vscode-extensions,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
|
||||
# if use vscode in wayland, uncomment this line
|
||||
# environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||||
programs.vscode = {
|
||||
enable = true;
|
||||
userSettings = {
|
||||
"editor.renderWhitespace" = "all";
|
||||
"files.autoSave" = "onFocusChange";
|
||||
"editor.rulers" = [ 80 120 ];
|
||||
"telemetry.enableTelemetry" = false;
|
||||
"telemetry.enableCrashReporter" = false;
|
||||
"editor.tabSize" = 2;
|
||||
"files.exclude" = { "**/node_modules/**" = true; };
|
||||
"editor.formatOnSave" = false;
|
||||
"breadcrumbs.enabled" = true;
|
||||
"editor.useTabStops" = false;
|
||||
"editor.fontFamily" = "JetBrainsMono Nerd Font";
|
||||
"editor.fontSize" = 16;
|
||||
"editor.fontLigatures" = true;
|
||||
"editor.lineHeight" = 20;
|
||||
"workbench.fontAliasing" = "antialiased";
|
||||
"files.trimTrailingWhitespace" = true;
|
||||
"editor.minimap.enabled" = false;
|
||||
"workbench.editor.enablePreview" = false;
|
||||
"terminal.integrated.fontFamily" = "JetBrainsMono Nerd Font";
|
||||
};
|
||||
|
||||
# pkgs.vscode-extensions 里包含的 vscode 太少了
|
||||
# 必须使用社区的 <https://github.com/nix-community/nix-vscode-extensions> 才能安装更多插件
|
||||
# TODO 安装有点麻烦,后面再整
|
||||
extensions = with pkgs.vscode-extensions; [
|
||||
# aaron-bond.better-comments
|
||||
# anweber.vscode-httpyac
|
||||
# arrterian.nix-env-selector
|
||||
# bierner.markdown-mermaid
|
||||
# christian-kohler.path-intellisense
|
||||
# cschlosser.doxdocgen
|
||||
# DanishSarwar.reverse-search
|
||||
# eamodio.gitlens
|
||||
# esbenp.prettier-vscode
|
||||
# espressif.esp-idf-extension
|
||||
# fabiospampinato.vscode-diff
|
||||
# GitHub.copilot
|
||||
# golang.go
|
||||
# hashicorp.terraform
|
||||
# janisdd.vscode-edit-csv
|
||||
# jebbs.plantuml
|
||||
# jeff-hykin.better-cpp-syntax
|
||||
# jnoortheen.nix-ide
|
||||
# JuanBlanco.solidity
|
||||
# k--kato.intellij-idea-keybindings
|
||||
# llvm-vs-code-extensions.vscode-clangd
|
||||
# mcu-debug.debug-tracker-vscode
|
||||
# mcu-debug.memory-view
|
||||
# mcu-debug.rtos-views
|
||||
# mikestead.dotenv
|
||||
# mkhl.direnv
|
||||
# ms-azuretools.vscode-docker
|
||||
# ms-dotnettools.vscode-dotnet-runtime
|
||||
# ms-kubernetes-tools.vscode-kubernetes-tools
|
||||
# ms-python.isort
|
||||
# ms-python.python
|
||||
# ms-python.vscode-pylance
|
||||
# ms-toolsai.jupyter
|
||||
# ms-toolsai.jupyter-keymap
|
||||
# ms-toolsai.jupyter-renderers
|
||||
# ms-toolsai.vscode-jupyter-cell-tags
|
||||
# ms-toolsai.vscode-jupyter-slideshow
|
||||
# ms-vscode-remote.remote-containers
|
||||
# ms-vscode-remote.remote-ssh
|
||||
# ms-vscode-remote.remote-ssh-edit
|
||||
# ms-vscode-remote.vscode-remote-extensionpack
|
||||
# ms-vscode.cmake-tools
|
||||
# ms-vscode.cpptools
|
||||
# ms-vscode.cpptools-extension-pack
|
||||
# ms-vscode.cpptools-themes
|
||||
# ms-vscode.remote-explorer
|
||||
# ms-vscode.remote-server
|
||||
# pinage404.nix-extension-pack
|
||||
# platformio.platformio-ide
|
||||
# pomdtr.excalidraw-editor
|
||||
# redhat.java
|
||||
# redhat.vscode-commons
|
||||
# redhat.vscode-xml
|
||||
# redhat.vscode-yaml
|
||||
# rust-lang.rust-analyzer
|
||||
# shd101wyy.markdown-preview-enhanced
|
||||
# sumneko.lua
|
||||
# tamasfe.even-better-toml
|
||||
# timonwong.shellcheck
|
||||
# tintinweb.graphviz-interactive-preview
|
||||
# tintinweb.solidity-visual-auditor
|
||||
# tintinweb.vscode-inline-bookmarks
|
||||
# tintinweb.vscode-solidity-flattener
|
||||
# tintinweb.vscode-solidity-language
|
||||
# twxs.cmake
|
||||
# vadimcn.vscode-lldb
|
||||
# VisualStudioExptTeam.intellicode-api-usage-examples
|
||||
# VisualStudioExptTeam.vscodeintellicode
|
||||
# vscjava.vscode-java-debug
|
||||
# vscjava.vscode-java-pack
|
||||
# vscjava.vscode-java-test
|
||||
# vscjava.vscode-maven
|
||||
# vscode-icons-team.vscode-icons
|
||||
# WakaTime.vscode-wakatime
|
||||
yzhang.markdown-all-in-one
|
||||
zxh404.vscode-proto3
|
||||
];
|
||||
};
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
{config, ...}: let
|
||||
browser = ["firefox.desktop"];
|
||||
|
||||
# XDG MIME types
|
||||
associations = {
|
||||
"application/x-extension-htm" = browser;
|
||||
"application/x-extension-html" = browser;
|
||||
"application/x-extension-shtml" = browser;
|
||||
"application/x-extension-xht" = browser;
|
||||
"application/x-extension-xhtml" = browser;
|
||||
"application/xhtml+xml" = browser;
|
||||
"text/html" = browser;
|
||||
"x-scheme-handler/about" = browser;
|
||||
"x-scheme-handler/chrome" = ["chromium-browser.desktop"];
|
||||
"x-scheme-handler/ftp" = browser;
|
||||
"x-scheme-handler/http" = browser;
|
||||
"x-scheme-handler/https" = browser;
|
||||
"x-scheme-handler/unknown" = browser;
|
||||
|
||||
"audio/*" = ["mpv.desktop"];
|
||||
"video/*" = ["mpv.dekstop"];
|
||||
"image/*" = ["imv.desktop"];
|
||||
"application/json" = browser;
|
||||
"application/pdf" = ["org.pwmt.zathura.desktop.desktop"];
|
||||
"x-scheme-handler/discord" = ["discordcanary.desktop"];
|
||||
"x-scheme-handler/spotify" = ["spotify.desktop"];
|
||||
"x-scheme-handler/tg" = ["telegramdesktop.desktop"];
|
||||
};
|
||||
in {
|
||||
xdg = {
|
||||
enable = true;
|
||||
cacheHome = config.home.homeDirectory + "/.local/cache";
|
||||
|
||||
mimeApps = {
|
||||
enable = true;
|
||||
defaultApplications = associations;
|
||||
};
|
||||
|
||||
userDirs = {
|
||||
enable = true;
|
||||
createDirectories = true;
|
||||
extraConfig = {
|
||||
XDG_SCREENSHOTS_DIR = "${config.xdg.userDirs.pictures}/Screenshots";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user