# 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 { 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="" {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? }