forked from lix-project/lix
326 lines
6 KiB
Nix
326 lines
6 KiB
Nix
|
{
|
||
|
config,
|
||
|
pkgs,
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
|
||
|
{
|
||
|
boot = {
|
||
|
initrd = {
|
||
|
availableKernelModules = [
|
||
|
"xhci_pci"
|
||
|
"ahci"
|
||
|
];
|
||
|
kernelModules = [ "dm-snapshot" ];
|
||
|
luks.devices = {
|
||
|
croot = {
|
||
|
device = "/dev/sdb";
|
||
|
allowDiscards = true;
|
||
|
};
|
||
|
};
|
||
|
};
|
||
|
kernelModules = [ "kvm-intel" ];
|
||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||
|
|
||
|
loader = {
|
||
|
systemd-boot.enable = true;
|
||
|
efi.canTouchEfiVariables = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
hardware = {
|
||
|
enableRedistributableFirmware = true;
|
||
|
cpu.intel.updateMicrocode = true;
|
||
|
opengl.driSupport32Bit = true;
|
||
|
opengl.extraPackages = with pkgs; [
|
||
|
vaapiIntel
|
||
|
intel-media-driver
|
||
|
intel-compute-runtime
|
||
|
];
|
||
|
};
|
||
|
|
||
|
fileSystems = {
|
||
|
"/" = {
|
||
|
device = "/dev/sda2";
|
||
|
fsType = "xfs";
|
||
|
options = [ "noatime" ];
|
||
|
};
|
||
|
|
||
|
"/boot" = {
|
||
|
device = "/dev/sda1";
|
||
|
fsType = "vfat";
|
||
|
};
|
||
|
|
||
|
"/nas" = {
|
||
|
device = "nas:/";
|
||
|
fsType = "nfs4";
|
||
|
options = [
|
||
|
"ro"
|
||
|
"x-systemd.automount"
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
swapDevices = [ { device = "/dev/swap"; } ];
|
||
|
|
||
|
networking = {
|
||
|
useDHCP = false;
|
||
|
hostName = "host";
|
||
|
wireless = {
|
||
|
enable = true;
|
||
|
interfaces = [ "eth1" ];
|
||
|
};
|
||
|
interfaces = {
|
||
|
eth0.useDHCP = true;
|
||
|
eth1.useDHCP = true;
|
||
|
};
|
||
|
wg-quick.interfaces = {
|
||
|
wg0 = {
|
||
|
address = [ "2001:db8::1" ];
|
||
|
privateKeyFile = "/etc/secrets/wg0.key";
|
||
|
peers = [
|
||
|
{
|
||
|
publicKey = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=";
|
||
|
endpoint = "[2001:db8::2]:61021";
|
||
|
allowedIPs = [ "2001::db8:1::/64" ];
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
|
||
|
firewall.allowedUDPPorts = [ 4567 ];
|
||
|
};
|
||
|
|
||
|
i18n = {
|
||
|
defaultLocale = "en_US.UTF-8";
|
||
|
inputMethod.enabled = "ibus";
|
||
|
};
|
||
|
|
||
|
services = {
|
||
|
xserver = {
|
||
|
enable = true;
|
||
|
layout = "us";
|
||
|
xkbVariant = "altgr-intl";
|
||
|
xkbOptions = "ctrl:nocaps";
|
||
|
libinput.enable = true;
|
||
|
wacom.enable = true;
|
||
|
videoDrivers = [ "modesetting" ];
|
||
|
modules = [ pkgs.xf86_input_wacom ];
|
||
|
|
||
|
displayManager.sx.enable = true;
|
||
|
windowManager.i3.enable = true;
|
||
|
};
|
||
|
|
||
|
udev.extraHwdb = ''
|
||
|
# not like this mattered at all
|
||
|
# we're not running udev from here
|
||
|
'';
|
||
|
|
||
|
udev.extraRules = ''
|
||
|
# ACTION=="add", SUBSYSTEM=="input", ...
|
||
|
'';
|
||
|
};
|
||
|
|
||
|
sound.enable = true;
|
||
|
hardware.pulseaudio = {
|
||
|
enable = true;
|
||
|
package = pkgs.pulseaudioFull;
|
||
|
daemon.config = {
|
||
|
lock-memory = "yes";
|
||
|
realtime-scheduling = "yes";
|
||
|
rlimit-rtprio = "-1";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
programs = {
|
||
|
light.enable = true;
|
||
|
wireshark = {
|
||
|
enable = true;
|
||
|
package = pkgs.wireshark-qt;
|
||
|
};
|
||
|
gnupg.agent = {
|
||
|
enable = true;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
fonts.packages = with pkgs; [
|
||
|
font-awesome
|
||
|
noto-fonts
|
||
|
noto-fonts-cjk
|
||
|
noto-fonts-emoji
|
||
|
noto-fonts-extra
|
||
|
dejavu_fonts
|
||
|
powerline-fonts
|
||
|
source-code-pro
|
||
|
cantarell-fonts
|
||
|
];
|
||
|
|
||
|
users = {
|
||
|
mutableUsers = false;
|
||
|
|
||
|
users = {
|
||
|
user = {
|
||
|
isNormalUser = true;
|
||
|
group = "user";
|
||
|
extraGroups = [
|
||
|
"wheel"
|
||
|
"video"
|
||
|
"audio"
|
||
|
"dialout"
|
||
|
"users"
|
||
|
"kvm"
|
||
|
"wireshark"
|
||
|
];
|
||
|
password = "unimportant";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
groups = {
|
||
|
user = { };
|
||
|
};
|
||
|
};
|
||
|
|
||
|
security = {
|
||
|
pam.loginLimits = [
|
||
|
{
|
||
|
domain = "@audio";
|
||
|
item = "memlock";
|
||
|
type = "-";
|
||
|
value = "unlimited";
|
||
|
}
|
||
|
{
|
||
|
domain = "@audio";
|
||
|
item = "rtprio";
|
||
|
type = "-";
|
||
|
value = "99";
|
||
|
}
|
||
|
{
|
||
|
domain = "@audio";
|
||
|
item = "nofile";
|
||
|
type = "soft";
|
||
|
value = "99999";
|
||
|
}
|
||
|
{
|
||
|
domain = "@audio";
|
||
|
item = "nofile";
|
||
|
type = "hard";
|
||
|
value = "99999";
|
||
|
}
|
||
|
];
|
||
|
|
||
|
sudo.extraRules = [
|
||
|
{
|
||
|
users = [ "user" ];
|
||
|
commands = [
|
||
|
{
|
||
|
command = "${pkgs.linuxPackages.cpupower}/bin/cpupower";
|
||
|
options = [ "NOPASSWD" ];
|
||
|
}
|
||
|
];
|
||
|
}
|
||
|
];
|
||
|
};
|
||
|
|
||
|
environment.systemPackages = with pkgs; [
|
||
|
a2jmidid
|
||
|
age
|
||
|
ardour
|
||
|
bemenu
|
||
|
blender
|
||
|
breeze-icons
|
||
|
breeze-qt5
|
||
|
bubblewrap
|
||
|
calf
|
||
|
claws-mail
|
||
|
darktable
|
||
|
duperemove
|
||
|
emacs
|
||
|
feh
|
||
|
file
|
||
|
firefox
|
||
|
fluidsynth
|
||
|
gnome3.adwaita-icon-theme
|
||
|
gnuplot
|
||
|
graphviz
|
||
|
helm
|
||
|
i3status-rust
|
||
|
inkscape
|
||
|
jack2
|
||
|
jq
|
||
|
krita
|
||
|
ldns
|
||
|
libqalculate
|
||
|
libreoffice
|
||
|
man-pages
|
||
|
nheko
|
||
|
nix-diff
|
||
|
nix-index
|
||
|
nix-output-monitor
|
||
|
open-music-kontrollers.patchmatrix
|
||
|
pamixer
|
||
|
pavucontrol
|
||
|
pciutils
|
||
|
picom
|
||
|
pwgen
|
||
|
redshift
|
||
|
ripgrep
|
||
|
rlwrap
|
||
|
silver-searcher
|
||
|
soundfont-fluid
|
||
|
whois
|
||
|
wol
|
||
|
xclip
|
||
|
xdot
|
||
|
xdotool
|
||
|
xorg.xkbcomp
|
||
|
yt-dlp
|
||
|
zathura
|
||
|
borgbackup
|
||
|
linuxPackages.cpupower
|
||
|
mtr
|
||
|
kitty
|
||
|
xf86_input_wacom
|
||
|
];
|
||
|
|
||
|
environment.pathsToLink = [ "/share/soundfonts" ];
|
||
|
|
||
|
systemd.user.services.run-python = {
|
||
|
after = [ "network-online.target" ];
|
||
|
script = ''
|
||
|
exec ${pkgs.python3}/bin/python
|
||
|
'';
|
||
|
serviceConfig = {
|
||
|
CapabilityBoundingSet = [ "" ];
|
||
|
KeyringMode = "private";
|
||
|
LockPersonality = true;
|
||
|
MemoryDenyWriteExecute = true;
|
||
|
NoNewPrivileges = true;
|
||
|
PrivateDevices = true;
|
||
|
PrivateTmp = true;
|
||
|
PrivateUsers = true;
|
||
|
ProcSubset = "pid";
|
||
|
ProtectClock = true;
|
||
|
ProtectControlGroups = true;
|
||
|
ProtectHome = true;
|
||
|
ProtectHostname = true;
|
||
|
ProtectKernelLogs = true;
|
||
|
ProtectKernelModules = true;
|
||
|
ProtectKernelTunables = true;
|
||
|
ProtectProc = "invisible";
|
||
|
ProtectSystem = "strict";
|
||
|
RestrictAddressFamilies = "AF_INET AF_INET6";
|
||
|
RestrictNamespaces = true;
|
||
|
RestrictRealtime = true;
|
||
|
RestrictSUIDSGID = true;
|
||
|
SystemCallArchitectures = "native";
|
||
|
SystemCallFilter = [
|
||
|
"@system-service"
|
||
|
"~ @resources @privileged"
|
||
|
];
|
||
|
UMask = "077";
|
||
|
};
|
||
|
};
|
||
|
|
||
|
system.stateVersion = "23.11";
|
||
|
}
|