proper repo
This commit is contained in:
parent
33d01daa3d
commit
8a35a32445
17 changed files with 338 additions and 109 deletions
|
|
@ -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:";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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"; }
|
||||
}
|
||||
}
|
||||
'';
|
||||
}
|
||||
|
|
|
|||
15
modules/_home/xdg-dirs.nix
Normal file
15
modules/_home/xdg-dirs.nix
Normal 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";
|
||||
};
|
||||
}
|
||||
|
|
@ -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
26
modules/creative.nix
Normal 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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
@ -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
|
||||
];
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
27
modules/identity.nix
Normal 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.";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
@ -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";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
20
modules/wayland.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue