{ pkgs, nixosModules, phps, agenix, ... }: let fortune = pkgs.writeShellScript "cgi" '' echo "Content-type: text/html" echo "" ${pkgs.fortune}/bin/fortune ''; ffcheck = pkgs.writeShellScriptBin "ffcheck" '' ${pkgs.ffmpeg}/bin/ffmpeg -v error -stats -hide_banner -i "$1" -c copy -f null - ''; in { imports = [ ./backup.nix nixosModules.nano nixosModules.nettika nixosModules.promptmoji agenix.nixosModules.default ]; nix = { gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 30d"; }; settings = { trusted-users = [ "@wheel" ]; experimental-features = [ "nix-command" "flakes" ]; }; }; nixpkgs.config.allowUnfree = true; documentation.man.generateCaches = false; environment.variables = { VISUAL = "code --wait"; PKG_CONFIG_PATH = "${pkgs.openssl.dev}/lib/pkgconfig"; }; age.identityPaths = [ "/home/nettika/.ssh/id_ed25519" ]; networking = { hostName = "marauder"; firewall.enable = false; networkmanager.enable = true; }; security.sudo.wheelNeedsPassword = false; users.defaultUserShell = pkgs.fish; programs.fish.enable = true; fileSystems = { "/" = { device = "/dev/disk/by-uuid/648c6539-892c-40d7-8b07-23fe760df02a"; fsType = "ext4"; }; "/boot" = { device = "/dev/disk/by-uuid/1D62-C30E"; fsType = "vfat"; options = [ "fmask=0022" "dmask=0022" ]; }; }; boot = { loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = true; }; initrd = { systemd.enable = true; availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "usb_storage" "sd_mod" ]; }; kernelModules = [ "kvm-amd" ]; kernelParams = [ "amd_pstate=active" ]; }; hardware = { enableRedistributableFirmware = true; cpu.amd.updateMicrocode = true; graphics = { enable = true; enable32Bit = true; extraPackages = [ pkgs.vaapiVdpau ]; }; nvidia = { open = true; prime = { offload = { enable = true; enableOffloadCmd = true; }; amdgpuBusId = "PCI:05:00:0"; nvidiaBusId = "PCI:01:00:0"; }; }; }; environment.systemPackages = with pkgs; [ # Chat clients discord cinny-desktop signal-desktop slack telegram-desktop # Browsers filezilla firefox # Creative bambu-studio blender gimp inkscape krita openscad-unstable orca-slicer plasticity # Multimedia ffcheck ffmpeg vlc # Editors abiword obsidian vscode # Dev Tools fossil just kondo nixd nixfmt-classic nixpkgs-fmt pyenv rustup # Languages kotlin nodejs php # Command line agenix.packages.x86_64-linux.default backblaze-b2 dig htop jq unzip zip # Network mullvad-vpn qbittorrent # Utility Apps baobab gparted system-config-printer # Misc gcc intiface-central openssl pkg-config prismlauncher ]; programs.git = { enable = true; lfs.enable = true; config = { init.defaultBranch = "master"; push.autoSetupRemote = true; user = { name = "Nettika"; email = "git@nettika.cat"; }; credential.helper = "store"; }; }; programs.steam = { enable = true; remotePlay.openFirewall = true; dedicatedServer.openFirewall = true; }; programs.direnv.enable = true; programs.ssh.extraConfig = '' Host quasar HostName quasar.leaf.ninja IdentityFile ~/.ssh/LightsailDefaultKey-us-west-2.pem Host monolith HostName 10.243.210.154 Host astral HostName astral.leaf.ninja IdentityFile ~/.ssh/LightsailDefaultKey-us-west-2.pem ''; services.mysql = { enable = true; package = pkgs.mariadb; }; services.httpd = { enable = true; enablePHP = true; phpPackage = phps.packages.x86_64-linux.php80; extraConfig = '' ScriptAlias /fortune ${fortune}/bin/fortune ''; virtualHosts."localhost" = { documentRoot = "/var/www"; locations."/".index = "index.html index.php"; }; }; programs.nix-ld.enable = true; services.xserver = { enable = true; videoDrivers = [ "nvidia" ]; desktopManager = { cinnamon.enable = true; xterm.enable = false; }; }; services.printing.enable = true; services.avahi = { enable = true; nssmdns4 = true; openFirewall = true; }; services.displayManager.defaultSession = "cinnamon"; services.power-profiles-daemon.enable = false; services.tlp.enable = true; services.fstrim.enable = true; services.zerotierone = { enable = true; joinNetworks = [ "8056c2e21c0b1a53" ]; }; services.mullvad-vpn = { enable = true; package = pkgs.mullvad-vpn; # Include GUI }; promptSymbol = "💜"; time.timeZone = "America/Los_Angeles"; system.stateVersion = "24.05"; }