• Operand
  • # (b)ring mi - belles.

gram:build

> ./nixos/module/process.nix

Lenses
(coming soon!)


{ config, pkgs, lib, ... }: {
  # boot.kernelPackages = pkgs.linuxPackages_hardened;
  # nix.settings.sandbox = false; # nix.settings.trusted-users = [ "root" ];
  services.openssh.enable = true;

  security.rtkit.enable = true;
  security.pam.services.swaylock = {};
  environment.sessionVariables.NIXOS_OZONE_WL = "1";
  # security.polkit.enable = true; # lock screen? maybe unnecessary using hyprlock.

  # a number of forum pages describe the same error... only one had a good resolution.
  # https://discourse.nixos.org/t/rebuild-error-failed-to-start-network-manager-wait-online/41977
  # systemd.services.NetworkManager-wait-online.enable = false;
  systemd.network.wait-online.enable = false;
    # ProtectHome
    # NoNewPrivileges = true;
    # ProtectKernelLogs = true;
    # ProtectKernelModules = true;
    # ProtectKernelTunables = true;
  # }

  boot.initrd.systemd.network.wait-online.enable = false;

  # security.pam.services.gdm.enableGnomeKeyring = true;
  services = {
    # libinput = { enable = true; layout = "us"; xkbOptions = "caps:ctrl"; };
    # touchegg.enable = true;
    avahi = { enable = true; }; # nssmdns4 = true; }; openFirewall = true; # for a WiFi printer
    # blueman.enable = true;
    dbus.enable = true;
    # fprintd.enable = true; # bio login
    # input-remapper.enable = true;
    printing = { enable = true; drivers = [ pkgs.epson-escpr2 ]; };
    # tor.client.enable = true;

    livebook.enableUserService = true;
    livebook.environment.LIVEBOOK_PORT = 9999;

    tailscale = { enable = true; useRoutingFeatures = "client";
      extraUpFlags = [ "--accept-routes" "ssh" ]; };

    # fprintd.tod.enable = true;
    # (If the vfs0090 Driver does not work, use the following driver)
    # fprintd.tod.driver = pkgs.libfprint-2-tod1-vfs0090;
    # (On my device it only worked with this driver)
    # fprintd.tod.driver = pkgs.libfprint-2-tod1-goodix;

    pipewire = { enable = true;
      wireplumber.enable = true;
      alsa.enable = true;
      alsa.support32Bit = true;
      pulse.enable = true;
      jack.enable = true;
    };

    # pantheon.apps.enable = false;
    # picom = { enable = true; fade = true; inactiveOpacity = 0.9; shadow = true; fadeDelta = 4; };

    # printing.enable = true; # Enable CUPS
    # flatpak.enable = true;

    postgresql = { enable = true; enableTCPIP = true; settings.port = 5432;
      ensureDatabases = [ "kalo" ];
      authentication = pkgs.lib.mkOverride 10 ''
        local all all trust
        host  all all 127.0.0.1/32   trust
        host  all all ::1/128        trust
      ''; };

    xserver = { enable = true;
      # settings.Autologin.User = "calliope";
      # settings.Autologin = { Session = "hyprland"; User = "calliope"; }; };

      # displayManager.lightdm.enable = true;
      # displayManager.sddm = { enable = true; wayland.enable = true; };

      # displayManager.defaultSession = "pantheon";# "hyprland"; "cinnamon"; "plasmawayland"; "xfce";
      # desktopManager.cinnamon.enable = true;
      # desktopManager.plasma5.enable = true;
      # desktopManager.xfce.enable = true;
      # desktopManager.pantheon.enable = true;

      # libinput.enable = true; # Enable touchpad
      # displayManager.sessionCommands =
      #   ''${lib.getBin pkgs.xorg.xrandr}/bin/xrandr --setprovideroutputsource 2 0'';

      videoDrivers = [ "modesetting" "nvidia" ];
  }; };

  hardware = {
    pulseaudio.enable = false;
    bluetooth = { enable = true; powerOnBoot = true; };
    sane = { enable = true; extraBackends = with pkgs; [ utsushi ]; };
    # graphics.enable = true; # 24.11
    opengl = { enable = true; driSupport = true; };
  };

  environment.systemPackages = with pkgs; [ egl-wayland ];

  hardware.nvidia = {
    modesetting.enable = true;
    powerManagement = { enable = true; finegrained = true; };
    # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
    open = false;
    nvidiaSettings = true;
    package = config.boot.kernelPackages.nvidiaPackages.stable;
    prime = {
      offload = { enable = true; enableOffloadCmd = true; };
      # sync.enable = true;
      intelBusId = "PCI:0:2:0";
      # nvidiaBusId = "PCI:82:0:0";
      nvidiaBusId = "PCI:130:0:0";
    };
  };

  environment.etc."modprobe.d/nvidia.conf".text = ''
    options nvidia_drm modeset=1 fbdev=1
  '';

  boot = {
    kernelModules = [
      "nvidia"
      "nvidia_modeset"
      "nvidia_uvm"
      "nvidia_drm"
    ];
  };

  nixpkgs.config.allowUnfreePredicate = pkg:
    builtins.elem (lib.getName pkg) [
      "cuda_cccl"
      "cuda_cudart"
      "cuda_cuobjdump"
      "cuda_cupti"
      "cuda_cuxxfilt"
      "cuda_gdb"
      "cuda-merged"
      "cuda_nvcc"
      "cuda_nvdisasm"
      "cuda_nvml_dev"
      "cuda_nvprune"
      "cuda_nvrtc"
      "cuda_nvrtx"
      "cuda_nvtx"
      "cuda_profiler_api"
      "cuda_sanitizer_api"
      "libcublas"
      "libcufft"
      "libcurand"
      "libcusolver"
      "libcusparse"
      "libnpp"
      "libnvjitlink"
      "nvidia-settings"
      "nvidia-x11"
    ];
 }

# reminder: run `passwd`

#boot = { loader.efi.canTouchEfiVariables = true;
#  initrd.luks.devices.base ={device="/dev/nvme0n1p3"; preLVM=true;};
#  loader.grub = { device="/dev/nvme0n1";
#    enable = true; version = 2; useOSProber = true; efiSupport = true; }; };

# Need a proxy?
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";

# use xkbOptions in tty.
# console = { font = "Lat2-Terminus16"; keyMap = "us"; useXkbConfig = true; };

# Some programs need SUID wrappers; userspace sessions described here.
# programs.mtr.enable = true;
# programs.gnupg.agent = { enable = true; enableSSHSupport = true; };