Move all files

This commit is contained in:
Florian RICHER 2024-05-25 01:32:48 +02:00
parent d0e303d0f9
commit 34c8b954e5
45 changed files with 352 additions and 645 deletions

View file

@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
imports =
[
];
}

View file

@ -7,16 +7,6 @@
{
imports =
[
../../modules/linux_gaming.nix
../../modules/system.nix
../../modules/network.nix
../../modules/keymaps/us.nix
../../modules/pipewire.nix
../../modules/plasma.nix
../../modules/plymouth.nix
../../modules # Import optional configuration
# Include the results of the hardware scan.
./hardware-configuration.nix
];

5
lib/default.nix Normal file
View file

@ -0,0 +1,5 @@
{ config, ... }:
{
}

View file

@ -1,26 +0,0 @@
{ config, pkgs, lib, ... }:
with lib;
{
options.customModules.AI = {
enable = mkEnableOption ''
Enable AI
'';
};
config =
let
cfg = config.customModules.AI;
nvidiaEnabled = config.hardware.nvidia.modesetting.enable;
in
mkIf cfg.enable {
services.ollama = {
enable = true;
acceleration =
if nvidiaEnabled then
"cuda"
else
null;
};
}
// mkIf nvidiaEnabled { environment.systemPackages = with pkgs; [cudatoolkit]; };
}

View file

@ -1,5 +0,0 @@
{ config, pkgs, ... }:
{
hardware.bluetooth.enable = true;
}

View file

@ -1,7 +1,10 @@
{ ... }:
{ config, pkgs, ... }:
{
imports = [
./gpuPassthrough
./cli
./desktop
./server
./system
];
}

View file

@ -4,9 +4,12 @@
imports = [
./chromium
./flatpak
./gamingKernel
./gnome
./hyprland
./jetbrains-toolbox
./jetbrainsToolbox
./kitty
./plasma
./vscode
];
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.desktop.gamingKernel;
in
{
options.modules.desktop.gamingKernel = {
enable = mkEnableOption ''
Enable gaming kernel with my custom configurations
'';
};
config = mkIf cfg.enable {
virtualisation.waydroid.enable = true;
};
}

View file

@ -0,0 +1,23 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.desktop.gnome;
in
{
options.modules.desktop.gnome = {
enable = mkEnableOption ''
Enable gnome with my custom configurations
'';
};
config = mkIf cfg.enable {
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Gnome Desktop Environment.
services.xserver.displayManager.gdm.enable = true;
# Enable the GNOME shell.
services.xserver.desktopManager.gnome.enable = true;
};
}

View file

@ -0,0 +1,42 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.plymouth;
in
{
options.modules.system.plymouth = {
enable = mkEnableOption ''
Enable plymouth with my custom configurations
'';
};
config = mkIf cfg.enable {
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager = {
sddm.enable = true;
defaultSession = "plasma";
};
services.desktopManager.plasma6.enable = true;
programs.kdeconnect.enable = true;
environment.systemPackages = with pkgs; with kdePackages; [
krfb # Use by kdeconnect for virtualmonitorplugin "krfb-virtualmonitor"
discover
# Usefull for automatic informations collect software like KDE
vulkan-tools # For vulkaninfo command
wayland-utils # For wayland-info command
glxinfo
clinfo
];
# Uncomment when kwin is available in nixpkgs and NVIDIA 555
nixpkgs.overlays = [
(import ../overlays/kwin)
];
};
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.desktop.waydroid;
in
{
options.modules.desktop.waydroid = {
enable = mkEnableOption ''
Enable waydroid with my custom configurations
'';
};
config = mkIf cfg.enable {
boot.kernelPackages = pkgs.linuxPackages_zen;
};
}

View file

@ -1,7 +0,0 @@
{ config, pkgs, ... }:
{
virtualisation.docker.enable = true;
virtualisation.docker.enableNvidia = config.hardware.nvidia.modesetting.enable;
users.users.florian.extraGroups = [ "docker" ];
}

View file

@ -1,11 +0,0 @@
{ config, pkgs, ... }:
{
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the Gnome Desktop Environment.
services.xserver.displayManager.gdm.enable = true;
# Enable the GNOME shell.
services.xserver.desktopManager.gnome.enable = true;
}

View file

@ -1,26 +0,0 @@
{ config, pkgs, lib, ... }:
with lib;
{
options.customModules.gpuPassthrough = {
enable = mkEnableOption ''
Enable gpu passthgrouth with my custom configurations
'';
};
config =
let
cfg = config.customModules.gpuPassthrough;
in
mkIf cfg.enable {
programs.virt-manager.enable = true;
virtualisation.libvirtd = {
enable = true;
hooks.qemu = {
is_working = "${pkgs.writeShellScript "testHook.sh" ''
touch /tmp/qemu_hook_is_working
''}";
};
};
};
}

View file

@ -1,28 +0,0 @@
#!/bin/bash
## Load the config file
source "/etc/libvirt/hooks/kvm.conf"
## Calculate number of hugepages to allocate from memory (in MB)
HUGEPAGES="$(($VM_MEMORY/$(($(grep Hugepagesize /proc/meminfo | awk '{print $2}')/1024))))"
echo "Allocating hugepages..."
echo $HUGEPAGES > /proc/sys/vm/nr_hugepages
ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages)
TRIES=0
while (( $ALLOC_PAGES != $HUGEPAGES && $TRIES < 1000 ))
do
echo 1 > /proc/sys/vm/compact_memory ## defrag ram
echo $HUGEPAGES > /proc/sys/vm/nr_hugepages
ALLOC_PAGES=$(cat /proc/sys/vm/nr_hugepages)
echo "Succesfully allocated $ALLOC_PAGES / $HUGEPAGES"
let TRIES+=1
done
if [ "$ALLOC_PAGES" -ne "$HUGEPAGES" ]
then
echo "Not able to allocate all hugepages. Reverting..."
echo 0 > /proc/sys/vm/nr_hugepages
exit 1
fi

View file

@ -1,6 +0,0 @@
#!/bin/bash
## Enable CPU governor on-demand mode
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "ondemand" > $file; done
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

View file

@ -1,6 +0,0 @@
#!/bin/bash
## Enable CPU governor performance mode
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
for file in /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor; do echo "performance" > $file; done
cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

View file

@ -1,3 +0,0 @@
#!/bin/bash
echo 0 > /proc/sys/vm/nr_hugepages

View file

@ -1,34 +0,0 @@
#!/bin/bash
# Helpful to read output when debugging
set -x
# Load variables
source "/etc/libvirt/hooks/kvm.conf"
# Stop display manager
systemctl stop gdm.service
# Unbind VTconsoles
echo 0 > /sys/class/vtconsole/vtcon0/bind
echo 0 > /sys/class/vtconsole/vtcon1/bind
# Unbind EFI-Framebuffer
echo efi-framebuffer.0 > /sys/bus/platform/drivers/efi-framebuffer/unbind
# Avoid a Race condition
sleep 5
# Unload all Nvidia drivers
modprobe -r nvidia_drm
modprobe -r nvidia_modeset
modprobe -r nvidia_uvm
modprobe -r nvidia
# Unbind the GPU from display driver
virsh nodedev-detach $VIRSH_GPU_VIDEO
virsh nodedev-detach $VIRSH_GPU_AUDIO
virsh nodedev-detach $VIRSH_USB
virsh nodedev-detach $VIRSH_SERIAL_BUS
# Load VFIO Kernel Module
modprobe vfio-pci

View file

