proper repo

This commit is contained in:
Zoty 2026-05-22 15:51:43 -03:00
parent 33d01daa3d
commit 8a35a32445
Signed by: Zoty
SSH key fingerprint: SHA256:WsGEGivgl37t3Mth6uugXMOgMCTR7QolIepNbC+j/tA
17 changed files with 338 additions and 109 deletions

View file

@ -1,21 +1,15 @@
{ pkgs, ... }:
let
gitUsername = "Zoty";
gitEmail = "zotydev@gmail.com";
myPublicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8fKj0nQMJt9nnXbYgT4ggYuj6ieGCy6KL53frwoNHa";
in
{
{ config, identity, pkgs, ... }: {
home.packages = with pkgs; [ diff-so-fancy ];
home.file.".ssh/id_ed25519.pub".text = myPublicKey;
home.file.".ssh/id_ed25519.pub".text = identity.sshPublicKey;
programs.git = {
enable = true;
settings = {
user = {
name = gitUsername;
email = gitEmail;
signingKey = "/home/zoty/.ssh/id_ed25519";
name = identity.fullName;
email = identity.email;
signingKey = "${config.home.homeDirectory}/.ssh/id_ed25519";
};
core = {
compression = 9;
@ -29,8 +23,8 @@ in
};
init.defaultBranch = "main";
status = {
branch = true;
showStash = true;
branch = true;
showStash = true;
showUntrackedFiles = "all";
};
diff = {
@ -70,9 +64,9 @@ in
commit.gpgSign = true;
gpg.format = "ssh";
url = {
"git@github.com:ZotyDev/".insteadOf = "zoty:";
"git@github.com:ZotyDev/".insteadOf = "zoty:";
"git@github.com:UnnamedEngine/".insteadOf = "unen:";
"git@github.com:Taumaturgo/".insteadOf = "taumaturgo:";
"git@github.com:Taumaturgo/".insteadOf = "taumaturgo:";
};
};
};

View file

@ -3,17 +3,16 @@ let
wallpaper = ../../wallpapers/miku.png;
in {
home.sessionVariables = {
XDG_SESSION_TYPE = "wayland";
XDG_CURRENT_DESKTOP = "niri";
XDG_SESSION_DESKTOP = "niri";
QT_QPA_PLATFORM = "wayland;xcb";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_ENABLE_HIGHDPI_SCALING = "1";
QT_SCALE_FACTOR_ROUNDING_POLICY = "RoundPreferFloor";
XDG_CURRENT_DESKTOP = "niri";
XDG_SESSION_DESKTOP = "niri";
QT_QPA_PLATFORM = "wayland;xcb";
QT_AUTO_SCREEN_SCALE_FACTOR = "1";
QT_ENABLE_HIGHDPI_SCALING = "1";
QT_SCALE_FACTOR_ROUNDING_POLICY = "RoundPreferFloor";
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
XDG_MENU_PREFIX = "plasma-";
};
XDG_MENU_PREFIX = "plasma-";
};
home.packages = with pkgs; [
grim
slurp
@ -26,7 +25,7 @@ in {
text = ''
#!/usr/bin/env bash
MODE="''${1:-region}"
SAVE_DIR="$HOME/Images/screenshots"
SAVE_DIR="${config.xdg.userDirs.pictures}/screenshots"
mkdir -p "$SAVE_DIR"
FILENAME="$SAVE_DIR/$(date '+%Y%m%d-%H%M%S').png"
@ -44,12 +43,11 @@ in {
esac
'';
};
xdg.configFile."quickshell".source =
config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/repos/nixos/quickshell";
xdg.configFile."niri/config.kdl".text = ''
// Modificadores: Mod = Super (tecla Windows)
input {
keyboard {
xkb {
@ -67,7 +65,7 @@ in {
border {
width 2
active-color "#fabd2f"
inactive-color "#504945"
inactive-color "#504945"
}
focus-ring {
@ -75,7 +73,7 @@ in {
active-color "#fabd2f"
inactive-color "transparent"
}
}
}
prefer-no-csd
@ -83,21 +81,21 @@ in {
spawn-at-startup "swww" "img" "${wallpaper}" "--transition-type" "none"
spawn-at-startup "quickshell"
screenshot-path "~/Imagens/screenshots/%Y-%m-%d %H-%M-%S.png"
screenshot-path "${config.xdg.userDirs.pictures}/screenshots/%Y-%m-%d %H-%M-%S.png"
binds {
// Aplicativos
// Applications
Mod+Return { spawn "kitty"; }
Mod+D { spawn "fuzzel"; }
Mod+Q { close-window; }
// Foco
// Focus
Mod+Left { focus-column-left; }
Mod+Right { focus-column-right; }
Mod+Up { focus-window-up; }
Mod+Down { focus-window-down; }
// Mover janelas
// Move windows
Mod+Shift+Left { move-column-left; }
Mod+Shift+Right { move-column-right; }
Mod+Shift+Up { move-window-up; }
@ -115,7 +113,7 @@ in {
Mod+Shift+4 { move-window-to-workspace 4; }
Mod+Shift+5 { move-window-to-workspace 5; }
// Sistema
// System
Mod+Shift+E { quit; }
Mod+L { spawn "swaylock" "-i" "${wallpaper}" "--scaling" "fill"; }
@ -124,16 +122,16 @@ in {
XF86AudioLowerVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"; }
XF86AudioMute { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
// Zen mode (toggle quickshell bar)
// Toggle quickshell bar (zen mode)
Mod+Z { spawn "quickshell" "ipc" "call" "zen" "toggle"; }
// Input layout
Mod+Space { switch-layout "next"; }
// Screenshot
// Screenshots
Mod+Shift+S { spawn "bash" "-c" "$HOME/.local/bin/screenshot region"; }
Mod+Shift+Alt+S { spawn "bash" "-c" "$HOME/.local/bin/screenshot screen"; }
Mod+Shift+Ctrl+S { spawn "bash" "-c" "$HOME/.local/bin/screenshot monitor"; }
}
}
'';
}

View file

@ -0,0 +1,15 @@
{ config, ... }: {
xdg.userDirs = {
enable = true;
createDirectories = true;
desktop = "${config.home.homeDirectory}/Desktop";
download = "${config.home.homeDirectory}/Downloads";
templates = "${config.home.homeDirectory}/Templates";
publicShare = "${config.home.homeDirectory}/Public";
documents = "${config.home.homeDirectory}/Documents";
music = "${config.home.homeDirectory}/Music";
pictures = "${config.home.homeDirectory}/Pictures";
videos = "${config.home.homeDirectory}/Videos";
};
}

View file

@ -36,6 +36,7 @@
ncdu
unrar
p7zip
nvd
];
networking.networkmanager.enable = true;
@ -46,11 +47,6 @@
programs.dconf.enable = true;
environment.sessionVariables = {
XDG_SESSION_TYPE = "wayland";
CLUTTER_BACKEND = "wayland";
SDL_VIDEODRIVER = "wayland";
MOZ_ENABLE_WAYLAND = "1";
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
EDITOR = "nvim";
};
};

26
modules/creative.nix Normal file
View file

@ -0,0 +1,26 @@
{ den, inputs, ... }: {
den.aspects.creative.nixos = { pkgs, ... }:
let
pkgs-unstable = import inputs.nixpkgs-unstable {
system = pkgs.system;
config.allowUnfree = true;
};
in {
environment.systemPackages = with pkgs-unstable; [
# 3D
blender
goxel
# Pixel art
aseprite
# Image editing
gimp
krita
# Video
obs-studio
kdePackages.kdenlive
];
};
}

View file

@ -1,4 +1,7 @@
{ inputs, den, lib, ... }: {
{ inputs, den, lib, config, ... }:
let
identity = config.local.identity;
in {
imports = [ inputs.den.flakeModule ];
den.schema.user.classes = lib.mkDefault [ "homeManager" ];
@ -18,9 +21,11 @@
includes = [
den.provides.hostname
den.aspects.core
den.aspects.wayland
den.aspects.niri
den.aspects.notebook-specific
den.aspects.dev
den.aspects.creative
den.aspects.secrets
];
nixos = {
@ -32,9 +37,11 @@
includes = [
den.provides.hostname
den.aspects.core
den.aspects.wayland
den.aspects.niri
den.aspects.desktop-specific
den.aspects.dev
den.aspects.creative
den.aspects.secrets
den.aspects.steam
den.aspects.prismlauncher
@ -62,7 +69,7 @@
useGlobalPkgs = true;
useUserPackages = true;
backupFileExtension = "backup";
extraSpecialArgs = { inherit inputs; };
extraSpecialArgs = { inherit inputs identity; };
};
security.sudo.wheelNeedsPassword = false;
};
@ -74,6 +81,7 @@
./_home/git.nix
./_home/dolphin.nix
./_home/theme.nix
./_home/xdg-dirs.nix
];
};
};

View file

@ -14,7 +14,6 @@
};
nvidia = {
# Required by Wayland
modesetting.enable = true;
open = false;
nvidiaSettings = true;
@ -44,13 +43,9 @@
};
environment.sessionVariables = {
NIXOS_OZONE_WL = "1";
GBM_BACKEND = "nvidia-drm";
# Nvidia-specific Wayland backend overrides
GBM_BACKEND = "nvidia-drm";
__GLX_VENDOR_LIBRARY_NAME = "nvidia";
MOZ_ENABLE_WAYLAND = "1";
MOZ_USE_XINPUT2 = "1";
__GL_SYNC_TO_VBLANK = "0";
__GL_MaxFramesAllowed = "1";
};
};
}

View file

@ -1,51 +1,57 @@
{ den, inputs, pkgs, ... }: {
{ den, inputs, config, ... }:
let
username = config.local.identity.username;
in {
den.aspects.dev.nixos = { pkgs, ... }:
let
pkgs-unstable = inputs.nixpkgs-unstable.legacyPackages.${pkgs.system};
in
{
environment.systemPackages = (with pkgs-unstable; [
# Basic
in {
environment.systemPackages = with pkgs-unstable; [
# CLI utilities
gcc
fzf
just
tree-sitter
# LSPs
bash-language-server # Bash
lua-language-server # lua
nixd # Nix
vscode-langservers-extracted # Json & CSS
yaml-language-server # Yaml
dockerfile-language-server # Docker
marksman # Markdown
clang-tools # C++
jdt-language-server # Java
typescript-language-server # Typescript
pyright # Python
taplo # TOML and rust crates
sqls # SQL
astro-language-server # Astro
angular-language-server # Angular
vue-language-server # Vue
tailwindcss-language-server # Tailwind
qt6Packages.qtdeclarative # qmlls (QML/Quickshell LSP)
wgsl-analyzer
# Extra
chafa
ripgrep
]) ++ (with pkgs; [
# Other
chafa
# Infrastructure
docker-compose
# IDE
jetbrains.idea-oss
# Neovim
vimPlugins.blink-cmp
jetbrains.idea-community
aseprite
goxel
]);
# LSPs
bash-language-server
lua-language-server
nixd
vscode-langservers-extracted
yaml-language-server
dockerfile-language-server
marksman
clang-tools
jdt-language-server
typescript-language-server
pyright
taplo
sqls
astro-language-server
angular-language-server
vue-language-server
tailwindcss-language-server
qt6Packages.qtdeclarative
wgsl-analyzer
];
programs.java = {
enable = true;
package = pkgs.jdk17;
package = pkgs-unstable.jdk17;
};
virtualisation.docker.enable = true;
users.users.zoty.extraGroups = [ "docker" ];
users.users.${username}.extraGroups = [ "docker" ];
};
}

27
modules/identity.nix Normal file
View file

@ -0,0 +1,27 @@
{ lib, ... }: {
options.local.identity = {
username = lib.mkOption {
type = lib.types.str;
default = "zoty";
description = "Primary system username.";
};
fullName = lib.mkOption {
type = lib.types.str;
default = "Zoty";
description = "Full display name used in git and similar tools.";
};
email = lib.mkOption {
type = lib.types.str;
default = "zotydev@gmail.com";
description = "Primary email address.";
};
sshPublicKey = lib.mkOption {
type = lib.types.str;
default = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8fKj0nQMJt9nnXbYgT4ggYuj6ieGCy6KL53frwoNHa";
description = "Primary SSH public key.";
};
};
}

View file

@ -34,13 +34,5 @@
efi.canTouchEfiVariables = true;
};
};
environment.sessionVariables = {
NIXOS_OZONE_WL = "1";
MOZ_ENABLE_WAYLAND = "1";
MOZ_USE_XINPUT2 = "1";
__GL_SYNC_TO_VBLANK = "0";
__GL_MaxFramesAllowed = "1";
};
};
}

View file

@ -1,27 +1,26 @@
{ inputs, den, ... }: {
{ inputs, den, config, ... }:
let
username = config.local.identity.username;
in {
den.aspects.secrets.nixos = { ... }: {
imports = [ inputs.sops-nix.nixosModules.sops ];
sops = {
defaultSopsFile = ../secrets/secrets.yaml;
# NOTE: This thing gave me a huge headache to setup.
# If you are ME from future, don't forget to place
# your age keys here!
# Place your age keys at /etc/sops/age/keys.txt before deploying.
# See README.md for setup instructions.
age.keyFile = "/etc/sops/age/keys.txt";
# Define secrets to be used.
secrets = {
# Literally the user password.
"user-password" = {
neededForUsers = true;
};
# SSH private key.
"ssh-private-key" = {
path = "/home/zoty/.ssh/id_ed25519";
owner = "zoty";
mode = "0400";
path = "/home/${username}/.ssh/id_ed25519";
owner = username;
mode = "0400";
};
};
};

20
modules/wayland.nix Normal file
View file

@ -0,0 +1,20 @@
{ den, ... }: {
den.aspects.wayland.nixos = {
environment.sessionVariables = {
# Core Wayland session
XDG_SESSION_TYPE = "wayland";
CLUTTER_BACKEND = "wayland";
SDL_VIDEODRIVER = "wayland";
# Browser / Electron Wayland backends
MOZ_ENABLE_WAYLAND = "1";
MOZ_USE_XINPUT2 = "1";
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
NIXOS_OZONE_WL = "1";
# OpenGL / frame pacing
__GL_SYNC_TO_VBLANK = "0";
__GL_MaxFramesAllowed = "1";
};
};
}