system/configuration.nix
2024-11-01 09:04:24 -07:00

230 lines
7.2 KiB
Nix

# NixOS's declarative configuration calculates which software packages need to be installed and then soft-links the storage paths of these packages in the Nix Store to /run/current-system, and by modifying environment variables like PATH
{ lib, config, pkgs, zen-browser, hyprland, inputs, agenix, ... }:
let
unstable = import <nixpkgs> {
overlays = pkgs.overlays;
};
in
{
imports =
[
./environment.nix
./hardware-configuration.nix
./modules/containers.nix
./modules/display.nix
./modules/files.nix
./modules/fonts.nix
./modules/network.nix
./modules/nix.nix
# ./modules/qt.nix
./modules/security.nix
./modules/users.nix
./modules/wm.nix
./modules/xdg.nix
];
programs.hyprland = {
enable = true;
xwayland.enable = true;
# package = pkgs.hyprland;
# package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
# portalPackage = pkgs.xdg-desktop-portal-hyprland;
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
# Redirect syslog to TTY12
systemd.services."systemd-journald-tty12" = {
description = "Forward syslog to TTY12";
serviceConfig = {
ExecStart = "/bin/sh -c 'journalctl -f > /dev/tty12'";
};
wantedBy = [ "multi-user.target" ];
};
# Enable touchpad support (enabled default in most desktopManager).
# services.xserver.libinput.enable = true;
# systemd.services.StartInputRemapperDaemonAtLogin = {
# enable = false;
# description = "Start input-remapper daemon after login";
# unitConfig = {
# Type = "simple";
# };
# script = lib.getExe(pkgs.writeShellApplication {
# name = "start-input-mapper-daemon";
# runtimeInputs = with pkgs; [input-remapper procps su];
# text = ''
# until pgrep -u wayne; do
# sleep 1
# done
# sleep 2
# until [ $(pgrep -c -u root "input-remapper") -eq 4 ]; do
# input-remapper-service&
# sleep 1
# input-remapper-helper&
# sleep 1
# done
# su wayne -c "input-remapper-control --command stop-all"
# su wayne -c "input-remapper-control --command autoload"
# sleep infinity
# '';
# });
# wantedBy = [ "default.target" ];
# };
# Possible weird bug
# systemd.services.ReloadInputRemapperAfterSleep = {
# enable = true;
# description = "Reload input-remapper config after sleep";
# after = [ "suspend.target" ];
# unitConfig = {
# Type = "forking";
# };
# serviceConfig.User = "wayne";
# script = lib.getExe(pkgs.writeShellApplication {
# name = "reload-input-mapper-config";
# runtimeInputs = with pkgs; [input-remapper ps gawk];
# text = ''
# until [[ $(ps aux | awk '$11~"input-remapper" && $12="<defunct>" {print $0}' | wc -l) -eq 0 ]]; do
# input-remapper-control --command stop-all
# input-remapper-control --command autoload
# sleep 1
# done
# '';
# });
# wantedBy = [ "suspend.target" ];
# };
# Install firefox.
programs.firefox.enable = true;
programs.zsh.enable = true;
programs.nix-ld.enable = true;
# programs.nix-ld.libraries = with pkgs; [
# libusb
# kdePackages.qt5compat kdePackages.full
# libsForQt5.full
# libGL
# gcc glib xorg.libXext
# ];
virtualisation.docker = {
enable = false;
enableNvidia = true;
rootless = {
enable = true;
setSocketVariable = true;
};
daemon.settings = {
userland-proxy = false;
ipv6 = false;
};
};
services = {
printing.enable = true;
ollama = {
enable = true;
acceleration = "cuda";
models = "/var/lib/ollama/models";
environmentVariables = {};
};
input-remapper = {
enable = true;
enableUdevRules = true;
package = pkgs.input-remapper;
serviceWantedBy = [ "graphical.target" ];
};
# dbus.implementation = "dbus"; # The option `services.dbus.implementation' has conflicting definition values: - In `/nix/store/60sn02zhawl3kwn0r515zff3h6hg6ydz-source/nixos/modules/programs/wayland/uwsm.nix': "broker"
udisks2.enable = true;
logrotate.enable = true;
openssh = {
enable = true;
ports = [ 22 ];
settings = {
PasswordAuthentication = true;
AllowUsers = [ "wayne" ]; # Allows all users by default. Can be [ "user1" "user2" ]
UseDns = true;
X11Forwarding = false;
PermitRootLogin = "no"; # "yes", "without-password", "prohibit-password", "forced-commands-only", "no"
};
};
# kmonad = {
# enable = true;
# keyboards = {
# myKMonadOutput = {
# device = "/dev/input/by-id/usb-Hanvon_Ugee_Shortcut_Remote_000000000000000-event-kbd";
# config = builtins.readFile /home/wayne/.config/kmonad/hanvon-ugee.kbd;
# };
# };
# };
avahi = { # Printing
enable = true;
nssmdns4 = true;
openFirewall = true;
};
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;
};
hardware.openrgb = {
enable = true;
package = pkgs.openrgb-with-all-plugins;
motherboard = "intel";
server.port = 6742;
};
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
(pkgs.catppuccin-sddm.override {
flavor = "mocha";
font = "Noto Sans";
fontSize = "9";
background = "${/home/wayne/Pictures/marvin.png}";
loginBackground = true;
# clockEnabled = true;
})
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget git sshfs
pciutils
zsh
cryptsetup agenix.packages.x86_64-linux.default
home-manager
wpa_supplicant
lynx
nix-index nix-prefetch-scripts nix-prefetch
docker_27 docker-compose
# direnv nix-direnv
# xdg-desktop-portal-hyprland
clinfo glxinfo vulkan-tools wayland-utils wl-clipboard
kdePackages.kdeplasma-addons kdePackages.qtstyleplugin-kvantum kdePackages.full kdePackages.qtwebengine kdePackages.qtpositioning kdePackages.qtlocation
kdePackages.ark plasma5Packages.kwallet-pam kdePackages.dolphin kdePackages.kwallet kdePackages.kwalletmanager kdePackages.konsole
evtest input-remapper dbus uwsm # keyd
egl-wayland
cudaPackages.cudatoolkit # cudaPackages.cuda-samples
cifs-utils mesa libGL udiskie
libsForQt5.qtstyleplugin-kvantum
catppuccin-sddm-corners
# steam-run
lxqt.pavucontrol-qt
openrgb-with-all-plugins i2c-tools
android-udev-rules
];
system.stateVersion = "24.05"; # Did you read the comment?
}