@ -1,35 +0,0 @@
#!/bin/bash
set -x
# Load variables
source "/etc/libvirt/hooks/kvm.conf"
# Unload VFIO-PCI Kernel Driver
modprobe -r vfio-pci
modprobe -r vfio_iommu_type1
modprobe -r vfio
# Re-Bind GPU to Nvidia Driver
virsh nodedev-reattach $VIRSH_GPU_VIDEO
virsh nodedev-reattach $VIRSH_GPU_AUDIO
virsh nodedev-reattach $VIRSH_USB
virsh nodedev-reattach $VIRSH_SERIAL_BUS
# Rebind VT consoles
echo 1 > /sys/class/vtconsole/vtcon0/bind
echo 1 > /sys/class/vtconsole/vtcon1/bind
# Bind EFI-Framebuffer
nvidia-xconfig --query-gpu-info > /dev/null 2>&1
echo "efi-framebuffer.0" > /sys/bus/platform/drivers/efi-framebuffer/bind
# Load all Nvidia drivers
modprobe nvidia_drm
modprobe nvidia_modeset
modprobe drm_kms_helper
modprobe drm
modprobe nvidia_uvm
modprobe nvidia
# Restart Display Manager
systemctl start gdm.service

View file

@ -1,247 +0,0 @@
<domain xmlns:qemu="http://libvirt.org/schemas/domain/qemu/1.0" type="kvm">
<name>win10</name>
<uuid>b3d036ee-75ff-43fe-be76-b8c5494f5dd7</uuid>
<metadata>
<libosinfo:libosinfo xmlns:libosinfo="http://libosinfo.org/xmlns/libvirt/domain/1.0">
<libosinfo:os id="http://microsoft.com/win/10"/>
</libosinfo:libosinfo>
</metadata>
<memory unit="KiB">25165824</memory>
<currentMemory unit="KiB">25165824</currentMemory>
<memoryBacking>
<hugepages/>
</memoryBacking>
<vcpu placement="static">32</vcpu>
<iothreads>1</iothreads>
<cputune>
<vcpupin vcpu="0" cpuset="0"/>
<vcpupin vcpu="1" cpuset="1"/>
<vcpupin vcpu="2" cpuset="2"/>
<vcpupin vcpu="3" cpuset="3"/>
<vcpupin vcpu="4" cpuset="4"/>
<vcpupin vcpu="5" cpuset="5"/>
<vcpupin vcpu="6" cpuset="6"/>
<vcpupin vcpu="7" cpuset="7"/>
<vcpupin vcpu="8" cpuset="8"/>
<vcpupin vcpu="9" cpuset="9"/>
<vcpupin vcpu="10" cpuset="10"/>
<vcpupin vcpu="11" cpuset="11"/>
<vcpupin vcpu="12" cpuset="12"/>
<vcpupin vcpu="13" cpuset="13"/>
<vcpupin vcpu="14" cpuset="14"/>
<vcpupin vcpu="15" cpuset="15"/>
<vcpupin vcpu="16" cpuset="16"/>
<vcpupin vcpu="17" cpuset="17"/>
<vcpupin vcpu="18" cpuset="18"/>
<vcpupin vcpu="19" cpuset="19"/>
<vcpupin vcpu="20" cpuset="20"/>
<vcpupin vcpu="21" cpuset="21"/>
<vcpupin vcpu="22" cpuset="22"/>
<vcpupin vcpu="23" cpuset="23"/>
<vcpupin vcpu="24" cpuset="24"/>
<vcpupin vcpu="25" cpuset="25"/>
<vcpupin vcpu="26" cpuset="26"/>
<vcpupin vcpu="27" cpuset="27"/>
<vcpupin vcpu="28" cpuset="28"/>
<vcpupin vcpu="29" cpuset="29"/>
<vcpupin vcpu="30" cpuset="30"/>
<vcpupin vcpu="31" cpuset="31"/>
<emulatorpin cpuset="32-63"/>
<iothreadpin iothread="1" cpuset="32-63"/>
</cputune>
<os>
<type arch="x86_64" machine="pc-q35-6.2">hvm</type>
<loader readonly="yes" type="pflash">/usr/share/edk2-ovmf/x64/OVMF_CODE.fd</loader>
<nvram>/var/lib/libvirt/qemu/nvram/win10_VARS.fd</nvram>
</os>
<features>
<acpi/>
<apic/>
<hyperv mode="custom">
<relaxed state="on"/>
<vapic state="on"/>
<spinlocks state="on" retries="8191"/>
<vendor_id state="on" value="buttplug"/>
</hyperv>
<kvm>
<hidden state="on"/>
</kvm>
<vmport state="off"/>
<ioapic driver="kvm"/>
</features>
<cpu mode="host-passthrough" check="none" migratable="on">
<topology sockets="1" dies="2" cores="8" threads="2"/>
<cache mode="passthrough"/>
<feature policy="require" name="topoext"/>
</cpu>
<clock offset="localtime">
<timer name="rtc" tickpolicy="catchup"/>
<timer name="pit" tickpolicy="delay"/>
<timer name="hpet" present="no"/>
<timer name="hypervclock" present="yes"/>
</clock>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<pm>
<suspend-to-mem enabled="no"/>
<suspend-to-disk enabled="no"/>
</pm>
<devices>
<emulator>/usr/bin/qemu-system-x86_64</emulator>
<disk type="file" device="disk">
<driver name="qemu" type="raw" cache="none" io="threads" discard="unmap" iothread="1" queues="32"/>
<source file="/home/florian/kvm/win10.img"/>
<target dev="vda" bus="virtio"/>
<boot order="1"/>
<address type="pci" domain="0x0000" bus="0x04" slot="0x00" function="0x0"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/home/florian/T&#xE9;l&#xE9;chargements/Win10_21H2_French_x64.iso"/>
<target dev="sdb" bus="sata"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0" unit="1"/>
</disk>
<disk type="file" device="cdrom">
<driver name="qemu" type="raw"/>
<source file="/home/florian/T&#xE9;l&#xE9;chargements/virtio-win-0.1.215.iso"/>
<target dev="sdc" bus="sata"/>
<readonly/>
<address type="drive" controller="0" bus="0" target="0" unit="2"/>
</disk>
<controller type="usb" index="0" model="qemu-xhci" ports="15">
<address type="pci" domain="0x0000" bus="0x02" slot="0x00" function="0x0"/>
</controller>
<controller type="sata" index="0">
<address type="pci" domain="0x0000" bus="0x00" slot="0x1f" function="0x2"/>
</controller>
<controller type="pci" index="0" model="pcie-root"/>
<controller type="pci" index="1" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="1" port="0x10"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="2" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="2" port="0x11"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x1"/>
</controller>
<controller type="pci" index="3" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="3" port="0x12"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x2"/>
</controller>
<controller type="pci" index="4" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="4" port="0x13"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x3"/>
</controller>
<controller type="pci" index="5" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="5" port="0x14"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x4"/>
</controller>
<controller type="pci" index="6" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="6" port="0x15"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x5"/>
</controller>
<controller type="pci" index="7" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="7" port="0x16"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x6"/>
</controller>
<controller type="pci" index="8" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="8" port="0x17"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x02" function="0x7"/>
</controller>
<controller type="pci" index="9" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="9" port="0x18"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x0" multifunction="on"/>
</controller>
<controller type="pci" index="10" model="pcie-root-port">
<model name="pcie-root-port"/>
<target chassis="10" port="0x19"/>
<address type="pci" domain="0x0000" bus="0x00" slot="0x03" function="0x1"/>
</controller>
<controller type="virtio-serial" index="0">
<address type="pci" domain="0x0000" bus="0x03" slot="0x00" function="0x0"/>
</controller>
<interface type="network">
<mac address="52:54:00:83:f9:1a"/>
<source network="default"/>
<model type="virtio"/>
<address type="pci" domain="0x0000" bus="0x01" slot="0x00" function="0x0"/>
</interface>
<input type="mouse" bus="ps2"/>
<input type="keyboard" bus="ps2"/>
<audio id="1" type="none"/>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x42" slot="0x00" function="0x0"/>
</source>
<rom file="/home/florian/kvm/patched-vbios.rom"/>
<address type="pci" domain="0x0000" bus="0x06" slot="0x00" function="0x0"/>
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x42" slot="0x00" function="0x1"/>
</source>
<address type="pci" domain="0x0000" bus="0x07" slot="0x00" function="0x0"/>
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x42" slot="0x00" function="0x2"/>
</source>
<address type="pci" domain="0x0000" bus="0x08" slot="0x00" function="0x0"/>
</hostdev>
<hostdev mode="subsystem" type="pci" managed="yes">
<source>
<address domain="0x0000" bus="0x42" slot="0x00" function="0x3"/>
</source>
<address type="pci" domain="0x0000" bus="0x09" slot="0x00" function="0x0"/>
</hostdev>
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x0b05"/>
<product id="0x193e"/>
</source>
<address type="usb" bus="0" port="4"/>
</hostdev>
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0xb58e"/>
<product id="0x9e84"/>
</source>
<address type="usb" bus="0" port="5"/>
</hostdev>
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x8087"/>
<product id="0x0a2b"/>
</source>
<address type="usb" bus="0" port="6"/>
</hostdev>
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x1b1c"/>
<product id="0x1b5a"/>
</source>
<address type="usb" bus="0" port="2"/>
</hostdev>
<memballoon model="virtio">
<address type="pci" domain="0x0000" bus="0x05" slot="0x00" function="0x0"/>
</memballoon>
</devices>
<qemu:commandline>
<qemu:arg value="-device"/>
<qemu:arg value="intel-hda"/>
<qemu:arg value="-rtc"/>
<qemu:arg value="base=localtime"/>
<qemu:arg value="-cpu"/>
<qemu:arg value="host,host-cache-info=on,kvm=off,l3-cache=on,kvm-hint-dedicated=on,migratable=no,hv_relaxed,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_vendor_id=buttplug,+invtsc,+topoext"/>
</qemu:commandline>
</domain>

