All NixOS config changes since last commit

This commit is contained in:
Arne Keller 2022-02-04 18:59:47 +01:00
parent 87c74b0141
commit 2f77fe642b

View File

@ -1,4 +1,4 @@
{ config, pkgs, ... }:
{ config, lib, pkgs, ... }:
let
my-python3-packages = python3-packages: with python3-packages; [
@ -11,6 +11,10 @@ let
pyside2
markdown
psutil
scipy
numpy
pillow
];
#my-python2-packages = python2-packages: with python2-packages; [
# pip setuptools
@ -22,8 +26,12 @@ let
# pyopengl-accelerate
#];
python3-with-my-packages = pkgs.python3.withPackages my-python3-packages;
#python2-with-my-packages = pkgs.python2.withPackages my-python2-packages;
#python2-with-my-packages = pkgs.python2.withPackages my-python2-packages;
linuxPackages = pkgs.linuxPackages_5_10;
mpvPlus = pkgs.mpv-with-scripts.override {
scripts = [ pkgs.mpvScripts.mpris ];
};
microsoftErgonomicKeyboard = pkgs.callPackage /home/arne/nixpkgs/microsoft-ergonomic-keyboard { kernel = linuxPackages.kernel; };
in
{
imports =
@ -31,13 +39,20 @@ in
./hardware-configuration.nix
];
# Use the systemd-boot EFI boot loader.
nix.autoOptimiseStore = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.kernelPackages = linuxPackages;
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
boot.kernelModules = [ "v4l2loopback" ];
boot.kernelParams = [ "mitigations=off" ];
#boot.kernelPatches = [
# {
# name = "fixup MS keyboard";
# patch = /home/arne/src/linux-5.10.62/0001-change-it.patch;
# }
#];
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback microsoftErgonomicKeyboard ];
boot.kernelModules = [ "v4l2loopback" "nct6775" "hid_microsoft_ergonomic" ];
boot.kernelParams = [ "mitigations=off" "amdgpu.noretry=0" ];
boot.kernel.sysctl = {
# enable Alt+SysRq commands
"kernel.sysrq" = 1;
@ -57,12 +72,32 @@ in
boot.tmpOnTmpfs = true;
hardware.cpu.amd.updateMicrocode = true;
hardware.mcelog.enable = true;
services.fstrim.enable = true;
services.journald.extraConfig = "SystemMaxUse=100M";
#hardware.bluetooth.enable = true;
networking.useDHCP = false;
networking.interfaces.enp39s0.useDHCP = true;
#networking.interfaces.enp42s0f3u2.useDHCP = false;
#networking.interfaces.enp42s0f3u2.proxyARP = true;
#networking.interfaces.enp42s0f3u2.ipv4.routes = [
# {
# address = "10.0.0.0";
# prefixLength = 24;
# }
#];
#networking.interfaces.enp42s0f3u2.ipv4.addresses = [
# {
# address = "10.0.0.1";
# prefixLength = 24;
# }
#];
networking.hostName = "nixOS";
#networking.hosts = {
# "10.0.0.2" = [ "arne-ThinkPad-T410" ];
#};
networking.firewall.logRefusedConnections = false;
networking.firewall.rejectPackets = true;
networking.firewall.allowedTCPPorts = [ 12783 12975 25565 ];
@ -80,7 +115,7 @@ in
security.sudo.extraConfig = ''
Defaults insults
Defaults timestamp_timeout=-1
Defaults timestamp_timeout=10
'';
time.timeZone = "Europe/Berlin";
@ -99,7 +134,6 @@ in
KDE_UTF8_FILENAMES = "1";
ANDROID_SDK_HOME = "$HOME/.cache";
GRADLE_USER_HOME = "$HOME/.cache/gradle";
MATHEMATICA_USERBASE = "$HOME/.cache/mathematica";
XCOMPOSECACHE = "$HOME/.cache/X11/xcompose";
};
environment.extraInit = ''
@ -125,17 +159,29 @@ in
services.xserver.enable = true;
services.xserver.enableCtrlAltBackspace = true;
services.xserver.libinput.enable = true;
services.xserver.layout = "us";
services.xserver.xkbVariant = "dvorak";
#services.xserver.libinput.accelProfile = "flat";
services.xserver.layout = "dvorak-custom";
services.xserver.extraLayouts = {
dvorak-custom = {
description = "Dvorak customized";
languages = [ "eng" ];
symbolsFile = /home/arne/.config/dvorak-custom;
};
};
services.xserver.autoRepeatDelay = 183;
services.xserver.autoRepeatInterval = 33;
services.xserver.displayManager.sddm.enable = true;
services.xserver.displayManager.job.logToJournal = true;
services.xserver.desktopManager.plasma5.enable = true;
xdg.portal.enable = true;
xdg.portal.gtkUsePortal = true;
fonts.enableDefaultFonts = true;
fonts.fonts = with pkgs; [
noto-fonts-emoji
liberation_ttf
cozette
font-awesome
];
virtualisation.docker.enable = true;
@ -143,6 +189,10 @@ in
#virtualisation.anbox.enable = true;
# services.printing.enable = true;
services.trilium-server.enable = true;
#services.trilium-server.dataDir = "/home/arne/.local/share/trilium-sync-server-data";
#services.trilium-server.host = "192.168.178.21";
services.trilium-server.port = 12783;
services.boinc.enable = true;
services.vnstat.enable = true;
services.gitlab-runner.enable = true;
@ -150,11 +200,12 @@ in
shell = {
registrationConfigFile = "/home/arne/Documents/gitlab-runner-registration";
executor = "shell";
buildsDir = "/tmp/builds_dir";
};
shell2 = {
registrationConfigFile = "/home/arne/Documents/gitlab-runner-registration-kv";
executor = "shell";
};
#shell2 = {
# registrationConfigFile = "/home/arne/Documents/gitlab-runner-registration-kv";
# executor = "shell";
#};
};
services.openvpn.servers = {
kit-split = {
@ -172,9 +223,24 @@ in
};
# services.logmein-hamachi.enable = true;
sound.enable = true;
hardware.pulseaudio.enable = true;
hardware.pulseaudio.support32Bit = true;
sound.enable = false;
#hardware.pulseaudio.enable = false;
#hardware.pulseaudio.support32Bit = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
# this does not exist (yet?)
#pulse.support32Bit = true;
# If you want to use JACK applications, uncomment this
#jack.enable = true;
# use the example session manager (no others are packaged yet so this is enabled by default,
# no need to redefine it in your config for now)
#media-session.enable = true;
};
hardware.opengl.enable = true;
hardware.opengl.driSupport = true;
@ -184,7 +250,7 @@ in
users.users.arne = {
isNormalUser = true;
extraGroups = [ "wheel" "docker" "adbusers" ];
extraGroups = [ "wheel" "docker" "adbusers" "wireshark" "audio" ];
shell = pkgs.zsh;
};
@ -197,55 +263,43 @@ in
"mathematica"
"idea-ultimate"
"android-studio-stable"
#"logmein-hamachi"
];
packageOverrides = super: let self = super.pkgs; in {
maven = super.maven.override {
jdk = super.pkgs.jdk11;
};
# remove tesseract and ImageMagick
ripgrep-all = super.ripgrep-all.overrideDerivation (attrs: {
postInstall = ''
wrapProgram $out/bin/rga \
--prefix PATH ":" "${super.pkgs.lib.makeBinPath [ super.pkgs.pandoc super.pkgs.poppler_utils super.pkgs.ripgrep ]}"
'';
doInstallCheck = false;
# remove openssl/curl
rustup = super.rustup.overrideAttrs (attrs: rec {
buildInputs = [ super.pkgs.zlib ];
cargoBuildFlags = [ "--no-default-features --features no-self-update,reqwest-backend,reqwest-rustls-tls" ];
doCheck = false;
});
qbittorrent = super.qbittorrent.overrideAttrs (attrs: rec {
version = "4.3.4.1";
src = pkgs.fetchFromGitHub {
owner = "qbittorrent";
repo = "qbittorrent";
rev = "release-4.3.4.1"; # TODO: is there some reason this also has to be specified?
sha256 = "0hpv99ky077h5rvxxd76l5xv99ivqa1hq6739jp1gvl4w6w3cbgc";
};
});
# remove openssl
#rustup = super.rustup.overrideAttrs (attrs: rec {
# buildInputs = [ super.pkgs.zlib ];
# # this does not actually work due to #103130
# cargoBuildFlags = [ "--no-default-features" "--features" "no-self-update" "reqwest-backend" "reqwest-rustls-tls" ];
# doCheck = false;
#});
};
};
programs.steam.enable = true;
programs.zsh.enable = true;
programs.zsh.enableGlobalCompInit = false;
programs.zsh.interactiveShellInit = ''
source ${pkgs.nix-index}/etc/profile.d/command-not-found.sh
'';
programs.command-not-found.enable = false;
programs.adb.enable = true;
programs.gnupg.agent = {
programs.wireshark.enable = true;
programs.wireshark.package = pkgs.wireshark;
programs.gnupg.agent = {
enable = true;
enableSSHSupport = true;
enableSSHSupport = false;
pinentryFlavor = "qt";
};
# do not show unlock prompt on login
security.pam.services.sddm.enableKwallet = lib.mkOverride 0 false;
environment.systemPackages = with pkgs; [
# standard utilities
coreutils
gzip
gcc
manpages
dnsutils
vim htop curl wget file zsh git
vim htop curl wget file zsh git git-branchless
tree killall
# premium utilities
jq tmux
@ -255,6 +309,7 @@ in
iotop
img2pdf
pdftk
exa
fd
zoxide
fzf
@ -263,39 +318,47 @@ in
ffmpeg_4
# programming environments
geckodriver
#geckodriver
#python2-with-my-packages
python3-with-my-packages
jdk11 maven visualvm
jdk8
#visualvm
rustup
jupyter
cargo-outdated cargo-edit
#jupyter
vscodium
jetbrains.idea-ultimate
#androidStudioPackages.stable
nodejs
#nodejs
gcc10 gnumake cmake
llvmPackages_11.bintools
# cplex
key
# CLI applications
lynx
droidcam
sqlite
borgbackup
nix-tree
gallery-dl
youtube-dl
plantuml
tectonic
nix-tree rnix-hashes
#gallery-dl
yt-dlp
#plantuml
#tectonic
docker-compose
qemu
graphviz
# GUI applications
sqlitebrowser
gimp
(gimp-with-plugins.override { plugins = [ gimpPlugins.gmic ]; })
firefox
thunderbird
ungoogled-chromium
keepassxc
josm
anki
#anki
tor-browser-bundle-bin
mathematica
gparted
@ -303,27 +366,25 @@ in
qdirstat
filelight
libreoffice-fresh
filezilla
qbittorrent
tdesktop
yakuake okular akregator kwalletmanager gwenview ark kcalc kcolorchooser kompare k3b kcharselect
kdeApplications.kruler
alacritty
okular akregator kwalletmanager gwenview ark kcalc kcolorchooser kompare k3b kcharselect kmag
plasma5Packages.kruler
kdeconnect
plasma-vault
ksshaskpass
notepadqq
mpv
bitcoin
mpvPlus
xorg.xkbcomp
#xorg.xkbcomp
xorg.xrandr
#evtest
lm_sensors
xclip
ntfs3g
cryptsetup pinentry-qt
wineWowPackages.full
winetricks
cdrkit
vnstat
aspellDicts.de
@ -332,15 +393,19 @@ in
linuxPackages.perf
perf-tools
smartmontools
libfaketime
afl
#libfaketime
#afl
# Games
multimc
minecraft
#minecraft
#logmein-hamachi
update-resolv-conf
update-resolv-conf # for OpenVPN configs
# List of packages to get on demand
#wineWowPackages.full
#winetricks
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions