{ pkgs, lib, config, stable, ... }: { # nix = { # package = pkgs.nixVersions.git; # }; # This adds hyprland cache to cachix and relaxes sandbox nix.settings = { substituters = [ "https://hyprland.cachix.org" ]; trusted-public-keys = [ "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" ]; sandbox = "relaxed"; }; # Use the systemd-boot EFI boot loader. boot = { kernelPackages = pkgs.linuxPackages_zen; kernelParams = [ "mem_sleep_default=deep" "nvme.noacpi=1" ]; # initrd.kernelModules = [ "amdgpu" ]; }; # The global useDHCP flag is deprecated, therefore explicitly set to false here. # Per-interface useDHCP will be mandatory in the future, so this generated config # replicates the default behaviour. networking.useDHCP = false; boot.supportedFilesystems = [ "ntfs" ]; services = { desktopManager.cosmic.enable = true; desktopManager.plasma6 = { enable = true; # runUsingSystemd = true; }; }; programs.nix-ld.enable = true; programs.ssh.startAgent = true; security.pam.services.kwallet = { name = "kwallet"; enableKwallet = true; }; systemd.extraConfig = '' DefaultTimeoutStopSec=10s DefaultTimeoutStartSec=10s ''; # stylix = { # enable = true; # polarity = "dark"; # base16Scheme = { # base00 = "282a36"; # base01 = "34353e"; # base02 = "43454f"; # base03 = "78787e"; # base04 = "a5a5a9"; # base05 = "e2e4e5"; # base06 = "eff0eb"; # base07 = "f1f1f0"; # base08 = "ff5c57"; # base09 = "ff9f43"; # base0A = "f3f99d"; # base0B = "5af78e"; # base0C = "9aedfe"; # base0D = "57c7ff"; # base0E = "ff6ac1"; # base0F = "b2643c"; # }; # image = "base0D"; # # targets.tofi.enable = false; # }; fonts.packages = with pkgs; [ nerdfonts noto-fonts noto-fonts-cjk-sans noto-fonts-emoji liberation_ttf mplus-outline-fonts.githubRelease dina-font proggyfonts ]; hardware = { keyboard.qmk.enable = true; }; security.pam.services = { # sddm.enableKwallet = true; greetd.enableKwallet = true; swaylock = { }; }; services.displayManager.cosmic-greeter = { enable = false; }; services.greetd = { enable = true; # settings = rec { # initial_session = { # command = "dbus-run-session Hyprland"; # # command = "dbus-run-session startplasma-wayland"; # user = "chris"; # }; # default_session = { # command = # "${pkgs.greetd.tuigreet}/bin/tuigreet --time -r --window-padding 2 --cmd 'dbus-run-session Hyprland' -s /etc/greetd/environments"; # user = "greeter"; # }; # plasma_session = { # command = "dbus-run-session startplasma-wayland"; # user = "chris"; # }; # hyprland_session = { # command = "Hyprland"; # user = "chris"; # }; # }; }; programs.regreet = { enable = true; }; environment.etc."greetd/environments".text = '' hyprland dbus-run-session startplasma-wayland fish bash ''; qt = { platformTheme = "qt5ct"; enable = true; }; # environment.etc."xdg/user-dirs.defaults".text = '' # DESKTOP= # DOWNLOAD=dls # TEMPLATES= # PUBLICSHARE= # DOCUMENTS=docs # MUSIC=music # PICTURES=pics # VIDEOS=vids # ''; xdg.portal = { enable = true; extraPortals = [ pkgs.xdg-desktop-portal-kde ]; }; # programs.cosmic = { # }; programs.hyprland = { enable = true; xwayland.enable = true; # legacyRenderer = true; # package = stable.hyprland; # portalPackage = pkgs.xdg-desktop-portal-kde; # xwayland.hidpi = true; }; services.avahi = { enable = true; nssmdns4 = true; }; # Enable sound. security.rtkit.enable = true; services.pipewire = { enable = true; alsa.enable = true; alsa.support32Bit = true; pulse.enable = true; jack.enable = true; wireplumber.enable = true; }; # Needed for some pipewire progs and other gtk apps programs.dconf.enable = true; environment.variables = { EDITOR = "emacsclient -t -a"; VISUAL = "emacsclient -c -a"; QT_LOGGING_RULES = "js=true; kwin_*.debug=true"; # GTK_USE_PORTAL = "1"; # Fixing Qt apps in other environments # Thought I needed this but apparently they are working fine without it. # QT_XCB_GL_INTEGRATION = "xcb_egl"; # QT_QPA_PLATFORM_PLUGIN_PATH = "${pkgs.qt5.qtbase.bin}/lib/qt-${pkgs.qt5.qtbase.qtCompatVersion}/plugins/platforms"; NIXOS_OZONE_WL = "1"; _JAVA_AWT_WM_NONEREPARENTING = "1"; # DISABLE_QT5_COMPAT = "0"; GDK_BACKEND = "wayland"; ANKI_WAYLAND = "1"; WLR_DRM_NO_ATOMIC = "1"; QT_AUTO_SCREEN_SCALE_FACTOR = "1"; QT_QPA_PLATFORM = "wayland"; # QT_WAYLAND_DISABLE_WINDOWDECORATION = "1"; # QT_QPA_PLATFORMTHEME = "qt5ct"; MOZ_ENABLE_WAYLAND = "1"; MOZ_DBUS_REMOTE = "1"; WLR_BACKEND = "vulkan"; WLR_RENDERER = "vulkan"; XDG_SESSION_TYPE = "wayland"; # Remember that this causes issues in some games use "unset SDL_VIDEODRIVER &&" SDL_VIDEODRIVER = "wayland"; CLUTTER_BACKEND = "wayland"; WLR_NO_HARDWARE_CURSORS = "1"; }; programs.partition-manager.enable = true; programs.kdeconnect.enable = true; # Turn on flatpak services.flatpak.enable = true; # Configure keymap in X11 services.xserver.xkb.layout = "us"; # services.xserver.xkbOptions = "eurosign:e"; # Enable CUPS to print documents. services.printing.enable = true; services.printing.drivers = [ pkgs.gutenprint pkgs.gutenprintBin pkgs.cnijfilter2 ]; services.usbmuxd.enable = true; services.fstrim.enable = true; # services.pantalaimon-headless = { # instances = { # tfc = { # homeserver = "https://matrix.tfcconnection.org"; # # listenAddress = "localhost"; # listenPort = 8008; # ssl = true; # # extraSettings = { # # IgnoreVerification = true; # # } # }; # }; # }; ####################### # VIRTUALIZATION ####################### # virtualisation.waydroid.enable = true; virtualisation.podman.enable = true; # virtualisation.docker.enable = true; virtualisation.libvirtd = { enable = true; qemu = { runAsRoot = false; ovmf = { enable = true; # packages = [ # pkgs.OVMFFull.fd # pkgs.pkgsCross.aarch64-multiplatform.OVMF.fd # ]; }; swtpm.enable = true; }; }; services.samba-wsdd.enable = true; services.samba = { enable = true; # settings = { # workgroup = "WORKGROUP"; # "server string" = "smbnix"; # "netbios name" = "smbnix"; # security = "user"; # "hosts allow" = ["192.168.0." "127.0.0.1" "localhost"]; # "hosts deny" = "0.0.0.0/0"; # "guest account" = "nobody"; # "map to guest" = "bad user"; # }; shares = { public = { path = "/home/chris"; "read only" = false; browsable = true; "guest ok" = true; comment = "Share"; }; }; }; # Android Tools programs.adb.enable = true; services.udev.packages = [ pkgs.android-udev-rules ]; services.esphome = { enable = true; }; }