Modularity for system configuration
This commit is contained in:
parent
ad997ad900
commit
57677defc0
@ -2,15 +2,20 @@
|
||||
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;};
|
||||
backupFileExtension = "backup";
|
||||
@ -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.
|
||||
|
||||
10
nixos/system/packages.nix
Normal file
10
nixos/system/packages.nix
Normal file
@ -0,0 +1,10 @@
|
||||
{...}:
|
||||
{
|
||||
import = [
|
||||
./packages/docker.nix
|
||||
./packages/programs.nix
|
||||
./packages/steam.nix
|
||||
./packages/tor.nix
|
||||
./packages/virtual-machines.nix
|
||||
];
|
||||
}
|
||||
9
nixos/system/packages/docker.nix
Normal file
9
nixos/system/packages/docker.nix
Normal file
@ -0,0 +1,9 @@
|
||||
{...}: {
|
||||
virtualisation.docker = {
|
||||
enable = true;
|
||||
rootless = {
|
||||
enable = true;
|
||||
setSocketVariable = true;
|
||||
};
|
||||
};
|
||||
}
|
||||
5
nixos/system/packages/programs.nix
Normal file
5
nixos/system/packages/programs.nix
Normal file
@ -0,0 +1,5 @@
|
||||
{...}:
|
||||
{
|
||||
programs.kdeconnect.enable = true;
|
||||
programs.wireshark.enable = true;
|
||||
}
|
||||
9
nixos/system/packages/steam.nix
Normal file
9
nixos/system/packages/steam.nix
Normal file
@ -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
|
||||
};
|
||||
}
|
||||
20
nixos/system/packages/tor.nix
Normal file
20
nixos/system/packages/tor.nix
Normal file
@ -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;
|
||||
}
|
||||
5
nixos/system/packages/virtual-machines.nix
Normal file
5
nixos/system/packages/virtual-machines.nix
Normal file
@ -0,0 +1,5 @@
|
||||
{...}:
|
||||
{
|
||||
virtualisation.libvirtd.enable = true;
|
||||
programs.virt-manager.enable = true;
|
||||
}
|
||||
18
nixos/system/sys/audio.nix
Normal file
18
nixos/system/sys/audio.nix
Normal file
@ -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;
|
||||
};
|
||||
}
|
||||
48
nixos/system/sys/desktops.nix
Normal file
48
nixos/system/sys/desktops.nix
Normal file
@ -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;
|
||||
};
|
||||
}
|
||||
8
nixos/system/sys/fonts.nix
Normal file
8
nixos/system/sys/fonts.nix
Normal file
@ -0,0 +1,8 @@
|
||||
{pkgs, ...}: {
|
||||
fonts.packages = with pkgs; [
|
||||
noto-fonts
|
||||
noto-fonts-emoji
|
||||
(nerdfonts.override {fonts = ["JetBrainsMono"];})
|
||||
monaspace
|
||||
];
|
||||
}
|
||||
23
nixos/system/sys/locales.nix
Normal file
23
nixos/system/sys/locales.nix
Normal file
@ -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";
|
||||
};
|
||||
}
|
||||
14
nixos/system/sys/network.nix
Normal file
14
nixos/system/sys/network.nix
Normal file
@ -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;
|
||||
}
|
||||
29
nixos/system/sys/printing.nix
Normal file
29
nixos/system/sys/printing.nix
Normal file
@ -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];
|
||||
|
||||
}
|
||||
28
nixos/system/sys/sddm.nix
Normal file
28
nixos/system/sys/sddm.nix
Normal file
@ -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;
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
36
nixos/system/sys/style.nix
Normal file
36
nixos/system/sys/style.nix
Normal file
@ -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"];};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
14
nixos/system/system.nix
Normal file
14
nixos/system/system.nix
Normal file
@ -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
|
||||
];
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user