• Operand
  • hole: deep pi.

gram:build

> ./nixos/module/process.nix

Lenses
(coming soon!)


{ config, pkgs, lib, ... }@sources: let
  # edge = sources.edge.outputs.legacyPackages.x86_64-linux;
  edge = import sources.edge {
    config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) closed_sources;
    system = "x86_64-linux";
  };
  closed_sources =  [
  #   "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"
  ];
in {
  # boot.kernelPackages = pkgs.linuxPackages_hardened;
  # nix.settings.sandbox = false; # nix.settings.trusted-users = [ "root" ];

  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;
    atuin.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;
    ntp.enable = true;

    tailscale = { enable = false; 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;

    ollama = {
      enable = true;
    #   acceleration = "cuda";
    #   package = edge.ollama-cuda;
    };

    pipewire = { enable = true;
      alsa.enable = true;
      alsa.support32Bit = true;
      pulse.enable = true;
      jack.enable = true;
      wireplumber = { enable = true;
        extraConfig."10-bluez"."monitor.bluez.properties" = {
            "bluez5.enable-sbc-xq" = true;
            "bluez5.enable-msbc" = true;
            "bluez5.enable-hw-volume" = true;
            "bluez5.roles" = [ "hsp_hs" "hsp_ag" "hfp_hf" "hfp_ag" ];
    }; }; };

    # 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;
    extraConfig = "
      load-module module-switch-on-connect
    ";
    };
    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) closed_sources;
}

# 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; };