• Updated input 'catppuccin': 'github:catppuccin/nix/32359bf226fe874d3b7a0a5753d291a4da9616fe?narHash=sha256-0aIwr/RC/oe7rYkfJb47xjdEQDSNcqpFGsEa%2BEPlDEs%3D' (2024-11-10) → 'github:catppuccin/nix/a817009ebfd2cca7f70a77884e5098d0a8c83f8e?narHash=sha256-uX/9m0TbdhEzuWA0muM5mI/AaWcLiDLjCCyu5Qr9MRk%3D' (2024-11-30) • Updated input 'disko': 'github:nix-community/disko/869ba3a87486289a4197b52a6c9e7222edf00b3e?narHash=sha256-%2B4U2I2653JvPFxcux837ulwYS864QvEueIljUkwytsk%3D' (2024-11-26) → 'github:nix-community/disko/2814a5224a47ca19e858e027f7e8bff74a8ea9f1?narHash=sha256-2uMaVAZn7fiyTUGhKgleuLYe5%2BEAAYB/diKxrM7g3as%3D' (2024-11-30) • Updated input 'home-manager': 'github:nix-community/home-manager/1bd5616e33c0c54d7a5b37db94160635a9b27aeb?narHash=sha256-130gQ5k8kZlxjBEeLpE%2BSvWFgSOFgQFeZlqIik7KgtQ%3D' (2024-11-16) → 'github:nix-community/home-manager/c1fee8d4a60b89cae12b288ba9dbc608ff298163?narHash=sha256-dVmNuUajnU18oHzBQWZm1BQtANCHaqNuxTHZQ%2BGN0r8%3D' (2024-12-01) • Updated input 'my-nixvim': 'git+https://git.xinyang.life/xin/nixvim?ref=refs/heads/master&rev=a09d2b94efb5e2d801275a244eedaab0816f3702' (2024-11-03) → 'git+https://git.xinyang.life/xin/nixvim?ref=refs/heads/master&rev=a3709a89797ea094f82d38edeb4a538c07c8c3fa' (2024-11-30) • Updated input 'my-nixvim/nixvim': 'github:nix-community/nixvim/6f210158b03b01a1fd44bf3968165e6da80635ce?narHash=sha256-NByr7l7JetL9kIrdCOcRqBu%2BlAkruYXETp1DMiDHNQs%3D' (2024-11-02) → 'github:nix-community/nixvim/f11a877bcc1d66cc8bd7990c704f91c1e99c7d08?narHash=sha256-12OpSgbLDiKmxvBXwVracIfGI9FpjFyHpa1r0Ho%2BNFA%3D' (2024-11-13) • Updated input 'my-nixvim/nixvim/git-hooks': 'github:cachix/git-hooks.nix/af8a16fe5c264f5e9e18bcee2859b40a656876cf?narHash=sha256-W1MIJpADXQCgosJZT8qBYLRuZls2KSiKdpnTVdKBuvU%3D' (2024-10-30) → 'github:cachix/git-hooks.nix/d70155fdc00df4628446352fc58adc640cd705c2?narHash=sha256-fWPHyhYE6xvMI1eGY3pwBTq85wcy1YXqdzTZF%2B06nOg%3D' (2024-11-05) • Updated input 'my-nixvim/nixvim/home-manager': 'github:nix-community/home-manager/1743615b61c7285976f85b303a36cdf88a556503?narHash=sha256-AvCVDswOUM9D368HxYD25RsSKp%2B5o0L0/JHADjLoD38%3D' (2024-11-01) → 'github:nix-community/home-manager/60bb110917844d354f3c18e05450606a435d2d10?narHash=sha256-NjavpgE9/bMe/ABvZpyHIUeYF1mqR5lhaep3wB79ucs%3D' (2024-11-10) • Updated input 'my-nixvim/nixvim/nix-darwin': 'github:lnl7/nix-darwin/683d0c4cd1102dcccfa3f835565378c7f3cbe05e?narHash=sha256-qE/cYKBhzxHMtKtLK3hlSR3uzO1pWPGLrBuQK7r0CHc%3D' (2024-11-01) → 'github:lnl7/nix-darwin/5c74ab862c8070cbf6400128a1b56abb213656da?narHash=sha256-3Ftf9oqOypcEyyrWJ0baVkRpvQqroK/SVBFLvU3nPuc%3D' (2024-11-09) • Updated input 'my-nixvim/nixvim/nixpkgs': 'github:NixOS/nixpkgs/807e9154dcb16384b1b765ebe9cd2bba2ac287fd?narHash=sha256-l253w0XMT8nWHGXuXqyiIC/bMvh1VRszGXgdpQlfhvU%3D' (2024-10-29) → 'github:NixOS/nixpkgs/76612b17c0ce71689921ca12d9ffdc9c23ce40b2?narHash=sha256-IigrKK3vYRpUu%2BHEjPL/phrfh7Ox881er1UEsZvw9Q4%3D' (2024-11-09) • Updated input 'my-nixvim/nixvim/nuschtosSearch': 'github:NuschtOS/search/9e22bd742480916ff5d0ab20ca2522eaa3fa061e?narHash=sha256-8lklUZRV7nwkPLF3roxzi4C2oyLydDXyAzAnDvjkOms%3D' (2024-11-02) → 'github:NuschtOS/search/ef493352f9e1f051e01a55c062731503a6b36b4e?narHash=sha256-43yLsOm/wxBbfYSNDWVJeVv5Ij%2B23X3BIjFUfsdx/6M%3D' (2024-11-08) • Updated input 'my-nixvim/nixvim/nuschtosSearch/ixx': 'github:NuschtOS/ixx/65c207c92befec93e22086da9456d3906a4e999c?narHash=sha256-YcyJLvTmN6uLEBGCvYoMLwsinblXMkoYkNLEO4WnKus%3D' (2024-10-21) → 'github:NuschtOS/ixx/9fd01aad037f345350eab2cd45e1946cc66da4eb?narHash=sha256-EiOq8jF4Z/zQe0QYVc3%2BqSKxRK//CFHMB84aYrYGwEs%3D' (2024-10-26) • Updated input 'nix-index-database': 'github:Mic92/nix-index-database/bdba246946fb079b87b4cada4df9b1cdf1c06132?narHash=sha256-l9ryrx1Twh08a%2BgxrMGM9O/aZKEimZfa6sZVyPCImgI%3D' (2024-11-17) → 'github:Mic92/nix-index-database/6e0b7f81367069589a480b91603a10bcf71f3103?narHash=sha256-vy9Q41hBE7Zg0yakF79neVgb3i3PQMSMR7uHPpPywFE%3D' (2024-12-01) • Updated input 'nix-vscode-extensions': 'github:nix-community/nix-vscode-extensions/5cf92678e6799ce45442dee4c9cb8094843c7cfa?narHash=sha256-WwJqguc/5Q7HEwHlgDzDT8mtd8ZxInxZM2neJKC1oh8%3D' (2024-11-17) → 'github:nix-community/nix-vscode-extensions/e3a9b717e8327886d4ab6115f6989f4d1ef44e51?narHash=sha256-UhlyYYO84s36aSj0/xZdclY6CgwJSWPYtTHTOBuHodM%3D' (2024-12-02) • Updated input 'nixos-hardware': 'github:NixOS/nixos-hardware/672ac2ac86f7dff2f6f3406405bddecf960e0db6?narHash=sha256-UhWmEZhwJZmVZ1jfHZFzCg%2BZLO9Tb/v3Y6LC0UNyeTo%3D' (2024-11-16) → 'github:NixOS/nixos-hardware/fe01780d356d70fd119a19277bff71d3e78dad00?narHash=sha256-aQorWITXZu7b095UwnpUvcGt9dNJie/GO9r4hZfe2sU%3D' (2024-12-01) • Updated input 'nixpkgs': 'github:xinyangli/nixpkgs/b2644ed7258502987ad4a70cf8959bf5a26ce26d?narHash=sha256-nfqKsQhFCakM%2BeIKGf/JWu/g56rOPoGny10EZN8q7R0%3D' (2024-11-17) → 'github:xinyangli/nixpkgs/6273ca0a0fd51ac708a71e380c0cda97a72bbb07?narHash=sha256-JOIhbU0EPRXwFv1wCXGTkUZ9KnIcLxChvCqeV9hh63U%3D' (2024-12-02) • Updated input 'nixpkgs-stable': 'github:nixos/nixpkgs/c21b77913ea840f8bcf9adf4c41cecc2abffd38d?narHash=sha256-XUO0JKP1hlww0d7mm3kpmIr4hhtR4zicg5Wwes9cPMg%3D' (2024-11-15) → 'github:nixos/nixpkgs/7e1ca67996afd8233d9033edd26e442836cc2ad6?narHash=sha256-8qwPSE2g1othR1u4uP86NXxm6i7E9nHPyJX3m3lx7Q4%3D' (2024-12-01) • Updated input 'nur': 'github:nix-community/NUR/59740d792bea5caa547c9bc7ce366802ecfafb7f?narHash=sha256-GGp/rEfxRdi1BD9TlHoXxp2g9IuKDp0Jk7wYh1LacP8%3D' (2024-11-17) → 'github:nix-community/NUR/1844924bf1e7e5a98198eca17b6c27cc9a363b05?narHash=sha256-C8f6ekiZ4kP84JWLDrMigvnSK6RXQoxLEDoteXMx1yc%3D' (2024-12-02) • Updated input 'sops-nix': 'github:Mic92/sops-nix/47fc1d8c72dbd69b32ecb2019b5b648da3dd20ce?narHash=sha256-TGnMXCeXS924w9W6CvRFtUCUFr8E/RK138lHxU3vcw8%3D' (2024-11-17) → 'github:Mic92/sops-nix/c6134b6fff6bda95a1ac872a2a9d5f32e3c37856?narHash=sha256-m6/qwJAJYcidGMEdLqjKzRIjapK4nUfMq7rDCTmZajc%3D' (2024-12-02)
438 lines
9.4 KiB
Nix
438 lines
9.4 KiB
Nix
{
|
||
config,
|
||
pkgs,
|
||
lib,
|
||
...
|
||
}:
|
||
let
|
||
inherit (lib) mkForce getExe;
|
||
in
|
||
{
|
||
imports = [
|
||
# Include the results of the hardware scan.
|
||
./hardware-configuration.nix
|
||
./network.nix
|
||
../sops.nix
|
||
];
|
||
|
||
commonSettings = {
|
||
auth.enable = true;
|
||
nix = {
|
||
signing.enable = true;
|
||
};
|
||
};
|
||
|
||
# Bootloader.
|
||
boot.loader.systemd-boot.enable = true;
|
||
boot.loader.efi.canTouchEfiVariables = true;
|
||
boot.loader.efi.efiSysMountPoint = "/boot/efi";
|
||
# boot.kernelPackages = pkgs.linuxPackages_latest;
|
||
boot.kernelModules = [
|
||
"nvidia"
|
||
"nvidia_modeset"
|
||
"nvidia_uvm"
|
||
];
|
||
boot.supportedFilesystems = [ "ntfs" ];
|
||
boot.binfmt.emulatedSystems = [ "aarch64-linux" ];
|
||
|
||
documentation = {
|
||
nixos.enable = false;
|
||
man.enable = false;
|
||
};
|
||
|
||
security.tpm2 = {
|
||
enable = true;
|
||
# expose /run/current-system/sw/lib/libtpm2_pkcs11.so
|
||
pkcs11.enable = true;
|
||
# TODO: Need this until fapi-config is fixed in NixOS
|
||
pkcs11.package = pkgs.tpm2-pkcs11.override { fapiSupport = false; };
|
||
# TPM2TOOLS_TCTI and TPM2_PKCS11_TCTI env variables
|
||
tctiEnvironment.enable = true;
|
||
};
|
||
# services.gnome.gnome-keyring.enable = lib.mkForce false;
|
||
security.pam.services.login.enableGnomeKeyring = lib.mkForce false;
|
||
services.ssh-tpm-agent.enable = true;
|
||
|
||
programs.ssh.agentPKCS11Whitelist = "${config.security.tpm2.pkcs11.package}/lib/libtpm_pkcs11.so";
|
||
|
||
networking.hostName = "calcite";
|
||
|
||
services.blueman.enable = true;
|
||
|
||
programs.steam = {
|
||
enable = true;
|
||
gamescopeSession = {
|
||
enable = true;
|
||
};
|
||
};
|
||
|
||
programs.oidc-agent.enable = true;
|
||
programs.oidc-agent.providers = [
|
||
{
|
||
issuer = "https://home.xinyang.life:9201";
|
||
pubclient = {
|
||
client_id = "xdXOt13JKxym1B1QcEncf2XDkLAexMBFwiT9j6EfhhHFJhs2KM9jbjTmf8JBXE69";
|
||
client_secret = "UBntmLjC2yYCeHwsyj73Uwo9TAaecAetRwMw0xYcvNL9yRdLSUi0hUAHfvCHFeFh";
|
||
scope = "openid offline_access profile email";
|
||
};
|
||
}
|
||
];
|
||
|
||
programs.vim.enable = true;
|
||
programs.vim.defaultEditor = true;
|
||
|
||
# Keep this even if enabled in home manager
|
||
programs.fish.enable = true;
|
||
environment.shells = [ pkgs.fish ];
|
||
users.defaultUserShell = pkgs.fish;
|
||
|
||
# Setup wireguard
|
||
# Set your time zone.
|
||
time.timeZone = "Asia/Shanghai";
|
||
|
||
# Select internationalisation properties.
|
||
i18n.defaultLocale = "en_US.utf8";
|
||
|
||
i18n.extraLocaleSettings = {
|
||
LC_ADDRESS = "zh_CN.utf8";
|
||
LC_IDENTIFICATION = "zh_CN.utf8";
|
||
LC_MEASUREMENT = "zh_CN.utf8";
|
||
LC_MONETARY = "zh_CN.utf8";
|
||
LC_NAME = "zh_CN.utf8";
|
||
LC_NUMERIC = "zh_CN.utf8";
|
||
LC_PAPER = "zh_CN.utf8";
|
||
LC_TELEPHONE = "zh_CN.utf8";
|
||
LC_TIME = "en_US.utf8";
|
||
};
|
||
|
||
i18n.inputMethod = {
|
||
enable = true;
|
||
type = "fcitx5";
|
||
fcitx5 = {
|
||
addons = [ pkgs.fcitx5-rime ];
|
||
waylandFrontend = true;
|
||
};
|
||
};
|
||
|
||
# ====== GUI ======
|
||
|
||
programs.niri.enable = true;
|
||
environment.sessionVariables.NIXOS_OZONE_WL = "1";
|
||
security.pam.services.gtklock = { }; # Required by gtklock
|
||
|
||
catppuccin = {
|
||
enable = true;
|
||
accent = "peach";
|
||
flavor = "mocha";
|
||
};
|
||
|
||
xdg.portal = {
|
||
enable = true;
|
||
extraPortals = [
|
||
pkgs.xdg-desktop-portal-gnome
|
||
pkgs.xdg-desktop-portal-gtk
|
||
];
|
||
configPackages = [ pkgs.niri ];
|
||
};
|
||
|
||
systemd.user.services.xdg-desktop-portal-gtk.after = [ "graphical-session.target" ];
|
||
systemd.user.services.xdg-desktop-portal-gnome.after = [ "graphical-session.target" ];
|
||
systemd.user.services.xdg-desktop-portal-gnome.wantedBy = [ "graphical-session.target" ];
|
||
|
||
services.greetd =
|
||
let
|
||
niri-login-config = pkgs.writeText "niri-login-config.kdl" ''
|
||
animations {
|
||
off
|
||
}
|
||
hotkey-overlay {
|
||
skip-at-startup
|
||
}
|
||
'';
|
||
in
|
||
{
|
||
enable = true;
|
||
vt = 1;
|
||
settings = {
|
||
default_session = {
|
||
command = "${pkgs.dbus}/bin/dbus-run-session -- ${getExe pkgs.niri} -c ${niri-login-config} -- ${getExe pkgs.greetd.gtkgreet} -l -c niri-session -s ${pkgs.magnetic-catppuccin-gtk}/share/themes/Catppuccin-GTK-Dark/gtk-3.0/gtk.css";
|
||
};
|
||
};
|
||
};
|
||
|
||
# Keyboard mapping on internal keyboard
|
||
services.keyd = {
|
||
enable = true;
|
||
keyboards = {
|
||
"internal" = {
|
||
ids = [ "0b05:1866" ];
|
||
settings = {
|
||
main = {
|
||
capslock = "overload(control, esc)";
|
||
leftcontrol = "capslock";
|
||
};
|
||
};
|
||
};
|
||
"logiM720" = {
|
||
ids = [ "046d:b015" ];
|
||
settings = {
|
||
main = {
|
||
mouse2 = "leftmeta";
|
||
# leftalt = "mouse1";
|
||
};
|
||
};
|
||
};
|
||
"keydous" = {
|
||
ids = [
|
||
"25a7:fa14"
|
||
"3151:4002"
|
||
];
|
||
settings = {
|
||
main = {
|
||
capslock = "overload(control, esc)";
|
||
};
|
||
};
|
||
};
|
||
};
|
||
};
|
||
|
||
# Enable CUPS to print documents.
|
||
services.printing.enable = true;
|
||
services.printing.drivers = [
|
||
pkgs.hplip
|
||
pkgs.gutenprintBin
|
||
pkgs.canon-cups-ufr2
|
||
];
|
||
|
||
hardware.pulseaudio.enable = false;
|
||
security.rtkit.enable = true;
|
||
services.pipewire = {
|
||
enable = true;
|
||
wireplumber.enable = true;
|
||
alsa.enable = true;
|
||
alsa.support32Bit = true;
|
||
pulse.enable = true;
|
||
# If you want to use JACK applications, uncomment this
|
||
jack.enable = true;
|
||
};
|
||
|
||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||
users.users.xin = {
|
||
isNormalUser = true;
|
||
description = "xin";
|
||
extraGroups = [
|
||
"networkmanager"
|
||
"wheel"
|
||
"wireshark"
|
||
"tss"
|
||
];
|
||
};
|
||
|
||
services.kanidm = {
|
||
enableClient = true;
|
||
clientSettings = {
|
||
uri = "https://auth.xinyang.life";
|
||
};
|
||
};
|
||
|
||
# Smart services
|
||
services.smartd.enable = true;
|
||
|
||
# Allow unfree packages
|
||
nixpkgs.system = "x86_64-linux";
|
||
nixpkgs.config.allowUnfree = true;
|
||
nixpkgs.config.permittedInsecurePackages = [
|
||
"openssl-1.1.1w"
|
||
# FIXME: Waiting for https://github.com/NixOS/nixpkgs/pull/335753
|
||
"jitsi-meet-1.0.8043"
|
||
];
|
||
# List packages installed in system profile. To search, run:
|
||
# $ nix search wget
|
||
environment.systemPackages = with pkgs; [
|
||
imhex
|
||
oidc-agent
|
||
# Filesystem
|
||
(owncloud-client.overrideAttrs (
|
||
finalAttrs: previousAttrs: {
|
||
src = pkgs.fetchFromGitHub {
|
||
owner = "xinyangli";
|
||
repo = "client";
|
||
rev = "780d1c4c8bf02be42e118c792ff833ab10c2fdcc";
|
||
hash = "sha256-pEwcGJI9sN9nooW/RQHmi52Du6yzofgZeB8PcjwPtZ8=";
|
||
};
|
||
}
|
||
))
|
||
nfs-utils
|
||
|
||
# tesseract5 # ocr
|
||
ocrmypdf # pdfocr
|
||
|
||
gtkwave
|
||
bubblewrap
|
||
|
||
# ==== Development ==== #
|
||
# Python
|
||
# reference: https://nixos.wiki/wiki/Python
|
||
(
|
||
let
|
||
my-python-packages =
|
||
python-packages: with python-packages; [
|
||
pandas
|
||
requests
|
||
numpy
|
||
pyyaml
|
||
setuptools
|
||
];
|
||
python-with-my-packages = python3.withPackages my-python-packages;
|
||
in
|
||
python-with-my-packages
|
||
)
|
||
|
||
# ==== GUI Softwares ==== #
|
||
|
||
eudic
|
||
|
||
bibata-cursors
|
||
gthumb
|
||
oculante
|
||
|
||
# Multimedia
|
||
vlc
|
||
obs-studio
|
||
spotify
|
||
# IM
|
||
element-desktop
|
||
tdesktop
|
||
|
||
# Password manager
|
||
bitwarden
|
||
|
||
# Browser
|
||
chromium
|
||
|
||
# Writting
|
||
zotero
|
||
# onlyoffice-bin
|
||
|
||
config.nur.repos.linyinfeng.wemeet
|
||
|
||
virt-manager
|
||
];
|
||
|
||
system.stateVersion = "22.05";
|
||
|
||
system.switch.enable = false;
|
||
system.switch.enableNg = true;
|
||
|
||
sops.secrets = {
|
||
"restic/repo_url" = {
|
||
owner = "xin";
|
||
sopsFile = ./secrets.yaml;
|
||
};
|
||
"restic/repo_password" = {
|
||
owner = "xin";
|
||
sopsFile = ./secrets.yaml;
|
||
};
|
||
"gitea/envfile" = {
|
||
owner = "root";
|
||
sopsFile = ./secrets.yaml;
|
||
};
|
||
};
|
||
|
||
custom.restic = {
|
||
enable = true;
|
||
paths = [
|
||
"/backup/rootfs/var/lib"
|
||
"/backup/home"
|
||
];
|
||
};
|
||
|
||
custom.forgejo-actions-runner = {
|
||
enable = false;
|
||
tokenFile = config.sops.secrets."gitea/envfile".path;
|
||
settings = {
|
||
runner.capacity = 2;
|
||
runner.fetch_timeout = "120s";
|
||
runner.fetch_interval = "30s";
|
||
};
|
||
};
|
||
|
||
custom.prometheus = {
|
||
exporters.node.enable = true;
|
||
};
|
||
|
||
services.ollama = {
|
||
enable = true;
|
||
acceleration = "cuda";
|
||
};
|
||
|
||
# MTP support
|
||
services.gvfs.enable = true;
|
||
|
||
services.flatpak.enable = true;
|
||
|
||
# Fonts
|
||
fonts = {
|
||
packages = with pkgs; [
|
||
nerd-fonts.ubuntu-sans
|
||
nerd-fonts.ubuntu
|
||
nerd-fonts.fira-code
|
||
nerd-fonts.fira-mono
|
||
nerd-fonts.jetbrains-mono
|
||
nerd-fonts.roboto-mono
|
||
noto-fonts
|
||
noto-fonts-emoji
|
||
liberation_ttf
|
||
mplus-outline-fonts.githubRelease
|
||
dina-font
|
||
proggyfonts
|
||
ubuntu_font_family
|
||
# Chinese
|
||
wqy_microhei
|
||
wqy_zenhei
|
||
noto-fonts-cjk-sans
|
||
noto-fonts-cjk-serif
|
||
source-han-sans
|
||
source-han-serif
|
||
];
|
||
fontconfig = {
|
||
defaultFonts = {
|
||
serif = [
|
||
"Source Han Serif SC"
|
||
"Ubuntu"
|
||
];
|
||
sansSerif = [
|
||
"Source Han Sans SC"
|
||
"Ubuntu"
|
||
];
|
||
monospace = [
|
||
"JetbrainsMono Nerd Font"
|
||
"Noto Sans Mono CJK SC"
|
||
"Ubuntu"
|
||
];
|
||
};
|
||
};
|
||
enableDefaultPackages = true;
|
||
};
|
||
# Virtualization
|
||
virtualisation = {
|
||
libvirtd.enable = true;
|
||
podman = {
|
||
enable = true;
|
||
};
|
||
docker = {
|
||
enable = true;
|
||
autoPrune.enable = true;
|
||
};
|
||
};
|
||
|
||
services.nixseparatedebuginfod.enable = true;
|
||
services.bloop = {
|
||
install = true;
|
||
extraOptions = [
|
||
"-J-Xmx2G"
|
||
"-J-XX:MaxInlineLevel=20"
|
||
"-J-XX:+UseParallelGC"
|
||
];
|
||
};
|
||
}
|