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 ,
2025-04-11 18:43:57 -04:00
# ghostty,
2024-12-03 13:21:22 -05:00
. . .
} :
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
# (import ./modules/containers.nix { inherit pkgs inputs config lib pkgs-unstable ;})
./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-03-13 17:41:05 -04:00
2025-04-11 18:43:57 -04:00
# ./pkgs/app/utilities/bacula.nix
./pkgs/virtualisation/docker.nix
./pkgs/virtualisation/vbox.nix
2025-03-13 17:41:05 -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;
2025-03-13 17:41:05 -04:00
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
systemd . services . " s y s t e m d - j o u r n a l d - t t y 1 2 " = {
description = " F o r w a r d s y s l o g t o T T Y 1 2 " ;
serviceConfig = {
ExecStart = " / b i n / s h - c ' j o u r n a l c t l - f > / d e v / t t y 1 2 ' " ;
} ;
wantedBy = [ " m u l t i - u s e r . t a r g e t " ] ;
} ;
2025-04-09 20:56:29 -04:00
# systemd.services.logid = {
# description = "Logitech Configuration Daemon";
# startLimitIntervalSec = 0;
# after = [ "multi-user.target" ];
# wants = [ "multi-user.target" ];
# serviceConfig = {
# Type = "simple";
# ExecStart = "/run/current-system/sw/bin/logid";
# User = "root";
# };
# wantedBy = [ "multi-user.target" ];
# };
2024-10-14 17:28:31 -04:00
# 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
# ];
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 = " c u d a " ;
models = " / v a r / l i b / o l l a m a / m o d e l s " ;
environmentVariables = { } ;
} ;
2025-04-09 20:56:29 -04:00
open-webui = {
enable = true ;
package = pkgs . open-webui ;
port = 4040 ;
# host = "192.18.12.40";
openFirewall = true ;
environment = {
ANONYMIZED_TELEMETRY = " F a l s e " ;
DO_NOT_TRACK = " T r u e " ;
SCARF_NO_ANALYTICS = " T r u e " ;
OLLAMA_API_BASE_URL = " h t t p : / / 1 2 7 . 0 . 0 . 1 : 1 1 4 3 4 / a p i " ;
OLLAMA_BASE_URL = " h t t p : / / 1 2 7 . 0 . 0 . 1 : 1 1 4 3 4 " ;
ENABLE_WEBSOCKET_SUPPORT = " T r u e " ;
WEBSOCKET_MANAGER = " r e d i s " ;
WEBSOCKET_REDIS_URL = " r e d i s : / / 1 2 7 . 0 . 0 . 1 : 6 3 7 9 / 1 " ;
GLOBAL_LOG_LEVEL = " D E B U G " ;
} ;
} ;
# 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 = [ " g r a p h i c a l . t a r g e t " ] ;
} ;
# 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 = [ " w a y n e " ] ; # Allows all users by default. Can be [ "user1" "user2" ]
UseDns = true ;
X11Forwarding = false ;
PermitRootLogin = " n o " ; # "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;
# };
# };
# };
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 ;
alsa . enable = true ;
alsa . support32Bit = true ;
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)
#media-session.enable = true;
2024-11-29 18:31:17 -05:00
# wireplumber.enable = true;
2024-10-14 17:28:31 -04:00
} ;
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 ;
2024-12-03 13:21:22 -05:00
authUserPassFile = config . age . secrets . pia . path ;
2024-11-29 18:46:42 -05:00
} ;
2025-03-13 17:41:05 -04:00
home-assistant = {
2025-04-11 18:43:57 -04:00
enable = true ;
2025-03-13 17:41:05 -04:00
extraPackages = python3Packages : with python3Packages ; [
pip
pynvim # mopidy-tidal # Mopidy-WebSettings
virtualenv setuptools wheel
] ;
2025-04-11 18:43:57 -04:00
config = {
homeassistant = {
unit_system = " i m p e r i a l " ;
temperature_unit = " F " ;
name = " l a u n c h p a d " ;
configDir = " / v a r / l i b / h a s s " ;
configWritable = true ;
http = {
server_host = " 1 2 7 . 0 . 0 . 1 " ;
server_port = 8123 ;
} ;
} ;
} ;
2025-03-13 17:41:05 -04:00
} ;
samba = {
2025-04-11 18:43:57 -04:00
enable = false ;
2025-03-13 17:41:05 -04:00
openFirewall = true ;
package = pkgs . samba4Full ;
settings = {
global = {
security = " u s e r " ;
" s e r v e r m i n p r o t o c o l " = " S M B 2 _ 1 0 " ;
" c l i e n t m i n p r o t o c o l " = " S M B 2 _ 1 0 " ;
" s e r v e r m a x p r o t o c o l " = " S M B 3 _ 1 1 " ;
" c l i e n t m a x p r o t o c o l " = " S M B 3 _ 1 1 " ;
} ;
} ;
} ;
2025-04-11 18:43:57 -04:00
keybase . enable = true ;
kbfs = {
enable = true ;
mountPoint = " k e y b a s e " ;
extraFlags = [
" - l a b e l : k b f s "
" - m o u n t - t y p e : n o r m a l "
] ;
} ;
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 = " m o c h a " ;
font = " N o t o S a n s " ;
fontSize = " 9 " ;
2025-03-13 17:41:05 -04:00
# background = "${/home/wayne/Pictures/marvin.png}";
2024-11-01 12:04:24 -04:00
loginBackground = true ;
# clockEnabled = 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
2025-03-13 17:41:05 -04:00
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-03-13 17:41:05 -04:00
kdePackages . kdeplasma-addons kdePackages . qtstyleplugin-kvantum kdePackages . full kdePackages . qtwebengine
kdePackages . qtpositioning kdePackages . qtlocation kdePackages . ark kdePackages . dolphin
kdePackages . dolphin-plugins # kdePackages.kwallet kdePackages.kwalletmanager
kdePackages . konsole
2025-04-09 20:56:29 -04:00
kdePackages . qtwayland kdePackages . qtsvg
# kdePackages.kio kdePackages.kio-fuse kdePackages.kio-extras
2025-03-13 17:41:05 -04:00
kdePackages . kdenetwork-filesharing
kdePackages . kwallet kdePackages . kwalletmanager kdePackages . kwallet-pam
# plasma5Packages.kwallet plasma5Packages.kwalletmanager plasma5Packages.kwallet-pam
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
2025-03-13 17:41:05 -04:00
cifs-utils mesa libGL udiskie samba
glibc
2024-10-14 17:28:31 -04:00
2025-03-13 17:41:05 -04:00
# libsForQt5.qtstyleplugin-kvantum libsForQt5.qt5.qtwayland libsForQt5.kio-extras # libsForQt5.qt5.qtgraphicaleffects
#kio-fuse
2024-11-01 12:04:24 -04:00
catppuccin-sddm-corners
2025-03-13 17:41:05 -04:00
sddm-astronaut
2024-10-14 17:28:31 -04:00
# steam-run
2024-11-01 12:04:24 -04:00
lxqt . pavucontrol-qt
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
2025-04-11 18:43:57 -04:00
bacula
2024-10-14 17:28:31 -04:00
] ;
2024-12-06 13:12:42 -05:00
system . stateVersion = " 2 4 . 1 1 " ; # Did you read the comment?
2024-10-14 17:28:31 -04:00
}