153 lines
4.0 KiB
Nix
153 lines
4.0 KiB
Nix
{
|
|
inputs,
|
|
lib,
|
|
pkgs,
|
|
configVars,
|
|
...
|
|
}: let
|
|
# Disko setup
|
|
fsType = "btrfs"; # one of ext4 or btrfs. Use btrfs if using impermanence
|
|
dev = "/dev/nvme0n1"; # depends on target hardware
|
|
encrypted = true; # currrently only applies to btrfs
|
|
btrfsMountDevice =
|
|
if encrypted
|
|
then "/dev/mapper/crypted"
|
|
else "/dev/root_vg/root";
|
|
user = "sam";
|
|
impermanence = true;
|
|
pieholeIp = configVars.networking.addresses.piehole.ip;
|
|
gatewayIp = configVars.networking.addresses.gateway.ip;
|
|
semitaIp = configVars.networking.addresses.semita.ip;
|
|
|
|
in {
|
|
imports = [
|
|
# Create users for this host
|
|
../common/users/${user}
|
|
|
|
# Disk configuration
|
|
inputs.disko.nixosModules.disko
|
|
(import ../common/disks {
|
|
device = dev;
|
|
impermanence = impermanence;
|
|
fsType = fsType;
|
|
encrypted = encrypted;
|
|
})
|
|
|
|
# Impermanence
|
|
(import ../common/disks/btrfs/impermanence.nix {
|
|
btrfsMountDevice = btrfsMountDevice;
|
|
lib = lib;
|
|
})
|
|
|
|
# Import core options
|
|
./hardware-configuration.nix
|
|
../common/core
|
|
|
|
# Import optional options
|
|
../common/optional/persistence.nix
|
|
../common/optional/pipewire.nix
|
|
../common/optional/openssh.nix
|
|
../common/optional/dwm.nix
|
|
../common/optional/nfs-mounts/media.nix
|
|
../common/optional/nfs-mounts/homeshare.nix
|
|
../common/optional/printing.nix
|
|
../common/optional/docker
|
|
../common/optional/nixos-containers/nix-bitcoin.nix
|
|
../common/optional/nixos-containers/postgres.nix
|
|
../common/optional/nixos-containers/jellyfin.nix
|
|
../common/optional/nixos-containers/baseddata-worker.nix
|
|
../common/optional/nixos-containers/mongodb.nix
|
|
];
|
|
|
|
fileSystems."/media/main-ssd" = {
|
|
device = "/dev/disk/by-uuid/ba884006-e813-4b67-9fe6-62aea08b3b59";
|
|
fsType = "ext4";
|
|
};
|
|
|
|
boot = {
|
|
blacklistedKernelModules = ["snd_hda_intel" "snd_soc_skl"];
|
|
kernelPackages = pkgs.linuxPackagesFor pkgs.linux_latest;
|
|
loader = {
|
|
systemd-boot.enable = true;
|
|
efi.canTouchEfiVariables = true;
|
|
timeout = 3;
|
|
};
|
|
};
|
|
|
|
services = {
|
|
xserver = {
|
|
dpi = 144;
|
|
upscaleDefaultCursor = true;
|
|
};
|
|
};
|
|
|
|
environment.variables = {
|
|
GDK_SCALE = "2";
|
|
GDK_DPI_SCALE = "0.6";
|
|
_JAVA_OPTIONS = "-Dsun.java2d.uiScale=1.8";
|
|
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
|
|
XCURSOR_SIZE = "32";
|
|
};
|
|
|
|
hardware.firmware = [
|
|
pkgs.sof-firmware
|
|
];
|
|
|
|
# Add hardware support for intel gpus as specified here: https://nixos.wiki/wiki/Jellyfin
|
|
nixpkgs.config.packageOverrides = pkgs: {
|
|
vaapiIntel = pkgs.vaapiIntel.override {enableHybridCodec = true;};
|
|
};
|
|
|
|
hardware.opengl = {
|
|
enable = true;
|
|
extraPackages = with pkgs; [
|
|
intel-media-driver
|
|
intel-vaapi-driver
|
|
vaapiVdpau
|
|
libvdpau-va-gl
|
|
intel-compute-runtime
|
|
# only available on unstable
|
|
unstable.vpl-gpu-rt
|
|
intel-media-sdk
|
|
];
|
|
};
|
|
|
|
networking = {
|
|
hostName = "semita";
|
|
nameservers = ["${pieholeIp}" "${gatewayIp}" "8.8.8.8"];
|
|
defaultGateway = "${gatewayIp}";
|
|
useDHCP = false;
|
|
bridges = {
|
|
br0 = {
|
|
interfaces = ["eth0"];
|
|
};
|
|
};
|
|
interfaces.br0 = {
|
|
ipv4.addresses = [
|
|
{
|
|
"address" = "${semitaIp}";
|
|
"prefixLength" = 24;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
|
|
# Using non-Nix Python Packages with Binaries on NixOS https://github.com/mcdonc/.nixconfig/blob/e7885ad18b7980f221e59a21c91b8eb02795b541/videos/pydev/script.rst
|
|
programs.nix-ld.enable = true;
|
|
programs.nix-ld.libraries = with pkgs; [
|
|
zlib # numpy
|
|
libgcc # sqlalchemy
|
|
# that's where the shared libs go, you can find which one you need using
|
|
# nix-locate --top-level libstdc++.so.6 (replace this with your lib)
|
|
# ^ this requires `nix-index` pkg
|
|
];
|
|
|
|
environment.variables = {
|
|
NIX_LD_LIBRARY_PATH="/run/current-system/sw/share/nix-ld/lib";
|
|
NIX_LD="/run/current-system/sw/share/nix-ld/lib/ld.so";
|
|
LD_LIBRARY_PATH=lib.mkForce "$NIX_LD_LIBRARY_PATH";
|
|
};
|
|
|
|
services.libinput.enable = true;
|
|
}
|