diff --git a/hosts/wildfire/configuration.nix b/hosts/wildfire/configuration.nix index dcb6f01..eec7a95 100644 --- a/hosts/wildfire/configuration.nix +++ b/hosts/wildfire/configuration.nix @@ -2,7 +2,7 @@ imports = [ ./hardware-configuration.nix ../../modules/common.nix - ../../modules/desktops/gnome-desktop.nix + ../../modules/desktops/hyprland-desktop.nix ../../modules/programs.nix ]; diff --git a/modules/common.nix b/modules/common.nix index da80c72..44df485 100644 --- a/modules/common.nix +++ b/modules/common.nix @@ -41,7 +41,6 @@ # Select internationalisation properties. i18n = { defaultLocale = "en_GB.UTF-8"; - extraLocaleSettings = { LC_ADDRESS = "sv_SE.UTF-8"; LC_IDENTIFICATION = "sv_SE.UTF-8"; @@ -58,19 +57,32 @@ # Configure console keymap console.keyMap = "sv-latin1"; - # Enable CUPS to print documents. - services.printing.enable = false; + services = { + # Enable CUPS to print documents. + printing.enable = false; - # Enable sound with pipewire. - services.pulseaudio.enable = false; - security.rtkit.enable = true; - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; + # Enable sound with pipewire. + pulseaudio.enable = false; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + }; + + # enable antivirus clamav and keep the signatures' database updated + clamav = { + daemon.enable = true; + updater.enable = true; + }; }; + # Realtime scheduling priority for audio + security.rtkit.enable = true; + # Polkit agent (authentication dialogs) + security.polkit.enable = true; + # Allow unfree packages nixpkgs.config.allowUnfree = true; @@ -93,6 +105,7 @@ # Fonts fonts.packages = with pkgs; [ intel-one-mono + noto-fonts ]; # This improves touchscreen support and enables additional touchpad gestures. It also enables smooth scrolling as opposed to the stepped scrolling that Firefox has by default @@ -111,18 +124,12 @@ profile = "${pkgs.firejail}/etc/firejail/firefox.profile"; }; chromium = { - executable = "${pkgs.lib.getBin pkgs.chromium}/bin/chromium"; + executable = "${pkgs.lib.getBin pkgs.ungoogled-chromium}/bin/chromium"; profile = "${pkgs.firejail}/etc/firejail/chromium.profile"; }; }; }; - # enable antivirus clamav and keep the signatures' database updated - services.clamav = { - daemon.enable = true; - updater.enable = true; - }; - # This value determines the NixOS release from which the default # settings for stateful data, like file locations and database versions # on your system were taken. diff --git a/modules/desktops/hyprland-desktop.nix b/modules/desktops/hyprland-desktop.nix index 9ecaff5..f558adb 100644 --- a/modules/desktops/hyprland-desktop.nix +++ b/modules/desktops/hyprland-desktop.nix @@ -1,6 +1,77 @@ -{ - config, - pkgs, - ... -}: { +{pkgs, ...}: { + services = { + xserver = { + enable = true; + # Only enable GDM if you want login screen; alternatively, use greetd (recommended) + displayManager.gdm.enable = false; + }; + + # Greetd with tuigreet is lightweight and Wayland-native + greetd = { + enable = true; + settings.default_session = { + command = "tuigreet --cmd Hyprland"; + user = "greeter"; + }; + }; + + # Power management (battery status, etc) + upower.enable = true; + power-profiles-daemon.enable = true; + }; + + # Hyprland is your new desktop + programs.hyprland.enable = true; + + programs.dconf.profiles.user.databases = [ + { + settings."org/gnome/desktop/interface" = { + gtk-theme = "Gruvbox-Dark-B"; + icon-theme = "Flat-Remix-Red-Dark"; + font-name = "Noto Sans Medium 11"; + document-font-name = "Noto Sans Medium 11"; + monospace-font-name = "Intel One Mono Medium 11"; + }; + } + ]; + + environment.sessionVariables = { + GTK_THEME = "Gruvbox-Dark-B"; # or whatever your installed variant is called + QT_QPA_PLATFORMTHEME = "qt5ct"; + NIXOS_OZONE_WL = "1"; + # XCURSOR_THEME = "Gruvbox-Dark"; # (Optional) + }; + + environment.systemPackages = with pkgs; [ + # Core Hyprland workflow tools + waybar # Panel + nwg-look # GTK theme tweaker + rofi-wayland # Launcher (or fuzzel/wofi/tofi) + mako # Notification daemon + hyprpaper # Wallpaper daemon (native) + hyprlock # Lock screen (native) + wl-clipboard # Clipboard utils + cliphist # Clipboard manager + pavucontrol # GUI audio mixer + blueman # Bluetooth tray + networkmanagerapplet # System tray for network + brightnessctl # Brightness (for laptops) + wlsunset # Night light/gamma adjustment + grim + slurp + swappy + wf-recorder # Screenshots & screenrecording + libsForQt5.qt5ct # For QT application appearance + nautilus # File manager + # Install the Gruvbox GTK theme (many are packaged, else use overlays) + gruvbox-gtk-theme + # Gruvbox icons/cursors if desired + gruvbox-dark-icons-gtk + ]; + + programs.nautilus-open-any-terminal = { + enable = true; + terminal = "ghostty"; + }; + services.gnome.sushi.enable = true; } diff --git a/rebuild-nix-system.sh b/rebuild-nix-system.sh index 48c896e..8928f9b 100755 --- a/rebuild-nix-system.sh +++ b/rebuild-nix-system.sh @@ -49,7 +49,7 @@ git diff -U0 '*.nix' echo "NixOS Rebuilding configuration for host: $NIXOS_HOST..." # First, run a check to see if the flake is valid -nix flake check +nix flake check 2>&1 | grep -i --color error && exit 1 # Rebuild the system sudo nixos-rebuild switch --flake ./#$NIXOS_HOST &>logs/nixos-switch.log || (cat logs/nixos-switch.log | grep --color error && exit 1)