diff --git a/.config/i3/config b/.config/i3/config index e83980e..9be07b1 100644 --- a/.config/i3/config +++ b/.config/i3/config @@ -361,7 +361,7 @@ exec --no-startup-id /usr/bin/env dunst #exec --no-startup-id sleep 2 && xfce4-terminal #exec --no-startup-id sleep 7 && firefox https://github.com/endeavouros-team/endeavouros-i3wm-setup/blob/main/force-knowledge.md #exec --no-startup-id sleep 3 && thunar -exec --no-startup-id i3-msg workspace $ws9; exec discord +#exec --no-startup-id i3-msg workspace $ws9; exec discord exec --no-startup-id i3-msg workspace $ws10; exec firefox exec --no-startup-id sleep 3 && killall picom ############### diff --git a/flake.nix b/flake.nix index cde57e9..89222f1 100644 --- a/flake.nix +++ b/flake.nix @@ -180,6 +180,15 @@ ./systems/test-pc/configuration.nix ]; }; + + "zel-mini-pc" = mkHost { + modules = [ + disko.nixosModules.disko + ./users/kopatz + ./systems/zel-mini-pc/configuration.nix + nixos-hardware.nixosModules.common-gpu-intel-kaby-lake + ]; + }; "framework" = mkHost { modules = [ ### User specific ### diff --git a/systems/zel-mini-pc/configuration.nix b/systems/zel-mini-pc/configuration.nix new file mode 100644 index 0000000..2476486 --- /dev/null +++ b/systems/zel-mini-pc/configuration.nix @@ -0,0 +1,169 @@ +{ + config, + pkgs, + lib, + inputs, + ... +}: +{ + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ./disk-config.nix + ../../modules/misc/kernel.nix + ../../modules/misc/faster-boot-time.nix + ../../modules/misc/zram.nix + ../../modules/networkmanager.nix + ../../modules/services/ssh.nix + ]; + + custom = { + tmpfs.enable = true; + nftables.enable = true; + cli-tools.enable = true; + nix = { + useLatest = true; + #index.enable = true; + #ld.enable = true; + settings.enable = true; + }; + static-ip = { + enable = false; + interface = "enp42s0"; + ip = "192.168.0.13"; + dns = "192.168.0.10"; + }; + hardware = { + ssd.enable = true; + }; + graphical = { + audio.enable = true; + games = { + enable = true; + }; + #sddm.enable = true; + hyprland.enable = true; + shared.enable = true; + i3.enable = true; + stylix = { + enable = true; + base16Scheme = import ../../modules/themes/ina-matugen.nix; + image = ../../wallpaper/ina.jpg; + }; + wayvnc.enable = true; + }; + }; + + # intel 9th gen iGPU + # https://wiki.archlinux.org/title/Graphics_processing_unit#Installation + # https://nixos.org/manual/nixos/stable/#sec-x11--graphics-cards-intel + # hardware.graphics = { + # enable = true; + # extraPackages = with pkgs; [ + # intel-vaapi-driver + # ]; + # }; + services.xserver.videoDrivers = [ "xf86-video-intel" ]; + environment.sessionVariables = { + LIBVA_DRIVER_NAME = "iHD"; + }; + + programs.firefox.enable = true; + services.xserver.displayManager.lightdm.enable = true; + services.xserver.windowManager.openbox.enable = true; + + services.xrdp = { + defaultWindowManager = "i3"; + enable = true; + openFirewall = true; + #extraConfDirCommands = '' + # substituteInPlace $out/sesman.ini \ + # --replace LogLevel=INFO LogLevel=DEBUG \ + # --replace LogFile=/dev/null LogFile=/var/log/xrdp.log + #''; + }; + # == start section sunshine == + services.sunshine = { + enable = true; + autoStart = true; + capSysAdmin = true; + openFirewall = true; + package = (pkgs.sunshine.override { cudaSupport = true; }); + }; + services.avahi.publish.enable = true; + services.avahi.publish.userServices = true; + + services.displayManager.autoLogin = { + enable = true; + user = "kopatz"; + }; + # == end section sunshine == + + #services.logind.settings.Login = { + # HandlePowerKey = "suspend"; + #}; + nix.gc.automatic = lib.mkForce false; + + environment.systemPackages = with pkgs; [ + #inputs.quickshell.packages.x86_64-linux.default + #kdePackages.qtdeclarative + #libimobiledevice + #ifuse # optional, to mount using 'ifuse' + (wl-clicker.overrideAttrs (old: { + # wayland autoclicker + src = pkgs.fetchFromGitHub { + owner = "phonetic112"; + repo = "wl-clicker"; + rev = "f0241c374241d6cf74ba3abffb74a3fdcefa6f88"; + hash = "sha256-QwFT9e2FuczC+ew/lDrDnYYccrrfVJi3Rlrurhwk8ZU="; + }; + })) + ]; + + mainUser.layout = "de"; + mainUser.variant = "us"; + + # Bootloader. + boot.loader = { + efi = { + canTouchEfiVariables = true; + }; + systemd-boot.enable = true; + }; + + networking.hostName = "zel-mini-pc"; # Define your hostname. + + # Configure console keymap + console.keyMap = "de"; + + # Enable automatic login for the user. + #services.xserver.displayManager.autoLogin.enable = true; + #services.xserver.displayManager.autoLogin.user = "kopatz"; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + security.pki.certificates = [ + '' + -----BEGIN CERTIFICATE----- + MIIBjTCCATKgAwIBAgIRAMVH2+JHZ3wm2fLUlKjTYDswCgYIKoZIzj0EAwIwJDEM + MAoGA1UEChMDS29wMRQwEgYDVQQDEwtLb3AgUm9vdCBDQTAeFw0yMzEyMDgxNDUx + MTZaFw0zMzEyMDUxNDUxMTZaMCQxDDAKBgNVBAoTA0tvcDEUMBIGA1UEAxMLS29w + IFJvb3QgQ0EwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAATdZBOkNynShXipzhuX + f6dUByD3chNupNWsagYC5AlPRJT9fAeHEIK/bxWkFwRtLBDopWvBu9lHahBgpHc7 + y7rTo0UwQzAOBgNVHQ8BAf8EBAMCAQYwEgYDVR0TAQH/BAgwBgEB/wIBATAdBgNV + HQ4EFgQU9AVtwipW5HDBLfZRH1KZCnIKCfowCgYIKoZIzj0EAwIDSQAwRgIhAMHj + AipNdhQKIYPvMt/h1uW4xP3NTkitnmshM09+rIasAiEAlSalGddXDkqJBHhPD+Fr + gpuVkfVkA8gQCXNs5F9TnxA= + -----END CERTIFICATE----- + '' + ]; + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.11"; # Did you read the comment? +} diff --git a/systems/zel-mini-pc/disk-config.nix b/systems/zel-mini-pc/disk-config.nix new file mode 100644 index 0000000..e4c8480 --- /dev/null +++ b/systems/zel-mini-pc/disk-config.nix @@ -0,0 +1,41 @@ +# Example to create a bios compatible gpt partition +{ lib, ... }: +{ + disko.devices = { + disk.disk1 = { + device = lib.mkDefault "/dev/nvme0n1"; + type = "disk"; + content = { + type = "gpt"; + partitions = { + ESP = { + priority = 1; + name = "ESP"; + start = "1M"; + end = "1G"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + root = { + size = "100%"; + name = "nixos-ssd"; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; # Override existing partition + mountpoint = "/"; + mountOptions = [ + "compress=zstd" + "noatime" + ]; + }; + }; + }; + }; + }; + }; +} diff --git a/systems/zel-mini-pc/hardware-configuration.nix b/systems/zel-mini-pc/hardware-configuration.nix new file mode 100644 index 0000000..f204f1d --- /dev/null +++ b/systems/zel-mini-pc/hardware-configuration.nix @@ -0,0 +1,25 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}