View file

@ -1,5 +0,0 @@
{ config, pkgs, ... }:
{
boot.kernelPackages = pkgs.linuxPackages_zen;
}

View file

@ -1,19 +0,0 @@
{ config, pkgs, ... }:
{
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
networking.firewall.enable = false;
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
}

View file

@ -1,51 +0,0 @@
{ config, pkgs, ... }: {
# Enable nix ld
programs.nix-ld.enable = true;
programs.nix-ld.package = pkgs.nix-ld-rs;
# Sets up all the libraries to load
programs.nix-ld.libraries = with pkgs; [
zlib
zstd
stdenv.cc.cc
curl
openssl
attr
libssh
bzip2
libxml2
acl
libsodium
util-linux
xz
systemd
fuse3
icu
nss
expat
# For UE5
glibc
libdrm
libgcc
vulkan-loader
vulkan-tools
vulkan-extension-layer
vulkan-validation-layers
SDL2.dev
libGL
xorg.libX11
xorg.libXScrnSaver
xorg.libXau
xorg.libXcursor
xorg.libXext
xorg.libXfixes
xorg.libXi
xorg.libXrandr
xorg.libXrender
xorg.libXxf86vm
xorg.libxcb
python311
];
}

View file

@ -1,40 +0,0 @@
{ config, pkgs, ... }:
{
# Enable OpenGL
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
# Load nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
}

