This commit is contained in:
2026-07-12 15:25:55 -03:00
commit 29377d0c9a
160 changed files with 6138 additions and 0 deletions
+217
View File
@@ -0,0 +1,217 @@
{
config,
lib,
pkgs,
inputs,
...
}:
{
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
../../modules/nixos/hyprland
../../modules/nixos/steam
../../modules/nixos/awsvpn
];
# Bootloader
boot = {
loader.systemd-boot.enable = true;
loader.efi.canTouchEfiVariables = true;
initrd = {
kernelModules = [ "amdgpu" ];
# Encrypted Drives
luks.devices = {
"cryptstorage-nvme" = {
device = "/dev/disk/by-uuid/6331fbf8-5f21-4e72-b196-f31788f61d28";
keyFile = "/storage.key";
allowDiscards = true;
};
"cryptstorage-ssd" = {
device = "/dev/disk/by-uuid/8f275b47-c2fd-4b80-80e2-9dfba3279607";
keyFile = "/storage.key";
allowDiscards = true;
};
"cryptstorage-hd" = {
device = "/dev/disk/by-uuid/ef1bc263-b241-48c6-a93d-1a2497c1fa1d";
keyFile = "/storage.key";
};
};
secrets = {
"/storage.key" = "/etc/secrets/storage.key";
};
};
};
# Mount Points
fileSystems = {
"/mnt/work" = {
device = "/dev/mapper/cryptstorage-nvme";
fsType = "ext4";
options = [
"nofail"
"x-systemd.device-timeout=10s"
];
};
"/mnt/documents" = {
device = "/dev/mapper/cryptstorage-ssd";
fsType = "ext4";
options = [
"nofail"
"x-systemd.device-timeout=10s"
];
};
"/mnt/storage" = {
device = "/dev/mapper/cryptstorage-hd";
fsType = "ext4";
options = [
"nofail"
"x-systemd.device-timeout=10s"
];
};
};
# Networking
networking = {
hostName = "jpporta-nixos";
networkmanager.enable = true;
nameservers = [ "192.168.0.200" ];
};
# Locale
time.timeZone = "America/Sao_Paulo";
i18n.defaultLocale = "en_US.UTF-8";
i18n.inputMethod = {
enable = true;
type = "fcitx5";
fcitx5.waylandFrontend = true;
};
# User
users.users.jpporta = {
isNormalUser = true;
description = "jpporta";
extraGroups = [
"wheel"
"networkmanager"
"audio"
"video"
"docker"
];
shell = pkgs.zsh;
openssh.authorizedKeys.keys = [
"ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHtBfMUaNtpUYOi0dFsGsAv/ypw535+SouH7fn8eYDvr writterdeck"
];
};
nix.settings.experimental-features = [
"nix-command"
"flakes"
];
# Refactored Config
custom = {
hyprland.enable = true;
steam.enable = true;
};
##------------------------------
programs = {
zsh.enable = true;
};
# System Packages
environment.systemPackages = with pkgs; [
vim
git
wget
curl
htop
wofi
waybar
ollama-rocm
glib
gsettings-desktop-schemas
];
virtualisation.docker.enable = true; # docker, buildx
virtualisation.virtualbox.host.enable = true;
services = {
resolved = {
enable = true;
settings = {
Resolve = {
DNSOverTLS = "opportunistic";
DNSSEC = "false"; # delegate DNSSEC to Pi-hole / its upstream
FallbackDNS = [ "1.1.1.1#cloudflare-dns.com" ]; # only if Pi-hole is unreachable
};
};
};
pulseaudio.enable = false; # make sure the old one is off
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true; # apps expecting pulseaudio still work
jack.enable = true; # only if you use jack apps (reaper, etc.)
wireplumber.enable = true;
};
keyd = {
enable = true;
keyboards.default = {
ids = [ "*" ]; # or specific vendor:product ids
settings = {
main = {
capslock = "overload(control, esc)"; # translate your default.conf here
};
};
};
};
postgresql.enable = true;
redis.servers."".enable = true; # valkey/redis
syncthing = {
enable = true;
user = "jpporta";
group = "users";
dataDir = "/home/jpporta";
configDir = "/home/jpporta/.config/syncthing";
};
};
security.rtkit.enable = true; # lets pipewire get realtime priority
# TODO: remove later. Required by Teleo old tools
systemd.services.docker.environment.DOCKER_MIN_API_VERSION = "1.24";
hardware.bluetooth.enable = true; # bluez
networking.firewall.enable = true; # replaces ufw
zramSwap.enable = true; # replaces zram-generator
boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
boot.kernelModules = [ "v4l2loopback" ];
boot.extraModprobeConfig = ''
options v4l2loopback devices=1 video_nr=10 card_label="OBS Cam" exclusive_caps=1
'';
programs.obs-studio = {
enable = true;
enableVirtualCamera = true; # sets up the udev/module glue for you
plugins = with pkgs.obs-studio-plugins; [
obs-pipewire-audio-capture # capture individual app audio on wayland
obs-backgroundremoval # green-screen without a green screen
obs-vkcapture # game capture for vulkan/opengl on wayland
wlrobs # wlroots screen capture (not for hyprland — use pipewire portal)
];
};
programs.awsVpnClient.enable = true;
programs.dconf.enable = true;
# OpenSSH
services.openssh.enable = true;
programs.mosh.enable = true;
nixpkgs.config.allowUnfree = true;
system.stateVersion = "26.05";
}
@@ -0,0 +1,52 @@
# Do not modify this file! It was generated by nixos-generate-config
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{
config,
lib,
pkgs,
modulesPath,
...
}:
{
imports = [
(modulesPath + "/installer/scan/not-detected.nix")
];
boot = {
initrd.availableKernelModules = [
"nvme"
"ahci"
"xhci_pci"
"usbhid"
"usb_storage"
"sd_mod"
];
initrd.kernelModules = [ ];
kernelModules = [ "kvm-amd" ];
extraModulePackages = [ ];
};
fileSystems."/" = {
device = "/dev/mapper/cryptroot";
fsType = "ext4";
};
boot.initrd.luks.devices."cryptroot".device =
"/dev/disk/by-uuid/a672a214-222c-44f4-ad34-0a259523cf59";
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/8C2E-99B6";
fsType = "vfat";
options = [
"fmask=0022"
"dmask=0022"
];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
+152
View File
@@ -0,0 +1,152 @@
{
config,
pkgs,
lib,
inputs,
...
}:
{
imports = [
# Shared home-manager modules
../../modules/home-manager/arch-packages
../../modules/home-manager/calendar
../../modules/home-manager/oh-my-posh
../../modules/home-manager/zshrc
../../modules/home-manager/alacritty
../../modules/home-manager/bat
../../modules/home-manager/fastfetch
../../modules/home-manager/hyprland
../../modules/home-manager/hypridle
../../modules/home-manager/hyprlock
../../modules/home-manager/hyprpaper
../../modules/home-manager/awww
../../modules/home-manager/hyprsunset
../../modules/home-manager/darkman
../../modules/home-manager/wlogout
../../modules/home-manager/opencode
../../modules/home-manager/cedilla
../../modules/home-manager/dictation
../../modules/home-manager/nvim
../../modules/home-manager/pi
../../modules/home-manager/tmux
inputs.zen-browser.homeModules.beta
];
home = {
username = "jpporta";
homeDirectory = "/home/jpporta";
stateVersion = "26.05";
sessionPath = [
"$HOME/.local/bin"
"$HOME/.cargo/bin"
"$HOME/go/bin"
];
sessionVariables = {
EDITOR = "nvim";
};
};
custom = {
jpporta-calendars.enable = true;
oh-my-posh.enable = true;
zsh.enable = true;
alacritty.enable = true;
bat.enable = true;
fastfetch.enable = true;
opencode.enable = true;
hyprland.enable = true;
hypridle.enable = true;
hyprlock.enable = true;
hyprpaper.enable = false;
awww = {
enable = true;
transition = {
fps = 240;
step = 90;
duration = "1.5";
};
};
hyprsunset.enable = true;
wlogout.enable = true;
darkman.enable = true;
cedilla.enable = true;
dictation = {
enable = true;
modelHash = "sha256-ZNGCtEC5jVIDxPm9VBVE2ExgUZbE97hF36EfsjWU0eI=";
};
nvim.enable = true;
pi.enable = true;
tmux.enable = true;
};
home.packages =
let
mediaplayerPython = pkgs.python3.withPackages (ps: with ps; [ pygobject3 ]);
in
with pkgs;
[
playerctl
(pkgs.writeShellScriptBin "mediaplayer-python" ''
export GI_TYPELIB_PATH=${pkgs.playerctl}/lib/girepository-1.0''${GI_TYPELIB_PATH:+:$GI_TYPELIB_PATH}
exec ${mediaplayerPython}/bin/python3 "$@"
'')
eza
fastfetch
bat-extras.batman
nodejs
firefox
];
programs = {
zen-browser.enable = true;
git = {
enable = true;
settings = {
user = {
name = "João Pedro Pin Porta";
email = "jpedro.porta@gmail.com"; # must match the uid on the gpg key
};
gpg.program = "gpg";
commit.gpgSign = true;
tag.gpgSign = true;
};
signing = {
key = "7BA72FF4FA933219";
signByDefault = true;
};
};
fzf = {
enable = true;
enableZshIntegration = true;
};
zoxide = {
enable = true;
enableZshIntegration = true;
options = [
"--cmd"
"cd"
];
};
gpg.enable = true;
};
services.gpg-agent = {
enable = true;
pinentry.package = pkgs.pinentry-rofi;
enableSshSupport = true; # only if you use gpg keys as ssh keys
defaultCacheTtl = 3600;
maxCacheTtl = 86400;
};
services.swaync.enable = true;
}