{ config, config', pkgs, lib, inputs, ... }: { nixpkgs = { config = { permittedInsecurePackages = [ "python-2.7.18.6" "electron-24.8.6" ]; allowUnfree = true; }; overlays = [ inputs.nur.overlay inputs.neovim-nightly-overlay.overlay ]; }; boot = { loader = { systemd-boot = { enable = true; memtest86.enable = true; }; efi.canTouchEfiVariables = true; }; kernelPackages = pkgs.linuxPackages_zen; extraModulePackages = with config.boot.kernelPackages; [ ddcci-driver ]; kernelModules = [ "ddcci" ]; initrd.kernelModules = [ "amdgpu" ]; kernelParams = [ "video=eDP-1:2560x1440@165" "video=HDMI-A-1:2560x1440@144" ]; }; documentation = { enable = true; dev.enable = true; doc.enable = true; info.enable = true; man = { enable = true; generateCaches = true; man-db.enable = false; mandoc.enable = true; }; nixos = { includeAllModules = true; }; }; networking = { hostName = config'.hostname; networkmanager = { enable = true; dns = "systemd-resolved"; }; firewall.checkReversePath = "loose"; }; services.resolved.enable = true; # don't wait for network to boot faster # https://old.reddit.com/r/NixOS/comments/vdz86j/how_to_remove_boot_dependency_on_network_for_a systemd = { targets.network-online.wantedBy = lib.mkForce []; # default is [ "multi-user.target" ] services.NetworkManager-wait-online.wantedBy = lib.mkForce []; # default is [ "network-online.target" ] }; systemd.oomd = { enable = true; enableUserServices = true; }; time.timeZone = "Europe/Warsaw"; nix = { settings = { experimental-features = [ "flakes" "nix-command" ]; substituters = [ "https://nix-gaming.cachix.org" "https://nix-community.cachix.org" "https://nixpkgs-wayland.cachix.org" "https://viperml.cachix.org" ]; trusted-public-keys = [ "nix-gaming.cachix.org-1:nbjlureqMbRAxR1gJ/f3hxemL9svXaZF/Ees8vCUUs4=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA=" "viperml.cachix.org-1:qZhKBMTfmcLL+OG6fj/hzsMEedgKvZVFRRAhq7j8Vh8=" ]; keep-outputs = true; keep-derivations = true; }; }; virtualisation = { libvirtd = { enable = true; onBoot = "ignore"; qemu = { ovmf.enable = true; runAsRoot = false; swtpm.enable = true; }; }; }; networking.firewall.trustedInterfaces = [ "virbr0" ]; programs.dconf.enable = true; security.sudo.package = pkgs.sudo.override { withInsults = true; }; security.polkit.enable = true; fonts.packages = with pkgs; [ material-design-icons (nerdfonts.override { fonts = [ "JetBrainsMono" ]; }) noto-fonts noto-fonts-cjk-sans noto-fonts-cjk-serif noto-fonts-emoji ]; users.users.${config'.username} = { isNormalUser = true; extraGroups = [ "wheel" "networkmanager" "libvirtd" ]; shell = pkgs.zsh; }; programs.zsh.enable = true; environment = { shells = [ pkgs.zsh ]; pathsToLink = [ "/share/zsh" ]; enableAllTerminfo = true; sessionVariables = { TERM = "foot"; EDITOR = "${pkgs.neovim}/bin/nvim"; GTK_IM_MODULE = "fcitx"; QT_IM_MODULE = "fcitx"; XMODIFIERS = "@im=fcitx"; LIBSEAT_BACKEND = "logind"; QT_QPA_PLATFORMTHEME = "qt5ct"; GOPATH = "\$HOME/.local/share/go"; XDG_CURRENT_DESKTOP = "Hyprland"; XDG_SESSION_TYPE = "wayland"; XDG_SESSION_DESKTOP = "Hyprland"; QT_QPA_PLATFORM = "wayland"; MOZ_ENABLE_WAYLAND = "1"; MOZ_DRM_DEVICE = "/dev/dri/card0"; SDL_VIDEODRIVER = "wayland"; _JAVA_AWT_WM_NONEREPARENTING = "1"; CLUTTER_BACKEND = "wayland"; GDK_BACKEND = "wayland"; XCURSOR_THEME = "Bibata-Modern-Classic"; XCURSOR_SIZE = "24"; XDG_DATA_HOME = "\$HOME/.local/share"; XDG_CONFIG_HOME = "\$HOME/.config"; XDG_STATE_HOME = "\$HOME/.local/state"; XDG_CACHE_HOME = "\$HOME/.cache"; HISTFILE = "\${XDG_STATE_HOME}/bash/history"; CARGO_HOME = "\${XDG_DATA_HOME}/cargo"; GTK2_RC_FILES = "\${XDG_CONFIG_HOME}/gtk-2.0/gtkrc"; CHROME_EXECUTABLE = "${pkgs.ungoogled-chromium}/bin/chromium"; #NIXOS_OZONE_WL = "1"; #WLR_DRM_DEVICES = "/dev/dri/card0:/dev/dri/card1"; #DRI_PRIME = "1"; }; systemPackages = with pkgs; [ man-pages man-pages-posix ]; }; services = { blueman.enable = true; mullvad-vpn.enable = true; pcscd.enable = true; udev.packages = [ pkgs.yubikey-personalization ]; udisks2.enable = true; dbus.enable = true; fwupd = { enable = true; }; # db mysql = { enable = true; package = pkgs.mariadb; ensureUsers = [{ name = "jacek"; ensurePermissions = { "*.*" = "ALL PRIVILEGES"; }; }]; }; }; programs.gnupg.agent = { enable = true; pinentryFlavor = "qt"; enableSSHSupport = true; }; hardware = { opentabletdriver = { enable = true; daemon.enable = true; }; bluetooth.enable = true; opengl = { enable = true; driSupport = true; driSupport32Bit = true; extraPackages = with pkgs; [ amdvlk ]; extraPackages32 = with pkgs; [ driversi686Linux.amdvlk ]; }; cpu.amd.updateMicrocode = true; }; services.btrfs = { autoScrub = { enable = true; interval = "weekly"; }; }; services.psd = { enable = true; resyncTimer = "30m"; }; services.journald = { extraConfig = '' SystemMaxUse=100M ''; }; services.udev = { extraRules = let inherit (inputs.hyprland.packages.${pkgs.system}) hyprland; power_supply = pkgs.writeShellScript "on_power_supply" '' ${pkgs.asusctl}/bin/asusctl profile -P Performance #${pkgs.supergfxctl}/bin/supergfxctl -m Hybrid ${config.boot.kernelPackages.cpupower}/bin/cpupower frequency-set -g performance ${hyprland}/bin/hyprctl keyword decoration:blur:enabled true ${hyprland}/bin/hyprctl keyword animations:enabled true ''; battery = pkgs.writeShellScript "on_battery" '' ${pkgs.asusctl}/bin/asusctl profile -P Quiet #${pkgs.supergfxctl}/bin/supergfxctl -m Integrated ${config.boot.kernelPackages.cpupower}/bin/cpupower frequency-set -g powersave ${hyprland}/bin/hyprctl keyword decoration:blur:enabled false ${hyprland}/bin/hyprctl keyword animations:enabled false ''; in '' SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="1",RUN+="${power_supply}" SUBSYSTEM=="power_supply",ENV{POWER_SUPPLY_ONLINE}=="0",RUN+="${battery}" ''; }; systemd.services = { "suspend@" = { description = "Unit suspend actions"; before = [ "sleep.target" ]; serviceConfig = { User = "%I"; Type = "forking"; }; environment = { DISPLAY = ":0"; }; preStart = "${pkgs.mpc-cli}/bin/mpc pause"; script = "${inputs.nixpkgs-wayland.packages.${pkgs.system}.swaylock-effects}/bin/swaylock"; postStart = "${pkgs.coreutils-full}/bin/sleep 1"; wantedBy = [ "sleep.target" ]; }; #"resume@" = { # #}; }; # this makes usb devices autosuspend #powerManagement.powertop.enable = true; programs.kdeconnect.enable = true; programs.noisetorch.enable = true; myOptions = { programs = { git = { enable = true; userName = "jacekpoz"; userEmail = "jacekpoz@cock.li"; signingKey = "0EEE6B0C9A8CC06820E59C3894E812A8B12AAE3C"; editor = "${pkgs.neovim-nightly}/bin/nvim"; defaultBranch = "master"; }; starship.enable = true; zsh = { enable = true; extraAliases = { u = "nh os switch \"/home/jacek/niksos\" -H niks -- --use-remote-sudo --max-jobs 3 --cores 4"; us = "NIX_SSHOPTS='-t' nh os switch \"/home/jacek/niksos\" -H chmura -- --use-remote-sudo --target-host chmura --max-jobs 3 --cores 4"; }; profiling = false; }; anyrun.enable = true; armcord.enable = true; btop.enable = true; firefox = { enable = true; defaultSearchEngine = "NotASearx"; searchEngines = { "NotASearx" = { url = "https://search.notashelf.dev/search?q={searchTerms}"; faviconUrl = "https://search.notashelf.dev/favicon.ico"; aliases = [ "!sx" ]; }; "NixOS Packages" = { url = "https://search.nixos.org/packages?channel=unstable&query={searchTerms}"; faviconPath = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; aliases = [ "!np" ]; }; "NixOS Options" = { url = "https://search.nixos.org/options?channel=unstable&query={searchTerms}"; faviconPath = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; aliases = [ "!no" ]; }; "NixOS Wiki" = { url = "https://nixos.wiki/index.php?search={searchTerms}"; faviconPath = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; aliases = [ "!nw" ]; }; "Home Manger Option Search" = { url = "https://mipmip.github.io/home-manager-option-search?query={searchTerms}"; faviconPath = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; aliases = [ "!hm" ]; }; "Arch Wiki" = { url = "https://wiki.archlinux.org/index.php?search={searchTerms}"; faviconUrl = "https://archlinux.org/favicon.ico"; aliases = [ "!aw" ]; }; "Gentoo Wiki" = { url = "https://wiki.gentoo.org/index.php?search={searchTerms}"; faviconUrl = "https://www.gentoo.org/favicon.ico"; aliases = [ "!gw" ]; }; "Debian Wiki" = { url = "https://wiki.debian.org/FrontPage?action=fullsearch&value={searchTerms}"; faviconUrl = "https://www.debian.org/favicon.ico"; aliases = [ "!dw" ]; }; }; }; foot.enable = true; mpv.enable = true; neovim.enable = true; swaylock.enable = true; waybar.enable = true; zathura.enable = true; hyprland = { enable = true; startupSound = ./mathis.m4a; }; helix.enable = true; newsboat.enable = true; }; themes = { cursor = { enable = true; package = pkgs.bibata-cursors; name = "Bibata-Modern-Classic"; size = 24; }; gtk = { enable = true; package = pkgs.catppuccin-gtk; name = "Catppuccin-Mocha-Standard-Green-Dark"; variant = "mocha"; accentColour = "green"; iconTheme = { name = "Papirus-Dark"; package = pkgs.catppuccin-papirus-folders; }; }; qt = { enable = true; package = pkgs.catppuccin-kde; name = "Catppuccin-Mocha-Dark"; variant = "mocha"; accentColour = "green"; }; }; services = { asusd.enable = true; dunst.enable = true; mpd.enable = true; greetd = { enable = true; greeter = "gtkgreet"; launchOptions = [ "Hyprland" "sway" "zsh" "reboot" "shutdown now" ]; }; ssh = { daemon.enable = false; agent = { enable = true; hostAliases = { "github" = { hostName = "github.com"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/githubkey"; }; "git.dupa.edu.pl" = { hostName = "git.dupa.edu.pl"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/gitdupaedupl"; }; "codeberg" = { hostName = "codeberg.org"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/codeberg"; }; "gitlab" = { hostName = "gitlab.com"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/gitlab"; }; "aur" = { hostName = "aur.archlinux.org"; user = "aur"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/aur"; }; "jacekpoz" = { hostName = "git.jacekpoz.pl"; user = "forgejo"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/jacekpoz"; }; "chmura" = { hostName = "192.168.15.17"; user = "chmura"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/chmura"; }; "chmura2" = { hostName = "jacekpoz.pl"; user = "chmura"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/chmura"; }; "malina" = { hostName = "192.168.15.13"; user = "malina"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/malina"; }; "outfoxxed" = { hostName = "git.outfoxxed.me"; identityFile = "${config.home-manager.users.${config'.username}.home.homeDirectory}/.ssh/outfoxxed"; }; }; }; }; pipewire.enable = true; }; }; system.stateVersion = "23.11"; }