View file

@ -1,11 +0,0 @@
{ config, pkgs, ... }:
{
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
};
};
}

View file

@ -1,11 +0,0 @@
{ config, pkgs, ... }:
{
services.openvscode-server = {
enable = true;
host = "0.0.0.0";
user = "florian";
withoutConnectionToken = true;
telemetryLevel = "off";
};
}

View file

@ -1,20 +0,0 @@
{ config, pkgs, ... }:
{
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = 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;
};
}

View file

@ -1,24 +0,0 @@
{ config, pkgs, ... }:
{
# Enable the X11 windowing system.
services.xserver.enable = true;
# Enable the KDE Plasma Desktop Environment.
services.displayManager = {
sddm.enable = true;
defaultSession = "plasma";
};
services.desktopManager.plasma6.enable = true;
programs.kdeconnect.enable = true;
environment.systemPackages = with pkgs; with kdePackages; [
krfb # Use by kdeconnect for virtualmonitorplugin "krfb-virtualmonitor"
discover
];
# Uncomment when kwin is available in nixpkgs and NVIDIA 555
nixpkgs.overlays = [
(import ../overlays/kwin)
];
}

View file

@ -1,4 +0,0 @@
{ config, pkgs, ... }:
{
boot.plymouth.enable = true;
}

View file

