diff --git a/nixos/configuration.nix b/nixos/configuration.nix index cb15f0f..5502d22 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -2,14 +2,19 @@ inputs, pkgs, pkgs-stable, - lib, ... }: { imports = [ ./hardware-configuration.nix - ./system/nvidia.nix + ./system/packages.nix + ./system/system.nix inputs.home-manager.nixosModules.home-manager ]; + + nix.settings.experimental-features = ["nix-command" "flakes"]; + + # Bootloader. + boot.loader.systemd-boot.enable = true; home-manager = { extraSpecialArgs = {inherit inputs pkgs pkgs-stable;}; @@ -19,180 +24,6 @@ }; }; - stylix = { - enable = true; - image = ./aurora_borealis.png; - base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; - #base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml"; - #base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; - polarity = "dark"; - autoEnable = true; - - # Set the cursor theme. - cursor = { - package = pkgs.bibata-cursors; - name = "Bibata-Modern-Ice"; - size = 24; - }; - - fonts = { - sizes = { - desktop = 8; - applications = 10; - popups = 10; - terminal = 12; - }; - - monospace = { - name = "JetBrainsMono Nerd Font"; - package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; - }; - }; - }; - - # Bootloader. - boot.loader.systemd-boot.enable = true; - nix.settings.experimental-features = ["nix-command" "flakes"]; - networking.hostName = "laptop"; # Define your hostname. - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Enable networking - networking.networkmanager.enable = true; - hardware.bluetooth.enable = true; # enables support for Bluetooth - hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot - services.blueman.enable = true; - - # Printing - services.printing.enable = true; - services.printing.drivers = with pkgs; [gutenprint hplip splix]; - hardware.printers = { - #ensurePrinters = [ - # { - # name = "HP_psc_1200_series"; - # location = "Home"; - # deviceUri = "usb://HP/psc%201200%20series?serial=UA51SGB35WT0&interface=1"; - # model = "HP_psc_1200_series.ppd"; - # ppdOptions = { - # PageSize = "A4"; - # }; - # } - #]; - #ensureDefaultPrinter = "HP_psc_1200_series"; - }; - - # Scanning - hardware.sane.enable = true; - services.ipp-usb.enable = true; - hardware.sane.extraBackends = [pkgs.hplipWithPlugin]; - - # Set your time zone. - time.timeZone = "Europe/Prague"; - - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - - i18n.extraLocaleSettings = { - LC_ADDRESS = "cs_CZ.UTF-8"; - LC_IDENTIFICATION = "cs_CZ.UTF-8"; - LC_MEASUREMENT = "cs_CZ.UTF-8"; - LC_MONETARY = "cs_CZ.UTF-8"; - LC_NAME = "cs_CZ.UTF-8"; - LC_NUMERIC = "cs_CZ.UTF-8"; - LC_PAPER = "cs_CZ.UTF-8"; - LC_TELEPHONE = "cs_CZ.UTF-8"; - LC_TIME = "cs_CZ.UTF-8"; - }; - - fonts.packages = with pkgs; [ - noto-fonts - noto-fonts-emoji - (nerdfonts.override {fonts = ["JetBrainsMono"];}) - monaspace - ]; - - services.displayManager = { - defaultSession = "hyprland"; - sddm = { - enable = true; - wayland.enable = true; - theme = "sddm-astronaut-theme"; - package = lib.mkDefault pkgs.kdePackages.sddm; - extraPackages = [pkgs.sddm-astronaut pkgs.kdePackages.qtvirtualkeyboard]; - }; - }; - - services.desktopManager.plasma6.enable = true; - #services.xserver.desktopManager.gnome.enable = true; - #environment.gnome.excludePackages = with pkgs; [ - # gnome-tour - # gnome-connections - # epiphany # web browser - # geary # email reader. Up to 24.05. Starting from 24.11 the package name is just geary. - # #evince # document viewer - # gnome-weather - # gnome-contacts - # gnome-maps - # gnome-logs - # gnome-music - # gnome-system-monitor - # gnome-text-editor - # yelp - # totem - # snapshot - # seahorse - #]; - - environment.plasma6.excludePackages = with pkgs.kdePackages; [ - ark - plasma-browser-integration - konsole - oxygen - gwenview - okular - elisa - kate - krdp - khelpcenter - ]; - - # qt = { - # enable = true; - # platformTheme = "gnome"; - # style = "adwaita-dark"; - # }; - - programs.hyprland = { - enable = true; - xwayland.enable = true; - package = inputs.hyprland.packages."${pkgs.system}".hyprland; - portalPackage = pkgs.xdg-desktop-portal-hyprland; - }; - - virtualisation.libvirtd.enable = true; - programs.virt-manager.enable = true; - - programs.proxychains = { - enable = true; - chain.type = "dynamic"; - proxies = { - tor-proxy = { - enable = true; - type = "socks5"; - host = "127.0.0.1"; - port = 9050; - }; - }; - }; - - services.tor = { - enable = true; - }; - services.tor.client.enable = true; - environment.sessionVariables = { WLR_NO_HARDWARE_CURSORS = "1"; NIXOS_OZONE_WL = "1"; @@ -200,31 +31,6 @@ FLAKE = "/home/foglar/dotfiles"; }; - services.xserver = { - xkb.layout = "us,cz"; - xkb.options = "grp:win_space_toggle"; - }; - - # Enable sound with pipewire. - 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.foglar = { isNormalUser = true; description = "foglar"; @@ -234,39 +40,11 @@ ]; }; - virtualisation.docker = { - enable = true; - rootless = { - enable = true; - setSocketVariable = true; - }; - }; - - programs.kdeconnect.enable = true; - programs.wireshark.enable = true; - programs.steam = { - enable = true; - remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play - dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server - localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers - }; - # Allow unfree packages nixpkgs.config.allowUnfree = true; # List packages installed in system profile. To search, run: # $ nix search wget - environment.systemPackages = with pkgs; [ - # vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - # wget - (sddm-astronaut.override { - themeConfig = { - ScreenWidth = 1920; - ScreenHeight = 1080; - PartialBlur = false; - }; - }) - ]; # Some programs need SUID wrappers, can be configured further or are # started in user sessions. diff --git a/nixos/system/packages.nix b/nixos/system/packages.nix new file mode 100644 index 0000000..15bb9e1 --- /dev/null +++ b/nixos/system/packages.nix @@ -0,0 +1,10 @@ +{...}: +{ + import = [ + ./packages/docker.nix + ./packages/programs.nix + ./packages/steam.nix + ./packages/tor.nix + ./packages/virtual-machines.nix + ]; +} \ No newline at end of file diff --git a/nixos/system/packages/docker.nix b/nixos/system/packages/docker.nix new file mode 100644 index 0000000..462d1b6 --- /dev/null +++ b/nixos/system/packages/docker.nix @@ -0,0 +1,9 @@ +{...}: { + virtualisation.docker = { + enable = true; + rootless = { + enable = true; + setSocketVariable = true; + }; + }; +} diff --git a/nixos/system/packages/programs.nix b/nixos/system/packages/programs.nix new file mode 100644 index 0000000..1cd4261 --- /dev/null +++ b/nixos/system/packages/programs.nix @@ -0,0 +1,5 @@ +{...}: +{ + programs.kdeconnect.enable = true; + programs.wireshark.enable = true; +} \ No newline at end of file diff --git a/nixos/system/packages/steam.nix b/nixos/system/packages/steam.nix new file mode 100644 index 0000000..8c9c1f5 --- /dev/null +++ b/nixos/system/packages/steam.nix @@ -0,0 +1,9 @@ +{...}: +{ + programs.steam = { + enable = true; + remotePlay.openFirewall = true; # Open ports in the firewall for Steam Remote Play + dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server + localNetworkGameTransfers.openFirewall = true; # Open ports in the firewall for Steam Local Network Game Transfers + }; +} \ No newline at end of file diff --git a/nixos/system/packages/tor.nix b/nixos/system/packages/tor.nix new file mode 100644 index 0000000..6eda807 --- /dev/null +++ b/nixos/system/packages/tor.nix @@ -0,0 +1,20 @@ +{...}: +{ + programs.proxychains = { + enable = true; + chain.type = "dynamic"; + proxies = { + tor-proxy = { + enable = true; + type = "socks5"; + host = "127.0.0.1"; + port = 9050; + }; + }; + }; + + services.tor = { + enable = true; + }; + services.tor.client.enable = true; +} \ No newline at end of file diff --git a/nixos/system/packages/virtual-machines.nix b/nixos/system/packages/virtual-machines.nix new file mode 100644 index 0000000..57968e8 --- /dev/null +++ b/nixos/system/packages/virtual-machines.nix @@ -0,0 +1,5 @@ +{...}: +{ + virtualisation.libvirtd.enable = true; + programs.virt-manager.enable = true; +} \ No newline at end of file diff --git a/nixos/system/sys/audio.nix b/nixos/system/sys/audio.nix new file mode 100644 index 0000000..38167c8 --- /dev/null +++ b/nixos/system/sys/audio.nix @@ -0,0 +1,18 @@ +{...}: +{ + # Enable sound with pipewire. + 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; + }; +} \ No newline at end of file diff --git a/nixos/system/sys/desktops.nix b/nixos/system/sys/desktops.nix new file mode 100644 index 0000000..03eb156 --- /dev/null +++ b/nixos/system/sys/desktops.nix @@ -0,0 +1,48 @@ +{ + inputs, + pkgs, + ... +}: +{ + services.desktopManager.plasma6.enable = true; + #services.xserver.desktopManager.gnome.enable = true; + + #environment.gnome.excludePackages = with pkgs; [ + # gnome-tour + # gnome-connections + # epiphany # web browser + # geary # email reader. Up to 24.05. Starting from 24.11 the package name is just geary. + # #evince # document viewer + # gnome-weather + # gnome-contacts + # gnome-maps + # gnome-logs + # gnome-music + # gnome-system-monitor + # gnome-text-editor + # yelp + # totem + # snapshot + # seahorse + #]; + + environment.plasma6.excludePackages = with pkgs.kdePackages; [ + ark + plasma-browser-integration + konsole + oxygen + gwenview + okular + elisa + kate + krdp + khelpcenter + ]; + + programs.hyprland = { + enable = true; + xwayland.enable = true; + package = inputs.hyprland.packages."${pkgs.system}".hyprland; + portalPackage = pkgs.xdg-desktop-portal-hyprland; + }; +} \ No newline at end of file diff --git a/nixos/system/sys/fonts.nix b/nixos/system/sys/fonts.nix new file mode 100644 index 0000000..f570783 --- /dev/null +++ b/nixos/system/sys/fonts.nix @@ -0,0 +1,8 @@ +{pkgs, ...}: { + fonts.packages = with pkgs; [ + noto-fonts + noto-fonts-emoji + (nerdfonts.override {fonts = ["JetBrainsMono"];}) + monaspace + ]; +} diff --git a/nixos/system/sys/locales.nix b/nixos/system/sys/locales.nix new file mode 100644 index 0000000..5bf5be9 --- /dev/null +++ b/nixos/system/sys/locales.nix @@ -0,0 +1,23 @@ +{...}: { + # Set your time zone. + time.timeZone = "Europe/Prague"; + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "cs_CZ.UTF-8"; + LC_IDENTIFICATION = "cs_CZ.UTF-8"; + LC_MEASUREMENT = "cs_CZ.UTF-8"; + LC_MONETARY = "cs_CZ.UTF-8"; + LC_NAME = "cs_CZ.UTF-8"; + LC_NUMERIC = "cs_CZ.UTF-8"; + LC_PAPER = "cs_CZ.UTF-8"; + LC_TELEPHONE = "cs_CZ.UTF-8"; + LC_TIME = "cs_CZ.UTF-8"; + }; + + services.xserver = { + xkb.layout = "us,cz"; + xkb.options = "grp:win_space_toggle"; + }; +} diff --git a/nixos/system/sys/network.nix b/nixos/system/sys/network.nix new file mode 100644 index 0000000..4e0f309 --- /dev/null +++ b/nixos/system/sys/network.nix @@ -0,0 +1,14 @@ +{...}: { + networking.hostName = "laptop"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + hardware.bluetooth.enable = true; # enables support for Bluetooth + hardware.bluetooth.powerOnBoot = true; # powers up the default Bluetooth controller on boot + services.blueman.enable = true; +} diff --git a/nixos/system/nvidia.nix b/nixos/system/sys/nvidia.nix similarity index 100% rename from nixos/system/nvidia.nix rename to nixos/system/sys/nvidia.nix diff --git a/nixos/system/sys/printing.nix b/nixos/system/sys/printing.nix new file mode 100644 index 0000000..cdef052 --- /dev/null +++ b/nixos/system/sys/printing.nix @@ -0,0 +1,29 @@ +{ + pkgs, + ... +}: +{ + # Printing + services.printing.enable = true; + services.printing.drivers = with pkgs; [gutenprint hplip splix]; + hardware.printers = { + #ensurePrinters = [ + # { + # name = "HP_psc_1200_series"; + # location = "Home"; + # deviceUri = "usb://HP/psc%201200%20series?serial=UA51SGB35WT0&interface=1"; + # model = "HP_psc_1200_series.ppd"; + # ppdOptions = { + # PageSize = "A4"; + # }; + # } + #]; + #ensureDefaultPrinter = "HP_psc_1200_series"; + }; + + # Scanning + hardware.sane.enable = true; + services.ipp-usb.enable = true; + hardware.sane.extraBackends = [pkgs.hplipWithPlugin]; + +} \ No newline at end of file diff --git a/nixos/system/sys/sddm.nix b/nixos/system/sys/sddm.nix new file mode 100644 index 0000000..fc7ba3f --- /dev/null +++ b/nixos/system/sys/sddm.nix @@ -0,0 +1,28 @@ +{ + pkgs, + lib, + ... +}: +{ + + services.displayManager = { + defaultSession = "hyprland"; + sddm = { + enable = true; + wayland.enable = true; + theme = "sddm-astronaut-theme"; + package = lib.mkDefault pkgs.kdePackages.sddm; + extraPackages = [pkgs.sddm-astronaut pkgs.kdePackages.qtvirtualkeyboard]; + }; + }; + + environment.systemPackages = with pkgs; [ + (sddm-astronaut.override { + themeConfig = { + ScreenWidth = 1920; + ScreenHeight = 1080; + PartialBlur = false; + }; + }) + ]; +} \ No newline at end of file diff --git a/nixos/system/sys/style.nix b/nixos/system/sys/style.nix new file mode 100644 index 0000000..85702bf --- /dev/null +++ b/nixos/system/sys/style.nix @@ -0,0 +1,36 @@ +{ + pkgs, + ... +}: +{ + stylix = { + enable = true; + image = ./aurora_borealis.png; + base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; + #base16Scheme = "${pkgs.base16-schemes}/share/themes/onedark.yaml"; + #base16Scheme = "${pkgs.base16-schemes}/share/themes/tokyo-night-dark.yaml"; + polarity = "dark"; + autoEnable = true; + + # Set the cursor theme. + cursor = { + package = pkgs.bibata-cursors; + name = "Bibata-Modern-Ice"; + size = 24; + }; + + fonts = { + sizes = { + desktop = 8; + applications = 10; + popups = 10; + terminal = 12; + }; + + monospace = { + name = "JetBrainsMono Nerd Font"; + package = pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}; + }; + }; + }; +} \ No newline at end of file diff --git a/nixos/system/system.nix b/nixos/system/system.nix new file mode 100644 index 0000000..bc6e8bd --- /dev/null +++ b/nixos/system/system.nix @@ -0,0 +1,14 @@ +{...}: +{ + imports = [ + ./sys/audio.nix + ./sys/desktops.nix + ./sys/fonts.nix + ./sys/locales.nix + ./sys/network.nix + ./sys/nvidia.nix + ./sys/printing.nix + ./sys/sddm.nix + ./sys/style.nix + ]; +} \ No newline at end of file