diff --git a/hosts/laptop/default.nix b/hosts/laptop/default.nix index 180c345..6ff6088 100644 --- a/hosts/laptop/default.nix +++ b/hosts/laptop/default.nix @@ -1,109 +1,37 @@ -# Edit this configuration file to define what should be installed on -# your system. Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { config, pkgs, ... }: { - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ../../modules/system/desktop/hyprland.nix - ../../modules/system/programs/syncthing.nix - ../../modules/system/programs/thunar.nix - ../../modules/system/utils/common.nix - ../../modules/system/utils/fprint.nix - ../../modules/system/utils/garbage-collection.nix - ]; + imports = [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ../../modules/system/desktop/hyprland.nix + ../../modules/system/programs/syncthing.nix + ../../modules/system/programs/thunar.nix + ../../modules/system/utils/common.nix + ../../modules/system/utils/fprint.nix + ../../modules/system/utils/garbage-collection.nix + ../../modules/system/utils/locale.nix + ]; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + # Bootloader. - boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; + boot.loader.grub = { + enable = true; + efiSupport = true; + device = "nodev"; + }; networking.hostName = "xv-laptop"; # Define your hostname. - # Set your time zone. - time.timeZone = "Europe/Amsterdam"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "nl_NL.UTF-8"; - LC_IDENTIFICATION = "nl_NL.UTF-8"; - LC_MEASUREMENT = "nl_NL.UTF-8"; - LC_MONETARY = "nl_NL.UTF-8"; - LC_NAME = "nl_NL.UTF-8"; - LC_NUMERIC = "nl_NL.UTF-8"; - LC_PAPER = "nl_NL.UTF-8"; - LC_TELEPHONE = "nl_NL.UTF-8"; - LC_TIME = "nl_NL.UTF-8"; - }; - - # Enable the X11 windowing system. - # services.xserver.enable = true; - - # Enable the KDE Plasma Desktop Environment. - # services.xserver.displayManager.sddm.enable = true; - services.xserver.desktopManager.plasma5.enable = true; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable sound with pipewire. - sound.enable = true; - hardware.pulseaudio.enable = false; - security.rtkit.enable = true; - services.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; - }; - - # Enable touchpad support (enabled default in most desktopManager). - # services.xserver.libinput.enable = true; - - # Define a user account. Don't forget to set a password with ‘passwd’. users.users.xeovalyte = { isNormalUser = true; description = "Timo Boomers"; - extraGroups = [ "networkmanager" "wheel" ]; + extraGroups = [ "networkmanager" "wheel" "dialout" ]; }; - # List packages installed in system profile. To search, run: - # $ nix search wget - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; + services.printing.enable = true; - # List services that you want to enable: - - # Enable the OpenSSH daemon. - # services.openssh.enable = true; - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - # 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. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - system.stateVersion = "23.11"; # Did you read the comment? + system.stateVersion = "23.11"; } diff --git a/hosts/laptop/home.nix b/hosts/laptop/home.nix index 5bb6e58..f1de191 100644 --- a/hosts/laptop/home.nix +++ b/hosts/laptop/home.nix @@ -7,6 +7,8 @@ ../../modules/home/programs/firefox.nix ../../modules/home/programs/kitty.nix ../../modules/home/programs/neovim + ../../modules/home/programs/git.nix + ../../modules/home/programs/ssh.nix ../../modules/home/theme ../../modules/home/theme/blueish.nix ../../modules/home/utils/fonts.nix @@ -19,12 +21,10 @@ home.packages = with pkgs; [ # Desktop Applications - firefox - webcord - logseq - - # CLI tools - btop + kdenlive + gthumb + unstable.arduino-ide + moonlight-qt ]; home.stateVersion = "23.11"; diff --git a/modules/home/desktop/hyprland/default.nix b/modules/home/desktop/hyprland/default.nix index e87c147..922aea1 100644 --- a/modules/home/desktop/hyprland/default.nix +++ b/modules/home/desktop/hyprland/default.nix @@ -70,6 +70,10 @@ vfr = "true"; }; + xwayland = { + force_zero_scaling = true; + }; + bind = [ "$mod, Q, exec, kitty" "$mod, SPACE, exec, rofi -show drun" @@ -81,6 +85,7 @@ "$mod, F, fullscreen, 0" "$mod, M, fullscreen, 1" "$mod, L, exec, hyprlock" + "$mod, S, exec, systemctl suspend" "$mod, h, movefocus, l" "$mod, l, movefocus, r" diff --git a/modules/home/desktop/hyprland/hypridle.nix b/modules/home/desktop/hyprland/hypridle.nix index 331729f..ce9822c 100644 --- a/modules/home/desktop/hyprland/hypridle.nix +++ b/modules/home/desktop/hyprland/hypridle.nix @@ -13,7 +13,7 @@ listeners = [ { - timeout = 120; # 2.5min. + timeout = 180; # 2.5min. onTimeout = "${pkgs.brightnessctl}/bin/brightnessctl -s set 10"; # set monitor backlight to minimum, avoid 0 on OLED monitor. onResume = "${pkgs.brightnessctl}/bin/brightnessctl -r"; } diff --git a/modules/home/desktop/hyprland/waybar.nix b/modules/home/desktop/hyprland/waybar.nix index 653005b..5b39f24 100644 --- a/modules/home/desktop/hyprland/waybar.nix +++ b/modules/home/desktop/hyprland/waybar.nix @@ -17,6 +17,7 @@ ]; modules-right = [ "tray" + "network" "pulseaudio" "battery" ]; @@ -87,6 +88,18 @@ "on-click" = "pavucontrol"; "ignored-sinks" = ["Easy Effects Sink"]; }; + "network" = { + "interface" = "wlan0"; + "format" = "{ifname}"; + "format-wifi" = " {essid}"; + "format-ethernet" = "󰊗 {ipaddr}/{cidr}"; + "format-disconnected" = ""; + "tooltip-format" = "{ifname} via {gwaddr}"; + "tooltip-format-wifi" = "{essid} ({signalStrength}%)"; + "tooltip-format-ethernet" = "{ifname}"; + "tooltip-format-disconnected" = "Disconnected"; + "max-length" = 50; + }; }; }; style = '' @@ -95,7 +108,7 @@ font-family: DejaVuSansM Nerd Font; } - #workspaces,#window,#clock,#battery,#tray,#pulseaudio { + #workspaces,#window,#clock,#battery,#tray,#pulseaudio,#network { background-color: @theme_bg_color; border-radius: 50px; padding: 0px 15px; diff --git a/modules/home/programs/common.nix b/modules/home/programs/common.nix index e391381..a70ecb1 100644 --- a/modules/home/programs/common.nix +++ b/modules/home/programs/common.nix @@ -4,5 +4,10 @@ home.packages = with pkgs; [ libreoffice onlyoffice-bin + vlc + signal-desktop + logseq + webcord + unstable.localsend ]; } diff --git a/modules/system/desktop/hyprland.nix b/modules/system/desktop/hyprland.nix index 3d29223..cf399ae 100644 --- a/modules/system/desktop/hyprland.nix +++ b/modules/system/desktop/hyprland.nix @@ -17,6 +17,16 @@ }; }; + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + # Configure networking networking.networkmanager.enable = true; networking.wireless.iwd.enable = true; diff --git a/modules/system/utils/locale.nix b/modules/system/utils/locale.nix new file mode 100644 index 0000000..f12783d --- /dev/null +++ b/modules/system/utils/locale.nix @@ -0,0 +1,21 @@ +{ ... }: + +{ + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "nl_NL.UTF-8"; + LC_IDENTIFICATION = "nl_NL.UTF-8"; + LC_MEASUREMENT = "nl_NL.UTF-8"; + LC_MONETARY = "nl_NL.UTF-8"; + LC_NAME = "nl_NL.UTF-8"; + LC_NUMERIC = "nl_NL.UTF-8"; + LC_PAPER = "nl_NL.UTF-8"; + LC_TELEPHONE = "nl_NL.UTF-8"; + LC_TIME = "nl_NL.UTF-8"; + }; +}