@ -0,0 +1,8 @@
{ config, pkgs, ... }:
{
imports = [
./docker
./openssh
];
}

View file

@ -0,0 +1,19 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.server.docker;
in
{
options.modules.server.docker = {
enable = mkEnableOption ''
Enable docker with my custom configurations
'';
};
config = mkIf cfg.enable {
virtualisation.docker = {
enable = true;
enableNvidia = config.modules.system.nvidia.enable;
};
};
}

View file

@ -0,0 +1,22 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.server.openssh;
in
{
options.modules.server.openssh = {
enable = mkEnableOption ''
Enable openssh with my custom configurations
'';
};
config = mkIf cfg.enable {
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
};
};
};
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.bluetooth;
in
{
options.modules.system.bluetooth = {
enable = mkEnableOption ''
Enable pipewire with my custom configurations
'';
};
config = mkIf cfg.enable {
hardware.bluetooth.enable = true;
};
}

View file

@ -0,0 +1,15 @@
{ config, pkgs, ... }:
{
imports = [
./bluetooth
./keymaps
./nvidia
./pipewire
./plymouth
./printing
# Common configuration
./system.nix
];
}

View file

@ -0,0 +1,23 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.keymaps;
in
{
options.modules.system.keymaps = {
layout = mkOption {
default = "fr";
example = "fr";
description = ''
Set key layout (fr, us)
'';
type = types.string;
};
};
config = {
imports = [
./${cfg.layout}
];
};
}

View file

@ -0,0 +1,51 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.nvidia;
in
{
options.modules.system.nvidia = {
enable = mkEnableOption ''
Enable nvidia with my custom configurations
'';
};
config = mkIf cfg.enable {
# Enable OpenGL
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
# Load nvidia driver for Xorg and Wayland
services.xserver.videoDrivers = ["nvidia"];
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
powerManagement.enable = false;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
powerManagement.finegrained = false;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
# Currently alpha-quality/buggy, so false is currently the recommended setting.
open = false;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.beta;
};
};
}

View file

@ -0,0 +1,31 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.pipewire;
in
{
options.modules.system.pipewire = {
enable = mkEnableOption ''
Enable pipewire with my custom configurations
'';
};
config = mkIf cfg.enable {
# Enable sound with pipewire.
sound.enable = true;
hardware.pulseaudio.enable = false;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = 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;
};
};
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.plymouth;
in
{
options.modules.system.plymouth = {
enable = mkEnableOption ''
Enable plymouth with my custom configurations
'';
};
config = mkIf cfg.enable {
boot.plymouth.enable = true;
};
}

View file

@ -0,0 +1,16 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.modules.system.printing;
in
{
options.modules.system.printing = {
enable = mkEnableOption ''
Enable printing with my custom configurations
'';
};
config = mkIf cfg.enable {
services.printing.enable = true;
};
}

View file

@ -26,12 +26,6 @@
environment.systemPackages = with pkgs; [
vim
nixd
# Usefull for automatic informations collect software like KDE
vulkan-tools # For vulkaninfo command
wayland-utils # For wayland-info command
glxinfo
clinfo
];
# Define a user account. Don't forget to set a password with passwd.
@ -41,10 +35,23 @@
extraGroups = [ "networkmanager" "wheel" ];
};
services.flatpak.enable = true; # Important can't be enabled from home-manager
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Enable CUPS to print documents.
services.printing.enable = true;
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking = {
networkmanager.enable = true;
firewall.enable = true;
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions

View file

@ -1,4 +0,0 @@
{ config, pkgs, ... }:
{
virtualisation.waydroid.enable = true;
}