{ config, pkgs, ... }: { imports = [ # Include the results of the hardware scan. ./hardware-configuration.nix ./zsh.nix ./tuigreet.nix ./sway.nix ./kitty.nix #./cosmic.nix ./tty.nix ./aliases.nix ./fonts.nix ./k8s.nix ./tail.nix ./podman.nix ./incus.nix ./libvirt.nix ]; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; boot.kernelPackages = pkgs.linuxPackages_latest; zramSwap = { enable = true; algorithm = "zstd"; }; # Enable all unfree hardware support. hardware.firmware = with pkgs; [ firmwareLinuxNonfree ]; hardware.enableAllFirmware = true; hardware.enableRedistributableFirmware = true; nixpkgs.config.allowUnfree = true; services.fwupd.enable = true; services.fstrim.enable = true; # Networking networking.networkmanager.enable = true; networking.hostName = "idea"; networking.nftables.enable = true; # Enable the OpenSSH daemon. services.openssh.enable = true; # Set your time zone. time.timeZone = "Europe/Oslo"; # Select internationalisation properties. i18n.defaultLocale = "en_US.UTF-8"; # Enable the X11 windowing system. services.xserver.enable = true; services.xserver.videoDrivers = [ "amdgpu" ]; programs.steam.enable = true; services.desktopManager.plasma6.enable = true; # Configure keymap in X11 services.xserver = { xkb.layout = "no"; xkb.variant = ""; }; # Configure console keymap console = { font = "Lat2-Terminus16"; keyMap = "no"; }; i18n.extraLocaleSettings = { LC_ADDRESS = "nb_NO.utf8"; LC_IDENTIFICATION = "nb_NO.utf8"; LC_MEASUREMENT = "nb_NO.utf8"; LC_MONETARY = "nb_NO.utf8"; LC_NAME = "nb_NO.utf8"; LC_NUMERIC = "nb_NO.utf8"; LC_PAPER = "nb_NO.utf8"; LC_TELEPHONE = "nb_NO.utf8"; LC_TIME = "nb_NO.utf8"; }; # Enable CUPS to print documents. services.printing.enable = false; # 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; }; # Enble flakes and other experimental features nix = { extraOptions = "experimental-features = nix-command flakes"; package = pkgs.nixFlakes; }; services.emacs.enable = true; # User account. nix.settings.trusted-users = [ "root" "geir" ]; environment.localBinInPath = true; users.users.geir = { isNormalUser = true; description = "Geir Okkenhaug Jerstad"; extraGroups = [ "networkmanager" "wheel" ]; shell = pkgs.zsh; packages = with pkgs; [ discord teamviewer evince koodo-reader distrobox # Browsers firefox chromium librewolf # Monitoring tools htop glances bottom fwupd # shells & terminals terminator kitty starship fzf # Multiplexers zellij # Editors & command line text utils hyfetch mc neovim zed-editor poppler_utils emacs emacsPackages.vterm libvterm libtool magic-wormhole protonvpn-gui ytfzf nix-direnv # mpv # DevSecOps virt-manager # Audio tools ncpamixer # blog haunt ]; }; environment.systemPackages = with pkgs; [ git hut unzip fastfetch wget curl inxi mlocate tailscale bluez-tools # Languages zig python3 python3Packages.pip guile go gotools golint rustup nodejs # language servers zls python3Packages.python-lsp-server gopls luajitPackages.lua-lsp nodePackages.bash-language-server vimPlugins.cmp-nvim-lsp ccls vscode-langservers-extracted gdb # building software glibc stdenv clang qemu cmake gcc bintools gnutar sccache ncurses # web dev hugo # git gh vscode ]; # Open ports in the firewall. networking.firewall.allowedTCPPorts = [ 22 ]; networking.firewall.allowedUDPPorts = [ 22 ]; networking.firewall.enable = true; system.stateVersion = "22.11"; }