commit 54c34faa6464b482e4bb027b95c84c691a7fcc49 Author: Zoty Date: Fri Mar 27 19:34:02 2026 -0300 feat: initial commit diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..eb577a8 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,9 @@ +keys: + - &user age12lvgjqzf0nczxp48r6rr0h7rpt8z8guqlsefe9f2ld2gl8tk5duqn4x2cj + +creation_rules: + - path_regex: secrets/.*\.yaml$ + key_groups: + - age: + - *user + diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..3552742 --- /dev/null +++ b/flake.lock @@ -0,0 +1,240 @@ +{ + "nodes": { + "den": { + "locked": { + "lastModified": 1774597022, + "narHash": "sha256-QEYG3SBlX35TDVV/wyBonrEDEK4Mr3dtXSfnzvM0lII=", + "owner": "vic", + "repo": "den", + "rev": "b7f910ab47260c91a0ae8d55fa72cd2178ba2458", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "den", + "type": "github" + } + }, + "flake-aspects": { + "locked": { + "lastModified": 1773552804, + "narHash": "sha256-a0kjpCZGnD5lt7yW6C3hzPhSf5KjnTyvX6XZ2NuhGs4=", + "owner": "vic", + "repo": "flake-aspects", + "rev": "56fa8d4d4772d58eb7f9d66c28c1cd2762b60423", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "flake-aspects", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1774559029, + "narHash": "sha256-deix7yg3j6AhjMPnFDCmWB3f83LsajaaULP5HH2j34k=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "a0bb0d11514f92b639514220114ac8063c72d0a3", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "home-manager", + "type": "github" + } + }, + "import-tree": { + "locked": { + "lastModified": 1773693634, + "narHash": "sha256-BtZ2dtkBdSUnFPPFc+n0kcMbgaTxzFNPv2iaO326Ffg=", + "owner": "vic", + "repo": "import-tree", + "rev": "c41e7d58045f9057880b0d85e1152d6a4430dbf1", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", + "type": "github" + } + }, + "niri-flake": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1774620721, + "narHash": "sha256-QucawBaJ6Rl5JWAXAbpouXM1MsvlzwCsPGl3zOwLtzw=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "fb83d584532282f585cd02f3aa513e98b843e7e7", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.08", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1774616418, + "narHash": "sha256-z+dLkAS4bqytIlOI4h2MnjBJrSP4d1Awx0n+IV5YA3Y=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "8f48f56fe19918b5cfa02e5d68a47ebaf7bf3dee", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1774386573, + "narHash": "sha256-4hAV26quOxdC6iyG7kYaZcM3VOskcPUrdCQd/nx8obc=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "46db2e09e1d3f113a13c0d7b81e2f221c63b8ce9", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1774388614, + "narHash": "sha256-tFwzTI0DdDzovdE9+Ras6CUss0yn8P9XV4Ja6RjA+nU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1073dad219cb244572b74da2b20c7fe39cb3fa9e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1774388614, + "narHash": "sha256-tFwzTI0DdDzovdE9+Ras6CUss0yn8P9XV4Ja6RjA+nU=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1073dad219cb244572b74da2b20c7fe39cb3fa9e", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "den": "den", + "flake-aspects": "flake-aspects", + "home-manager": "home-manager", + "import-tree": "import-tree", + "niri-flake": "niri-flake", + "nixpkgs": "nixpkgs_2", + "sops-nix": "sops-nix" + } + }, + "sops-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1774303811, + "narHash": "sha256-fhG4JAcLgjKwt+XHbjs8brpWnyKUfU4LikLm3s0Q/ic=", + "owner": "Mic92", + "repo": "sops-nix", + "rev": "614e256310e0a4f8a9ccae3fa80c11844fba7042", + "type": "github" + }, + "original": { + "owner": "Mic92", + "repo": "sops-nix", + "type": "github" + } + }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1755491097, + "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "388d291e82ffbc73be18169d39470f340707edaa", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.7", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1773622265, + "narHash": "sha256-wToKwH7IgWdGLMSIWksEDs4eumR6UbbsuPQ42r0oTXQ=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "a879e5e0896a326adc79c474bf457b8b99011027", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..e944459 --- /dev/null +++ b/flake.nix @@ -0,0 +1,23 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11"; + import-tree.url = "github:vic/import-tree"; + flake-aspects.url = "github:vic/flake-aspects"; + den.url = "github:vic/den"; + home-manager = { + url = "github:nix-community/home-manager/release-25.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + niri-flake.url = "github:sodiboo/niri-flake"; + sops-nix = { + url = "github:Mic92/sops-nix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs: + (inputs.nixpkgs.lib.evalModules { + modules = [ (inputs.import-tree ./modules) ]; + specialArgs.inputs = inputs; + }).config.flake; +} diff --git a/modules/_hardware/desktop-hardware.nix b/modules/_hardware/desktop-hardware.nix new file mode 100644 index 0000000..3174fb8 --- /dev/null +++ b/modules/_hardware/desktop-hardware.nix @@ -0,0 +1,50 @@ +# 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 = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/530e2b6f-2a15-4204-9445-8150743e3835"; + fsType = "btrfs"; + options = [ "subvol=@root" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/530e2b6f-2a15-4204-9445-8150743e3835"; + fsType = "btrfs"; + options = [ "subvol=@nix" ]; + }; + + fileSystems."/var/log" = + { device = "/dev/disk/by-uuid/530e2b6f-2a15-4204-9445-8150743e3835"; + fsType = "btrfs"; + options = [ "subvol=@log" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/530e2b6f-2a15-4204-9445-8150743e3835"; + fsType = "btrfs"; + options = [ "subvol=@home" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B7BD-80CC"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/_hardware/notebook-hardware.nix b/modules/_hardware/notebook-hardware.nix new file mode 100644 index 0000000..54711c0 --- /dev/null +++ b/modules/_hardware/notebook-hardware.nix @@ -0,0 +1,54 @@ +# 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 = [ "xhci_pci" "ehci_pci" "ahci" "usb_storage" "ums_realtek" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/79211c8d-bd5e-4d19-b47c-2e57a4c6253e"; + fsType = "btrfs"; + options = [ "subvol=root" ]; + }; + + fileSystems."/nix" = + { device = "/dev/disk/by-uuid/79211c8d-bd5e-4d19-b47c-2e57a4c6253e"; + fsType = "btrfs"; + options = [ "subvol=nix" ]; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/79211c8d-bd5e-4d19-b47c-2e57a4c6253e"; + fsType = "btrfs"; + options = [ "subvol=home" ]; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/8981-AD7D"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/43d24b75-0fe1-422c-8a8f-b89f32063d3c"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp2s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/modules/_home/default.nix b/modules/_home/default.nix new file mode 100644 index 0000000..b3df297 --- /dev/null +++ b/modules/_home/default.nix @@ -0,0 +1,47 @@ +{ pkgs, ... }: { + home.packages = with pkgs; [ + firefox + wezterm + ]; + + programs.git = { + enable = true; + userName = "Zoty"; + userEmail = "zotydev@gmail.com"; + }; + + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + history = { + size = 10000; + path = "$HOME/.zsh_history"; + }; + + setOptions = [ + "HIST_IGNORE_ALL_DUPS" + "AUTO_CD" + ]; + initContent = '' + source ${pkgs.zsh-powerlevel10k}/share/zsh-powerlevel10k/powerlevel10k.zsh-theme + ''; + oh-my-zsh = { + enable = true; + plugins = [ + "git" + "dirhistory" + "history" + ]; + }; + }; + + programs.direnv = { + enable = true; + nix-direnv.enable = true; + enableBashIntegration = true; + enableZshIntegration = true; + }; +} diff --git a/modules/_home/git.nix b/modules/_home/git.nix new file mode 100644 index 0000000..2e19421 --- /dev/null +++ b/modules/_home/git.nix @@ -0,0 +1,79 @@ +{ pkgs, ... }: +let + gitUsername = "Zoty"; + gitEmail = "zotydev@gmail.com"; + myPublicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIK8fKj0nQMJt9nnXbYgT4ggYuj6ieGCy6KL53frwoNHa"; +in +{ + home.packages = with pkgs; [ diff-so-fancy ]; + + home.file.".ssh/id_ed25519.pub".text = myPublicKey; + + programs.git = { + enable = true; + settings = { + user = { + name = gitUsername; + email = gitEmail; + signingKey = "/run/secrets/ssh-private-key"; + }; + core = { + compression = 9; + whitespace = "error"; + preloadindex = true; + }; + advice = { + addEmptyPathspec = false; + pushNonFastForward = false; + statusHints = false; + }; + init.defaultBranch = "main"; + status = { + branch = true; + showStash = true; + showUntrackedFiles = "all"; + }; + diff = { + context = 3; + rename = "copies"; + interHunkContext = 10; + }; + pager = { + diff = "diff-so-fancy | $PAGER"; + branch = false; + tag = false; + }; + diff-so-fancy.markEmptyLines = false; + interactive = { + diffFilter = "diff-so-fancy --patch"; + singlekey = true; + }; + push = { + autoSetupRemote = true; + default = "current"; + followTags = true; + }; + pull = { + default = "current"; + rebase = true; + }; + rebase = { + autoStash = true; + missingCommitsCheck = "warn"; + }; + log = { + abbrevCommit = true; + graphColors = "blue,yellow,cyan,magenta,green,red"; + }; + branch.sort = "-committerdate"; + tag.sort = "-taggerdate"; + commit.gpgSign = true; + gpg.format = "ssh"; + url = { + "git@github.com:ZotyDev/".insteadOf = "zoty:"; + "git@github.com:UnnamedEngine/".insteadOf = "unen:"; + "git@github.com:Taumaturgo/".insteadOf = "taumaturgo:"; + }; + }; + }; +} diff --git a/modules/_home/niri.nix b/modules/_home/niri.nix new file mode 100644 index 0000000..622b456 --- /dev/null +++ b/modules/_home/niri.nix @@ -0,0 +1,73 @@ +{ pkgs, ... }: { + xdg.configFile."niri/config.kdl".text = '' + // Modificadores: Mod = Super (tecla Windows) + input { + keyboard { + xkb { + layout "en" + } + } + touchpad { + tap + natural-scroll + } + } + + layout { + gaps 8 + border { + width 2 + active-color "#7aa2f7" + inactive-color "#3b4261" + } + } + + prefer-no-csd + + screenshot-path "~/Imagens/screenshots/%Y-%m-%d %H-%M-%S.png" + + binds { + // Aplicativos + Mod+Return { spawn "wezterm"; } + Mod+D { spawn "fuzzel"; } + Mod+Q { close-window; } + + // Foco + Mod+Left { focus-column-left; } + Mod+Right { focus-column-right; } + Mod+Up { focus-window-up; } + Mod+Down { focus-window-down; } + + // Mover janelas + Mod+Shift+Left { move-column-left; } + Mod+Shift+Right { move-column-right; } + Mod+Shift+Up { move-window-up; } + Mod+Shift+Down { move-window-down; } + + // Workspaces + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+Shift+1 { move-window-to-workspace 1; } + Mod+Shift+2 { move-window-to-workspace 2; } + Mod+Shift+3 { move-window-to-workspace 3; } + Mod+Shift+4 { move-window-to-workspace 4; } + Mod+Shift+5 { move-window-to-workspace 5; } + + // Sistema + Mod+Shift+E { quit; } + Mod+L { spawn "swaylock"; } + + // Volume + XF86AudioRaiseVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+"; } + XF86AudioLowerVolume { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-"; } + XF86AudioMute { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; } + + // Screenshot + Print { screenshot; } + Mod+Print { screenshot-screen; } + } + ''; +} diff --git a/modules/core.nix b/modules/core.nix new file mode 100644 index 0000000..1e6f03f --- /dev/null +++ b/modules/core.nix @@ -0,0 +1,39 @@ +{ den, ... }: { + den.aspects.core.nixos = { pkgs, ... }: { + nixpkgs.config.allowUnfree = true; + + nix = { + settings = { + experimental-features = [ "nix-command" "flakes" ]; + auto-optimise-store = true; + + }; + gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 7d"; + }; + }; + + services.xserver.xkb.layout = "us"; + + environment.systemPackages = with pkgs; [ + curl + wget + neovim + btop + nixd + ]; + + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + networking.networkmanager.enable = true; + time.timeZone = "America/Sao_Paulo"; + i18n.defaultLocale = "en_US.UTF-8"; + }; +} diff --git a/modules/den.nix b/modules/den.nix new file mode 100644 index 0000000..2a04c3b --- /dev/null +++ b/modules/den.nix @@ -0,0 +1,72 @@ +{ inputs, den, lib, ... }: { + imports = [ inputs.den.flakeModule ]; + + den.schema.user.classes = lib.mkDefault [ "homeManager" ]; + den.default.homeManager.home.stateVersion = "25.11"; + + den.hosts.x86_64-linux.desktop = { + users.zoty = {}; + home-manager.module = inputs.home-manager.nixosModules.home-manager; + }; + + den.hosts.x86_64-linux.notebook = { + users.zoty = {}; + home-manager.module = inputs.home-manager.nixosModules.home-manager; + }; + + den.aspects.notebook = { + includes = [ + den.provides.hostname + den.aspects.core + den.aspects.niri + den.aspects.notebook-specific + den.aspects.secrets + ]; + nixos = { + system.stateVersion = "25.11"; + }; + }; + + den.aspects.desktop = { + includes = [ + den.provides.hostname + den.aspects.core + den.aspects.niri + den.aspects.desktop-specific + den.aspects.dev + den.aspects.secrets + ]; + nixos = { + system.stateVersion = "25.11"; + }; + }; + + den.aspects.zoty = { + includes = [ + den.provides.define-user + den.provides.primary-user + ]; + nixos = { pkgs, ... }: { + users.users.zoty = { + isNormalUser = true; + extraGroups = [ "wheel" "video" "audio" "input" ]; + shell = pkgs.zsh; + hashedPasswordFile = "/run/secrets/user-password"; + }; + programs.zsh.enable = true; + home-manager = { + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "backup"; + }; + security.sudo.wheelNeedsPassword = false; + }; + homeManager = { + imports = [ + ./_home/default.nix + ./_home/niri.nix + ./_home/git.nix + ]; + }; + }; +} diff --git a/modules/desktop.nix b/modules/desktop.nix new file mode 100644 index 0000000..3c4e4f2 --- /dev/null +++ b/modules/desktop.nix @@ -0,0 +1,50 @@ +{ den, ... }: { + den.aspects.desktop-specific.nixos = { config, pkgs, ... }: { + imports = [ ./_hardware/desktop-hardware.nix ]; + + hardware = { + graphics = { + enable = true; + enable32Bit = true; + extraPackages = with pkgs; [ + nvidia-vaapi-driver + libva-vdpau-driver + libvdpau-va-gl + ]; + }; + + nvidia = { + # Required by Wayland + modesetting.enable = true; + open = false; + nvidiaSettings = true; + powerManagement.enable = false; + powerManagement.finegrained = false; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + + boot = { + initrd.kernelModules = [ "nvidia" "nvidia_modeset" "nvidia_uvm" "nvidia_drm" ]; + kernelParams = [ "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ]; + loader = { + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + }; + efi.canTouchEfiVariables = true; + }; + }; + + environment.sessionVariables = { + NIXOS_OZONE_WL = "1"; + GBM_BACKEND = "nvidia-drm"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + MOZ_ENABLE_WAYLAND = "1"; + MOZ_USE_XINPUT2 = "1"; + }; + }; +} diff --git a/modules/dev.nix b/modules/dev.nix new file mode 100644 index 0000000..40de75e --- /dev/null +++ b/modules/dev.nix @@ -0,0 +1,7 @@ +{ den, pkgs, ... }: { + den.aspects.dev.nixos = { pkgs, ... }: { + environment.systemPackages = with pkgs; [ + fzf + ]; + }; +} diff --git a/modules/niri.nix b/modules/niri.nix new file mode 100644 index 0000000..38d41cf --- /dev/null +++ b/modules/niri.nix @@ -0,0 +1,37 @@ +{ inputs, den, pkgs, ... }: { + den.aspects.niri.nixos = { pkgs, ... }: { + imports = [ inputs.niri-flake.nixosModules.niri ]; + + programs.niri = { + enable = true; + package = pkgs.niri; + }; + + environment.systemPackages = with pkgs; [ + waybar + fuzzel + swaylock + swayidle + grim + slurp + wl-clipboard + mako + xdg-desktop-portal-gnome + ]; + + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-gnome ]; + }; + + security.pam.services.swaylock = {}; + + services.greetd = { + enable = true; + settings.default_session = { + command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd niri-session"; + user = "greeter"; + }; + }; + }; +} diff --git a/modules/notebook.nix b/modules/notebook.nix new file mode 100644 index 0000000..da36f39 --- /dev/null +++ b/modules/notebook.nix @@ -0,0 +1,17 @@ +{ den, ... }: { + den.aspects.notebook-specific.nixos = { pkgs, ... }: { + imports = [ ./_hardware/notebook-hardware.nix ]; + + hardware.graphics.enable = true; + + services.thermald.enable = true; + powerManagement.enable = true; + services.tlp = { + enable = true; + settings = { + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/output.nix b/modules/output.nix new file mode 100644 index 0000000..629f1de --- /dev/null +++ b/modules/output.nix @@ -0,0 +1,6 @@ +{ lib, ... }: { + options.flake.nixosConfigurations = lib.mkOption { + default = {}; + type = lib.types.lazyAttrsOf lib.types.raw; + }; +} \ No newline at end of file diff --git a/modules/secrets.nix b/modules/secrets.nix new file mode 100644 index 0000000..7e22e49 --- /dev/null +++ b/modules/secrets.nix @@ -0,0 +1,21 @@ +{ inputs, den, ... }: { + den.aspects.secrets.nixos = { ... }: { + imports = [ inputs.sops-nix.nixosModules.sops ]; + + sops = { + defaultSopsFile = ../secrets/secrets.yaml; + age.keyFile = "/etc/sops/age/keys.txt"; + + secrets = { + "user-password" = { + neededForUsers = true; + }; + "ssh-private-key" = { + path = "/run/secrets/ssh-private-key"; + owner = "zoty"; + mode = "0400"; + }; + }; + }; + }; +} diff --git a/secrets/secrets.yaml b/secrets/secrets.yaml new file mode 100644 index 0000000..337fbab --- /dev/null +++ b/secrets/secrets.yaml @@ -0,0 +1,17 @@ +user-password: ENC[AES256_GCM,data:6ucfSYZ/RHpme2xC+KutsY5k,iv:2l6JQq/eSQsU2+GvE2CpADsJ27H0NZQpfa6KAtM1MAw=,tag:N4ewTNzq72pvazRzp6l53w==,type:str] +ssh-private-key: ENC[AES256_GCM,data:S8Nb1z+1V9PnbjosA1L8+xSg+8qYEvspr+Dw1i6MRdGK+WJ4n13LplG0xd2ShKg4EmbBu4D+b0bIhFIU6sHgUkHCgbtHr1xav9a9qDKykOPTT6ZPwg/kJMEPGDk7QoFkWoo5NT6jjdHmDJBKFlaZJKWrPeD7CVGKRwSHTZMuii7TYZ5rcHQs/xqZi8LGjHbLPGstMtpEsTsrAlFlud+262ZiVGQjv1Qgavsyi0W5ABn5GxwbQhUwoXtwb9VICjBusgzHxQNvYnGz6Kd9qomBwxD91DjspbLZQiJpTnK/moxjqnRi8TS4Rdv7dh7vSA0/G6LApaPRZaVeuAkhSDOP6+f7ZejOcVZeYvoFymneuNX+1uWRon4PbE+BE2XNk4VxGXCRBbCImbb29REDP5I8u7xQuC+pYekTUYcxDQOcFayXvjKo/+xIro4c0Dbp83lUuIMuZO2pJjIDJKMTfm0bmGicOO6X2aJZQ20H1lw1xL9OODReptN6Qx3Eexq/Qeq674TotEdEputPL6IhxZJeSA9DV9Qv2DpNJHNqXYsA+glpGpUOMI38cOkwbU02HYczk/RK87JgaZ0s15z69Bl8zC+QDdNAT0RyVF/8eb80zvY=,iv:z/47SCLFd38Adh/Qjn0BC3p/kEkDJfkp66wKfxacKDo=,tag:kQ6WOEHfd1dNm0BcgjB6vw==,type:str] +sops: + age: + - recipient: age12lvgjqzf0nczxp48r6rr0h7rpt8z8guqlsefe9f2ld2gl8tk5duqn4x2cj + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyMlVlQTdGVjBRRW10S2sz + WFQxTStTYzZGRzZwVzllQ0R5bkIyazBGYmlVCjcwZkdpY2pIN1E5aGYyZ2hXSkFB + aUs2NEgyRFQ0R2MwTUZDaUNhL0w4MUEKLS0tIEZmTWtjQXZLenlhMU5ib3JXZ0hr + VXpyNnhNSkRwS1lPMkMyWnF6UVdCYm8KGO1vPU/3KOYapeucE/O9+o/XRO3CpAmx + fJ5P6iInuksvTBXhDPuN7ZHhJQalr4DTkDUmLucQOdsqHyCwh7vGuA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2026-02-24T18:19:30Z" + mac: ENC[AES256_GCM,data:O2bOPK1gZdSf1IQNnUWlXEaALZ4m2sS9yEcUkQTfbXlwZjdh3X8ftMs5NEyUtdC9ChKTgAO7BPeg4EV60EVgiSyOCBFYWDznSCLnI2whr1qX6PaAirg/9zqIeIUOJlseruL2qDaN43C3kOoM+cxK+cftpNqDImlIlQDqdsb2djc=,iv:meEI7q+oSVFRxCVMibkIIrdRhCu9k8Ti74YrqD3qHwk=,tag:RK2z9b0bpSVSsOdvcNMpjg==,type:str] + unencrypted_suffix: _unencrypted + version: 3.11.0