system/configuration.nix

273 lines
7.9 KiB
Nix
Raw Normal View History

2024-11-01 12:04:24 -04:00
# 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
2024-12-03 13:21:22 -05:00
{
lib,
config,
pkgs,
zen-browser,
hyprland,
inputs,
agenix,
pkgs-unstable,
pia,
...
}:
2024-10-14 17:28:31 -04:00
let
unstable = import <nixpkgs> {
overlays = pkgs.overlays;
};
2024-10-14 18:35:04 -04:00
in
2024-10-14 17:28:31 -04:00
{
2024-12-03 13:21:22 -05:00
imports = [
./environment.nix
./hardware-configuration.nix
2024-10-14 17:28:31 -04:00
2024-12-03 13:21:22 -05:00
./modules/containers.nix
./modules/display.nix
./modules/files.nix
./modules/fonts.nix
./modules/musnix.nix
./modules/network.nix
./modules/nix.nix
# ./modules/qt.nix
./modules/security.nix
./modules/tailscale.nix
./modules/users.nix
./modules/wm.nix
./modules/xdg.nix
2025-04-11 18:43:57 -04:00
# ./pkgs/app/utilities/bacula.nix
2025-05-03 12:34:07 -04:00
# ./pkgs/app/servers/ff-sync.nix
2025-06-19 13:17:25 -04:00
# ./pkgs/virtualisation/docker.nix
# ./pkgs/virtualisation/vbox.nix
2025-04-11 18:43:57 -04:00
# ./flakes/scribeVault.nix
2024-12-03 13:21:22 -05:00
];
2024-10-14 17:28:31 -04:00
programs.hyprland = {
enable = true;
xwayland.enable = true;
# package = pkgs.hyprland;
# package = hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
portalPackage = pkgs.xdg-desktop-portal-hyprland;
2024-10-14 17:28:31 -04:00
# portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland;
};
# Redirect syslog to TTY12
2025-04-16 13:59:06 -04:00
# systemd.services."systemd-journald-tty12" = {
# description = "Forward syslog to TTY12";
# serviceConfig = {
# ExecStart = "/bin/sh -c 'journalctl -f > /dev/tty12'";
# };
# wantedBy = [ "multi-user.target" ];
# };
2024-10-14 17:28:31 -04:00
2025-05-03 12:43:09 -04:00
programs = {
firefox.enable = true;
zsh.enable = true;
nix-ld.enable = true;
fuse.userAllowOther = true;
2025-06-16 14:00:25 -04:00
nm-applet.enable = true;
2025-05-03 12:43:09 -04:00
};
2024-10-14 17:28:31 -04:00
services = {
2025-04-11 18:43:57 -04:00
blueman.enable = true;
2024-10-14 17:28:31 -04:00
printing.enable = true;
ollama = {
enable = true;
acceleration = "cuda";
models = "/var/lib/ollama/models";
environmentVariables = {};
};
2025-04-09 20:56:29 -04:00
open-webui = {
2025-06-19 13:17:25 -04:00
enable = false;
2025-04-09 20:56:29 -04:00
package = pkgs.open-webui;
port = 4040;
# host = "192.18.12.40";
openFirewall = true;
environment = {
ANONYMIZED_TELEMETRY = "False";
DO_NOT_TRACK = "True";
SCARF_NO_ANALYTICS = "True";
OLLAMA_API_BASE_URL = "http://127.0.0.1:11434/api";
OLLAMA_BASE_URL = "http://127.0.0.1:11434";
ENABLE_WEBSOCKET_SUPPORT = "True";
WEBSOCKET_MANAGER= "redis";
WEBSOCKET_REDIS_URL = "redis://127.0.0.1:6379/1";
GLOBAL_LOG_LEVEL = "DEBUG";
};
};
# comfyui = {
# enable = true;
# package = pkgs.comfyui-nvidia;
# host = "0.0.0.0";
# models = builtins.attrValues pkgs.nixified-ai.models;
# customNodes = with comfyui.pkgs; [
# comfyui-gguf
# comfyui-impact-pack
# ];
# };
redis = {
package = pkgs.redis;
vmOverCommit = true;
servers = {
bots = {
enable = true;
port = 6379;
};
};
};
2024-10-14 17:28:31 -04:00
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"
2025-04-11 18:43:57 -04:00
udisks2 = {
enable = true;
package = pkgs.udisks2;
mountOnMedia = true;
};
2024-10-14 17:28:31 -04:00
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"
};
};
2024-11-01 12:04:24 -04:00
avahi = { # Printing
2024-10-14 17:28:31 -04:00
enable = true;
nssmdns4 = true;
openFirewall = true;
};
pipewire = {
enable = true;
2025-04-16 13:59:06 -04:00
package = pkgs.pipewire;
systemWide = false; # uses pipewire group
2024-10-14 17:28:31 -04:00
alsa.enable = true;
alsa.support32Bit = true;
2025-04-16 13:59:06 -04:00
audio.enable = config.services.pipewire.alsa.enable || config.services.pipewire.jack.enable || config.services.pipewire.pulse.enable;
2024-10-14 17:28:31 -04:00
pulse.enable = true;
2024-11-29 18:31:17 -05:00
jack.enable = true;
2024-10-14 17:28:31 -04:00
# 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)
2025-04-16 13:59:06 -04:00
# media-session.enable = true;
2024-11-29 18:31:17 -05:00
# wireplumber.enable = true;
2025-04-16 13:59:06 -04:00
socketActivation = true;
extraConfig.pipewire = {
log.level = 4;
};
2024-10-14 17:28:31 -04:00
};
2025-06-16 14:00:25 -04:00
pulseaudio = {
enable = false;
daemon = {
logLevel = "debug";
};
};
2024-12-03 13:21:22 -05:00
# hardware.openrgb = {
# enable = false;
# package = pkgs.openrgb-with-all-plugins;
# motherboard = "intel";
# server.port = 6742;
# };
pia = {
2024-11-29 18:46:42 -05:00
enable = true;
2025-06-16 14:00:25 -04:00
authUserPassFile = config.age.secrets.pia.path;
2024-11-29 18:46:42 -05:00
};
samba = {
2025-04-11 18:43:57 -04:00
enable = false;
openFirewall = true;
package = pkgs.samba4Full;
settings = {
global = {
security = "user";
"server min protocol" = "SMB2_10";
"client min protocol" = "SMB2_10";
"server max protocol" = "SMB3_11";
"client max protocol" = "SMB3_11";
};
};
};
2025-04-11 18:43:57 -04:00
keybase.enable = true;
kbfs = {
enable = true;
2025-06-16 14:00:25 -04:00
mountPoint = "%h/keybase";
2025-04-11 18:43:57 -04:00
extraFlags = [
"-label: kbfs"
"-mount-type: normal"
];
};
2024-10-14 17:28:31 -04:00
};
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
2024-11-01 12:04:24 -04:00
(pkgs.catppuccin-sddm.override {
flavor = "mocha";
font = "Noto Sans";
fontSize = "9";
loginBackground = true;
})
2024-10-14 17:28:31 -04:00
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
wget git sshfs
2024-11-29 18:31:17 -05:00
pciutils usbutils
2025-04-11 18:43:57 -04:00
zsh ghostty # ghostty.packages.x86_64-linux.default
2024-10-14 17:28:31 -04:00
2024-11-01 12:04:24 -04:00
cryptsetup agenix.packages.x86_64-linux.default
2024-10-14 17:28:31 -04:00
home-manager
wpa_supplicant
lynx
nix-index nix-prefetch-scripts nix-prefetch
docker_27 docker-compose compose2nix
mongodb-compass mongosh
2024-10-14 17:28:31 -04:00
2024-11-01 12:04:24 -04:00
# direnv nix-direnv
2024-10-14 17:28:31 -04:00
# xdg-desktop-portal-hyprland
clinfo glxinfo vulkan-tools wayland-utils wl-clipboard
2025-04-16 13:59:06 -04:00
# kdePackages.wayland kdePackages.wayland-protocols kdePackages.xwaylandvideobridge kdePackages.kwayland kdePackages.wayqt kdePackages.qtwayland kdePackages.layer-shell-qt # marked broken kdePackages.kwayland-integration
kdePackages.kdeplasma-addons kdePackages.qtstyleplugin-kvantum kdePackages.full kdePackages.qtwebengine
kdePackages.qtpositioning kdePackages.qtlocation kdePackages.ark kdePackages.dolphin
2025-06-16 14:00:25 -04:00
kdePackages.dolphin-plugins kdePackages.okular
kdePackages.konsole
2025-04-16 13:59:06 -04:00
# kdePackages.qtwayland kdePackages.qtsvg
kdePackages.kio kdePackages.kio-fuse kdePackages.kio-extras kdePackages.kio-admin
kdePackages.kdenetwork-filesharing
kdePackages.kwallet kdePackages.kwalletmanager kdePackages.kwallet-pam
2025-05-03 12:34:07 -04:00
kdePackages.polkit-kde-agent-1 kdePackages.kirigami
hyprpolkitagent polkit
gtk2
gnome-themes-extra
2024-10-14 17:28:31 -04:00
evtest input-remapper dbus uwsm # keyd
2024-11-01 12:04:24 -04:00
egl-wayland
2024-10-14 17:28:31 -04:00
cudaPackages.cudatoolkit # cudaPackages.cuda-samples
cifs-utils mesa libGL udiskie samba
2025-04-16 13:59:06 -04:00
glibc # cmake cpio meson
libsForQt5.kwayland libsForQt5.qt5.qtwayland libsForQt5.kwayland-integration # libsForQt5.xwaylandvideobridge
2025-05-03 12:34:07 -04:00
# libsForQt5.polkit-kde-agent
# libsForQt5.qtstyleplugin-kvantum libsForQt5.qt5.qtwayland libsForQt5.kio-extras # libsForQt5.qt5.qtgraphicaleffects
2025-05-03 12:34:07 -04:00
#kio-fuse
2024-11-01 12:04:24 -04:00
catppuccin-sddm-corners
sddm-astronaut
2024-10-14 17:28:31 -04:00
# steam-run
2025-04-16 13:59:06 -04:00
lxqt.pavucontrol-qt pw-viz playerctl
2024-11-01 12:04:24 -04:00
2024-11-29 18:31:17 -05:00
i2c-tools
2024-11-01 12:04:24 -04:00
android-udev-rules
2024-12-01 14:11:41 -05:00
tailscale
2024-11-29 18:31:17 -05:00
logiops
2024-10-14 17:28:31 -04:00
];
2025-06-16 14:00:25 -04:00
system.stateVersion = "25.05"; # Did you read the comment?
2024-10-14 17:28:31 -04:00
}