diff --git a/dendritic-nixos-main/flake.lock b/dendritic-nixos-main/flake.lock new file mode 100644 index 000000000..6a6689d7b --- /dev/null +++ b/dendritic-nixos-main/flake.lock @@ -0,0 +1,490 @@ +{ + "nodes": { + "base16": { + "inputs": { + "fromYaml": "fromYaml" + }, + "locked": { + "lastModified": 1755819240, + "narHash": "sha256-qcMhnL7aGAuFuutH4rq9fvAhCpJWVHLcHVZLtPctPlo=", + "owner": "SenchoPens", + "repo": "base16.nix", + "rev": "75ed5e5e3fce37df22e49125181fa37899c3ccd6", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "base16.nix", + "type": "github" + } + }, + "base16-fish": { + "flake": false, + "locked": { + "lastModified": 1765809053, + "narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + }, + "original": { + "owner": "tomyun", + "repo": "base16-fish", + "rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", + "type": "github" + } + }, + "base16-helix": { + "flake": false, + "locked": { + "lastModified": 1760703920, + "narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", + "owner": "tinted-theming", + "repo": "base16-helix", + "rev": "d646af9b7d14bff08824538164af99d0c521b185", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-helix", + "type": "github" + } + }, + "base16-vim": { + "flake": false, + "locked": { + "lastModified": 1732806396, + "narHash": "sha256-e0bpPySdJf0F68Ndanwm+KWHgQiZ0s7liLhvJSWDNsA=", + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-vim", + "rev": "577fe8125d74ff456cf942c733a85d769afe58b7", + "type": "github" + } + }, + "firefox-gnome-theme": { + "flake": false, + "locked": { + "lastModified": 1764873433, + "narHash": "sha256-1XPewtGMi+9wN9Ispoluxunw/RwozuTRVuuQOmxzt+A=", + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "rev": "f7ffd917ac0d253dbd6a3bf3da06888f57c69f92", + "type": "github" + }, + "original": { + "owner": "rafaelmardojai", + "repo": "firefox-gnome-theme", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1772408722, + "narHash": "sha256-rHuJtdcOjK7rAHpHphUb1iCvgkU3GpfvicLMwwnfMT0=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "f20dc5d9b8027381c474144ecabc9034d6a839a3", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767609335, + "narHash": "sha256-feveD98mQpptwrAEggBQKJTYbvwwglSbOv53uCfH9PY=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "250481aafeb741edfe23d29195671c19b36b6dca", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "fromYaml": { + "flake": false, + "locked": { + "lastModified": 1731966426, + "narHash": "sha256-lq95WydhbUTWig/JpqiB7oViTcHFP8Lv41IGtayokA8=", + "owner": "SenchoPens", + "repo": "fromYaml", + "rev": "106af9e2f715e2d828df706c386a685698f3223b", + "type": "github" + }, + "original": { + "owner": "SenchoPens", + "repo": "fromYaml", + "type": "github" + } + }, + "gnome-shell": { + "flake": false, + "locked": { + "host": "gitlab.gnome.org", + "lastModified": 1767737596, + "narHash": "sha256-eFujfIUQDgWnSJBablOuG+32hCai192yRdrNHTv0a+s=", + "owner": "GNOME", + "repo": "gnome-shell", + "rev": "ef02db02bf0ff342734d525b5767814770d85b49", + "type": "gitlab" + }, + "original": { + "host": "gitlab.gnome.org", + "owner": "GNOME", + "ref": "gnome-49", + "repo": "gnome-shell", + "type": "gitlab" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1773332277, + "narHash": "sha256-1V+wRrZD9Sw12AQBUWk9CR+XhDZQ8q6yBE0S3Wjbd1M=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "4aeef1941f862fe3a70d1b8264b4e289358c2325", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "import-tree": { + "locked": { + "lastModified": 1772999353, + "narHash": "sha256-dPb0WxUhFaz6wuR3B6ysqFJpsu8txKDPZvS47AT2XLI=", + "owner": "vic", + "repo": "import-tree", + "rev": "545a4df146fce44d155573e47f5a777985acf912", + "type": "github" + }, + "original": { + "owner": "vic", + "repo": "import-tree", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1773122722, + "narHash": "sha256-FIqHByVqxCprNjor1NqF80F2QQoiiyqanNNefdlvOg4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "62dc67aa6a52b4364dd75994ec00b51fbf474e50", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1772328832, + "narHash": "sha256-e+/T/pmEkLP6BHhYjx6GmwP5ivonQQn0bJdH9YrRB+Q=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "c185c7a5e5dd8f9add5b2f8ebeff00888b070742", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1770107345, + "narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "4533d9293756b63904b7238acb84ac8fe4c8c2c4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "noctalia": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "noctalia-qs": [ + "noctalia-qs" + ] + }, + "locked": { + "lastModified": 1773350972, + "narHash": "sha256-zzvM67T3qiTfa5701H1vDfZ3QxTdvKK3eV83V8HQrLo=", + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "rev": "c15fb85c53a39a53e923a866801c48717c6803e7", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-shell", + "type": "github" + } + }, + "noctalia-qs": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1773277895, + "narHash": "sha256-pK01O5J9ogI4rVtDI+PVxckaXqpYZ4uthY0vgVWdyl8=", + "owner": "noctalia-dev", + "repo": "noctalia-qs", + "rev": "d5209a6b5fe8c6dff8d530e820c96f09830011e3", + "type": "github" + }, + "original": { + "owner": "noctalia-dev", + "repo": "noctalia-qs", + "type": "github" + } + }, + "nur": { + "inputs": { + "flake-parts": [ + "stylix", + "flake-parts" + ], + "nixpkgs": [ + "stylix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1767810917, + "narHash": "sha256-ZKqhk772+v/bujjhla9VABwcvz+hB2IaRyeLT6CFnT0=", + "owner": "nix-community", + "repo": "NUR", + "rev": "dead29c804adc928d3a69dfe7f9f12d0eec1f1a4", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "NUR", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-parts": "flake-parts", + "home-manager": "home-manager", + "import-tree": "import-tree", + "nixpkgs": "nixpkgs", + "noctalia": "noctalia", + "noctalia-qs": "noctalia-qs", + "stylix": "stylix" + } + }, + "stylix": { + "inputs": { + "base16": "base16", + "base16-fish": "base16-fish", + "base16-helix": "base16-helix", + "base16-vim": "base16-vim", + "firefox-gnome-theme": "firefox-gnome-theme", + "flake-parts": "flake-parts_2", + "gnome-shell": "gnome-shell", + "nixpkgs": [ + "nixpkgs" + ], + "nur": "nur", + "systems": "systems_2", + "tinted-foot": "tinted-foot", + "tinted-kitty": "tinted-kitty", + "tinted-schemes": "tinted-schemes", + "tinted-tmux": "tinted-tmux", + "tinted-zed": "tinted-zed" + }, + "locked": { + "lastModified": 1772296853, + "narHash": "sha256-pAtzPsgHRKw/2Kv8HgAjSJg450FDldHPWsP3AKG/Xj0=", + "owner": "nix-community", + "repo": "stylix", + "rev": "c4b8e80a1020e09a1f081ad0f98ce804a6e85acf", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "stylix", + "type": "github" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "tinted-foot": { + "flake": false, + "locked": { + "lastModified": 1726913040, + "narHash": "sha256-+eDZPkw7efMNUf3/Pv0EmsidqdwNJ1TaOum6k7lngDQ=", + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-foot", + "rev": "fd1b924b6c45c3e4465e8a849e67ea82933fcbe4", + "type": "github" + } + }, + "tinted-kitty": { + "flake": false, + "locked": { + "lastModified": 1735730497, + "narHash": "sha256-4KtB+FiUzIeK/4aHCKce3V9HwRvYaxX+F1edUrfgzb8=", + "owner": "tinted-theming", + "repo": "tinted-kitty", + "rev": "de6f888497f2c6b2279361bfc790f164bfd0f3fa", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-kitty", + "type": "github" + } + }, + "tinted-schemes": { + "flake": false, + "locked": { + "lastModified": 1767710407, + "narHash": "sha256-+W1EB79Jl0/gm4JqmO0Nuc5C7hRdp4vfsV/VdzI+des=", + "owner": "tinted-theming", + "repo": "schemes", + "rev": "2800e2b8ac90f678d7e4acebe4fa253f602e05b2", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "schemes", + "type": "github" + } + }, + "tinted-tmux": { + "flake": false, + "locked": { + "lastModified": 1767489635, + "narHash": "sha256-e6nnFnWXKBCJjCv4QG4bbcouJ6y3yeT70V9MofL32lU=", + "owner": "tinted-theming", + "repo": "tinted-tmux", + "rev": "3c32729ccae99be44fe8a125d20be06f8d7d8184", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "tinted-tmux", + "type": "github" + } + }, + "tinted-zed": { + "flake": false, + "locked": { + "lastModified": 1767488740, + "narHash": "sha256-wVOj0qyil8m+ouSsVZcNjl5ZR+1GdOOAooAatQXHbuU=", + "owner": "tinted-theming", + "repo": "base16-zed", + "rev": "11abb0b282ad3786a2aae088d3a01c60916f2e40", + "type": "github" + }, + "original": { + "owner": "tinted-theming", + "repo": "base16-zed", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": "nixpkgs_2" + }, + "locked": { + "lastModified": 1772660329, + "narHash": "sha256-IjU1FxYqm+VDe5qIOxoW+pISBlGvVApRjiw/Y/ttJzY=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "3710e0e1218041bbad640352a0440114b1e10428", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/dendritic-nixos-main/flake.nix b/dendritic-nixos-main/flake.nix new file mode 100644 index 000000000..5a2127fd5 --- /dev/null +++ b/dendritic-nixos-main/flake.nix @@ -0,0 +1,43 @@ +{ + description = "Dendritic NixOS Configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + flake-parts.url = "github:hercules-ci/flake-parts"; + import-tree.url = "github:vic/import-tree"; + + noctalia = { + url = "github:noctalia-dev/noctalia-shell"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.noctalia-qs.follows = "noctalia-qs"; + }; + + noctalia-qs = { + url = "github:noctalia-dev/noctalia-qs"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + stylix = { + url = "github:nix-community/stylix"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = inputs@{ flake-parts, import-tree, ... }: + flake-parts.lib.mkFlake { inherit inputs; } { + # flake-parts requires you to define systems + systems = [ "x86_64-linux" ]; + + imports = [ + (import-tree ./modules) # Auto-loads your features + ./hosts/nixovm/nixovm.nix # Explicitly loads your grouped host + ./hosts/omenixos/omenixos.nix + ]; + }; +} diff --git a/dendritic-nixos-main/hosts/nixovm/hardware-configuration.nix b/dendritic-nixos-main/hosts/nixovm/hardware-configuration.nix new file mode 100644 index 000000000..af9478caf --- /dev/null +++ b/dendritic-nixos-main/hosts/nixovm/hardware-configuration.nix @@ -0,0 +1,24 @@ +# 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 + "/profiles/qemu-guest.nix") + ]; + + boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/cc3cc0f4-b589-454b-9d73-2707f25952c0"; + fsType = "ext4"; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; +} diff --git a/dendritic-nixos-main/hosts/nixovm/nixovm.nix b/dendritic-nixos-main/hosts/nixovm/nixovm.nix new file mode 100644 index 000000000..d460c3969 --- /dev/null +++ b/dendritic-nixos-main/hosts/nixovm/nixovm.nix @@ -0,0 +1,48 @@ +# hosts/nixovm/nixovm.nix +{ inputs, config, ... }: + +{ + flake.nixosConfigurations."nixovm" = inputs.nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + + modules = + [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ] ++ + (builtins.attrValues config.flake.nixosModules) ++ + [ + ./hardware-configuration.nix + + ({ ... }: { + networking.hostName = "nixovm"; + system.stateVersion = "25.11"; + + swapDevices = [ { + device = "/var/lib/swapfile"; + size = 4096; # 4 GB + } ]; + + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/vda"; + boot.loader.grub.useOSProber = true; + + # Enable various user-defined modules + mySystem = { + # Turn on the core system + system.core.enable = true; + + # Enable Apps + apps.foot.enable = true; + apps.yazi.enable = true; + + # Define Environment + desktop.hyprland.enable = true; + desktop.noctalia.enable = true; + desktop.stylix.enable = true; + }; + }) + ]; + }; +} diff --git a/dendritic-nixos-main/hosts/omenixos/hardware-configuration.nix b/dendritic-nixos-main/hosts/omenixos/hardware-configuration.nix new file mode 100644 index 000000000..03a37518d --- /dev/null +++ b/dendritic-nixos-main/hosts/omenixos/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/ba16b576-efa5-41d6-a61b-30cec1f7d946"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/6503-E57A"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/f2bbfa41-0b04-4466-8af7-a68821be0d79"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/dendritic-nixos-main/hosts/omenixos/omenixos.nix b/dendritic-nixos-main/hosts/omenixos/omenixos.nix new file mode 100644 index 000000000..3f60fbe51 --- /dev/null +++ b/dendritic-nixos-main/hosts/omenixos/omenixos.nix @@ -0,0 +1,77 @@ +{ inputs, config, ... }: + +{ + flake.nixosConfigurations."omenixos" = inputs.nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + + modules = + [ + inputs.home-manager.nixosModules.home-manager + inputs.stylix.nixosModules.stylix + ] ++ + (builtins.attrValues config.flake.nixosModules) ++ + [ + ./hardware-configuration.nix + + ({ ... }: { + networking.hostName = "omenixos"; + system.stateVersion = "25.11"; + + boot = { + loader = { + grub = { + enable = true; + efiSupport = true; + device = "nodev"; + useOSProber = true; + }; + + efi.canTouchEfiVariables = true; + }; + + initrd.systemd.tpm2.enable = false; + kernelParams = [ + "systemd.mask=dev-tpm0.device" + "systemd.mask=dev-tpmrm0.device" + ]; + }; + + systemd.tpm2.enable = false; + + + # --- 2TB SHARED DRIVE MOUNT --- + fileSystems."/mnt/shared" = { + device = "/dev/disk/by-uuid/72925CFC925CC66F"; + fsType = "ntfs3"; + options = [ "rw" "uid=1000" "gid=100" "dmask=0022" "fmask=0133" ]; + }; + + # Enable various user-defined modules + mySystem = { + # Turn on the core system + system.core.enable = true; + + # Hardware-specific modules + hardware.nvidia.enable = true; + + # Enable Apps + apps = { + foot.enable = true; + yazi.enable = true; + neovim.enable = true; + fastfetch.enable = true; + git.enable = true; + }; + + # Define Environment + desktop = { + hyprland.enable = true; + noctalia.enable = true; + stylix.enable = true; + }; + }; + }) + ]; + }; +} diff --git a/dendritic-nixos-main/modules/apps/fastfetch.nix b/dendritic-nixos-main/modules/apps/fastfetch.nix new file mode 100644 index 000000000..dc43c0f3c --- /dev/null +++ b/dendritic-nixos-main/modules/apps/fastfetch.nix @@ -0,0 +1,99 @@ +{ ... }: + +{ + flake.nixosModules.fastfetch = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.apps.fastfetch; + in { + options.mySystem.apps.fastfetch.enable = lib.mkEnableOption "Personalized Fastfetch"; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ pkgs.fastfetch ]; + + home-manager.users.shonh.programs.fastfetch = { + enable = true; + + settings = { + "$schema" = "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json"; + "logo" = { + "type" = "small"; + "padding" = { + "top" = 1; + "left" = 1; + }; + }; + "display" = { + "separator" = " "; + }; + "modules" = [ + { + "key" = "╭───────────╮"; + "type" = "custom"; + } + { + "key" = "│ {#31} user {#keys}│"; + "type" = "title"; + "format" = "{user-name}"; + } + { + "key" = "│ {#32}󰇅 hname {#keys}│"; + "type" = "title"; + "format" = "{host-name}"; + } + { + "key" = "│ {#33}󰅐 uptime {#keys}│"; + "type" = "uptime"; + } + { + "key" = "│ {#34}{icon} distro {#keys}│"; + "type" = "os"; + } + { + "key" = "│ {#35} kernel {#keys}│"; + "type" = "kernel"; + } + { + "key" = "│ {#36}󰇄 desktop {#keys}│"; + "type" = "de"; + } + { + "key" = "│ {#31} term {#keys}│"; + "type" = "terminal"; + } + { + "key" = "│ {#32} shell {#keys}│"; + "type" = "shell"; + } + { + "key" = "│ {#33}󰍛 cpu {#keys}│"; + "type" = "cpu"; + "showPeCoreCount" = true; + } + { + "key" = "│ {#34}󰉉 disk {#keys}│"; + "type" = "disk"; + "folders" = "/"; + } + { + "key" = "│ {#35} memory {#keys}│"; + "type" = "memory"; + } + { + "key" = "├───────────┤"; + "type" = "custom"; + } + { + "key" = "│ {#39} colors {#keys}│"; + "type" = "colors"; + "symbol" = "circle"; + } + { + "key" = "╰───────────╯"; + "type" = "custom"; + } + ]; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/apps/foot.nix b/dendritic-nixos-main/modules/apps/foot.nix new file mode 100644 index 000000000..0bbe26c1b --- /dev/null +++ b/dendritic-nixos-main/modules/apps/foot.nix @@ -0,0 +1,54 @@ +{ ... }: + +{ + flake.nixosModules.foot = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.apps.foot; + + colors = config.lib.stylix.colors; + fonts = config.stylix.fonts; + in { + options.mySystem.apps.foot.enable = lib.mkEnableOption "Foot Terminal Emulator"; + + config = lib.mkIf cfg.enable { + environment.systemPackages = [ pkgs.foot ]; + + home-manager.users.shonh = { + stylix.targets.foot.enable = false; + + programs.foot = { + enable = true; + + settings = { + main = { + term = "xterm-256color"; + dpi-aware = lib.mkForce "yes"; + font = "${fonts.monospace.name}:size=${toString fonts.sizes.terminal}"; + }; + + colors-dark = { + background = colors.base00; + foreground = colors.base05; + regular0 = colors.base01; # black + regular1 = colors.base08; # red + regular2 = colors.base0B; # green + regular3 = colors.base0A; # yellow + regular4 = colors.base0D; # blue + regular5 = colors.base0E; # magenta + regular6 = colors.base0C; # cyan + regular7 = colors.base05; # white + bright0 = colors.base03; # bright black + bright1 = colors.base08; + bright2 = colors.base0B; + bright3 = colors.base0A; + bright4 = colors.base0D; + bright5 = colors.base0E; + bright6 = colors.base0C; + bright7 = colors.base07; + }; + }; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/apps/git.nix b/dendritic-nixos-main/modules/apps/git.nix new file mode 100644 index 000000000..20582afeb --- /dev/null +++ b/dendritic-nixos-main/modules/apps/git.nix @@ -0,0 +1,23 @@ +{ ... }: + +{ + flake.nixosModules.git = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.apps.git; + in { + options.mySystem.apps.git.enable = lib.mkEnableOption "Git"; + + config = lib.mkIf cfg.enable { + programs.git.enable = true; + + home-manager.users.shonh.programs.git = { + enable = true; + + settings.user = { + name = "Shonhh"; + email = "endinja.versitile@gmail.com"; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/apps/neovim.nix b/dendritic-nixos-main/modules/apps/neovim.nix new file mode 100644 index 000000000..2b05cf6fa --- /dev/null +++ b/dendritic-nixos-main/modules/apps/neovim.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + flake.nixosModules.neovim = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.apps.neovim; + in { + options.mySystem.apps.neovim.enable = lib.mkEnableOption "Neovim Editor"; + + config = lib.mkIf cfg.enable { + programs.neovim.enable = true; + + home-manager.users.shonh.programs.neovim = { + enable = true; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/apps/yazi.nix b/dendritic-nixos-main/modules/apps/yazi.nix new file mode 100644 index 000000000..52f98b728 --- /dev/null +++ b/dendritic-nixos-main/modules/apps/yazi.nix @@ -0,0 +1,48 @@ +# modules/apps/yazi.nix +{ ... }: + +{ + flake.nixosModules.yazi = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.apps.yazi; + in { + options.mySystem.apps.yazi.enable = lib.mkEnableOption "Yazi File Manager"; + + config = lib.mkIf cfg.enable { + + home-manager.users.shonh = { + + home.packages = [ pkgs.ripdrag ]; + + programs.yazi = { + enable = true; + enableBashIntegration = true; + + settings = { + opener = { + edit = [ + { run = "nvim \"$@\""; block = true; desc = "Neovim"; } + ]; + }; + open = { + prepend_rules = [ + { mime = "text/*"; use = "edit"; } + ]; + }; + }; + + keymap = { + mgr.prepend_keymap = [ + { + on = [ "" ]; + run = "shell 'ripdrag \"$@\" -x 2>/dev/null' --confirm --orphan"; + desc = "Drag and drop selected files"; + } + ]; + }; + }; + + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/desktop/hyprland.nix b/dendritic-nixos-main/modules/desktop/hyprland.nix new file mode 100644 index 000000000..e12e999e1 --- /dev/null +++ b/dendritic-nixos-main/modules/desktop/hyprland.nix @@ -0,0 +1,242 @@ +{ ... }: + +{ + flake.nixosModules.hyprland = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.desktop.hyprland; + in { + options.mySystem.desktop.hyprland.enable = lib.mkEnableOption "Hyprland Wayland Compositor"; + + config = lib.mkIf cfg.enable { + # --- System Level Setup --- + programs.hyprland = { + enable = true; + withUWSM = true; + }; + + # --- User Level Setup + home-manager.users.shonh = { + wayland.windowManager.hyprland = { + enable = true; + systemd.enable = false; + + settings = { + "$terminal" = "foot"; + "$browser" = "vivaldi"; + "$file-manager" = "foot yazi"; + "$mod" = "SUPER"; + + "exec-once" = [ + "uwsm app -- noctalia-shell" + ]; + + monitor = [ + "Virtual-1,1280x720,auto,1" + ",highres@highrr,auto,1" # Default + ]; + + bind = [ + # Applications + "$mod, T, exec, uwsm app -- $terminal" + "$mod, F, exec, uwsm app -- $browser" + "$mod, E, exec, uwsm app -- $file-manager" + + # Desktop Keybinds + "$mod, Delete, exit," + "$mod+Alt, G, exec, ~/nixos/scripts/gamemode.sh" + "CTRL+ALT, W, exec, noctalia-shell kill || uwsm app -- noctalia-shell" + "$mod, A, exec, noctalia-shell ipc call launcher toggle" + "$mod, Q, killactive," + "$mod, W, togglefloating," + "$mod+SHIFT, F, fullscreen" + "$mod, J, togglesplit," # dwindle + + # Move focus with mod + arrow keys + "$mod, left, movefocus, l" + "$mod, right, movefocus, r" + "$mod, up, movefocus, u" + "$mod, down, movefocus, d" + + # Handling Workspaces + "$mod, 0, workspace, 10" + "$mod SHIFT, 0, movetoworkspace, 10" + "$mod, code:36, togglespecialworkspace, terminal" + + # Scroll through existing workspaces with $mod + scroll + "$mod, mouse_down, workspace, e+1" + "$mod, mouse_up, workspace, e-1" + ] + ++ ( + # Binds $mod + [shift +] {1..9} to [move to] workspace {1..9} + builtins.concatLists ( + builtins.genList ( + i: + let + ws = i + 1; + in + [ + "$mod, code:1${toString i}, workspace, ${toString ws}" + "$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + ] + ) 9 + ) + ); + + bindm = [ + "$mod, Z, movewindow" + "$mod, X, resizewindow" + + "$mod, mouse:272, movewindow" + "$mod, mouse:273, resizewindow" + ]; + + # Laptop multimedia keys for volume and LCD brightness + bindel = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86MonBrightnessUp, exec, brightnessctl s 5%+" + ",XF86MonBrightnessDown, exec, brightnessctl s 5%-" + ]; + + bindl = [ + ", XF86AudioNext, exec, playerctl next" + ", XF86AudioPause, exec, playerctl play-pause" + ", XF86AudioPlay, exec, playerctl play-pause" + ", XF86AudioPrev, exec, playerctl previous" + ]; + + # General + general = { + gaps_in = 3; + gaps_out = 8; + + border_size = 2; + + resize_on_border = true; + + allow_tearing = false; + layout = "dwindle"; + }; + + # Decoration + decoration = { + rounding = 7; + active_opacity = 1.0; + inactive_opacity = 1.0; + + blur = { + enabled = true; + size = 5; + passes = 3; + new_optimizations = "on"; + ignore_opacity = "on"; + xray = false; + }; + }; + + windowrule = [ + # Opacity Rules + "match:class ^($terminal)$, opacity 0.80 0.80" + ]; + + workspace = [ + "10, border:false, rounding:false" + "special:terminal, on-created-empty:[float; size 960 540] $terminal, persistent:false" + ]; + + gesture = [ + "3, horizontal, workspace" + ]; + + # Layout configuration + dwindle = { + pseudotile = true; + preserve_split = true; + }; + + master = { + new_status = "master"; + }; + + # Miscellaneous + misc = { + force_default_wallpaper = 0; + disable_hyprland_logo = true; + }; + + # Input + input = { + kb_layout = "us"; + + follow_mouse = 1; + sensitivity = 0.30; + scroll_factor = 0.5; + accel_profile = "flat"; + emulate_discrete_scroll = 0; + + touchpad = { + disable_while_typing = false; + natural_scroll = true; + scroll_factor = 0.15; + }; + }; + + cursor = { + no_hardware_cursors = 1; + }; + + device = [ + { + # ... add later + } + ]; + + # Animations + animations = { + enabled = true; + + bezier = [ + "wind, 0.05, 0.85, 0.03, 0.97" + "winIn, 0.07, 0.88, 0.04, 0.99" + "winOut, 0.20, -0.15, 0, 1" + "liner, 1, 1, 1, 1" + "md3_standard, 0.12, 0, 0, 1" + "md3_decel, 0.05, 0.80, 0.10, 0.97" + "md3_accel, 0.20, 0, 0.80, 0.08" + "overshot, 0.05, 0.85, 0.07, 1.04" + "crazyshot, 0.1, 1.22, 0.68, 0.98" + "hyprnostretch, 0.05, 0.82, 0, 1" + "menu_decel, 0.05, 0.82, 0, 1" + "menu_accel, 0.20, 0, 0.82, 0.10" + "easeInOutCirc, 0.78, 0, 0.15, 1" + "easeOutCirc, 0, 0.48, 0.38, 1" + "easeOutExpo, 0.10, 0.94, 0.23, 0.98" + "softAcDecel, 0.20, 0.20, 0.15, 1" + "md2, 0.30, 0, 0.15, 1" + + "OutBack, 0.28, 1.40, 0.58, 1" + ]; + + animation = [ + "border, 1, 1.6, liner" + "borderangle, 1, 82, liner, once" + "windowsIn, 1, 3.2, winIn, slide" + "windowsOut, 1, 2.8, easeOutCirc" + "windowsMove, 1, 3.0, wind, slide" + "fade, 1, 1.8, md3_decel" + "layersIn, 1, 1.8, menu_decel, slide" + "layersOut, 1, 1.5, menu_accel" + "fadeLayersIn, 1, 1.6, menu_decel" + "fadeLayersOut, 1, 1.8, menu_accel" + "workspaces, 1, 4.0, menu_decel, slide" + "specialWorkspace, 1, 2.3, md3_decel, slidefadevert 15%" + ]; + }; + }; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/desktop/noctalia.nix b/dendritic-nixos-main/modules/desktop/noctalia.nix new file mode 100644 index 000000000..7f324350f --- /dev/null +++ b/dendritic-nixos-main/modules/desktop/noctalia.nix @@ -0,0 +1,26 @@ +# modules/desktop/noctalia.nix +{ ... }: + +{ + flake.nixosModules.noctalia = { config, lib, pkgs, inputs, ... }: + let + cfg = config.mySystem.desktop.noctalia; + in { + options.mySystem.desktop.noctalia.enable = lib.mkEnableOption "Noctalia Shell"; + + config = lib.mkIf cfg.enable { + + # Noctalia needs these background services to read battery and hardware data + mySystem.system.power-management.enable = true; + mySystem.hardware.bluetooth.enable = true; + + home-manager.users.shonh = { + imports = [ inputs.noctalia.homeModules.default ]; + + programs.noctalia-shell = { + enable = true; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/desktop/stylix.nix b/dendritic-nixos-main/modules/desktop/stylix.nix new file mode 100644 index 000000000..dd71250e5 --- /dev/null +++ b/dendritic-nixos-main/modules/desktop/stylix.nix @@ -0,0 +1,52 @@ +{ ... }: + +{ + flake.nixosModules.stylix = { inputs, config, lib, pkgs, ... }: + let + cfg = config.mySystem.desktop.stylix; + in { + options.mySystem.desktop.stylix.enable = lib.mkEnableOption "Stylix System Theming"; + + config = lib.mkIf cfg.enable { + stylix = { + enable = true; + + image = inputs.self + "/wallpapers/wallpaper1.jpg"; + polarity = "dark"; + + cursor = { + package = pkgs.phinger-cursors; + name = "phinger-cursors-light"; + size = 24; + }; + + fonts = { + monospace = { + package = pkgs.nerd-fonts.fira-code; + name = "Fira Code Nerd Font"; + }; + + sansSerif = { + package = pkgs.lato; + name = "Lato"; + }; + }; + + icons = { + enable = true; + package = pkgs.papirus-icon-theme; + + dark = "Papirus-Dark"; + light = "Papirus-Light"; + }; + }; + + home-manager.users.shonh.home.sessionVariables = { + XCURSOR_THEME = config.stylix.cursor.name; + XCURSOR_SIZE = toString config.stylix.cursor.size; + HYPRCURSOR_THEME = config.stylix.cursor.name; + HYPRCURSOR_SIZE = toString config.stylix.cursor.size; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/hardware/bluetooth.nix b/dendritic-nixos-main/modules/hardware/bluetooth.nix new file mode 100644 index 000000000..62db5d73b --- /dev/null +++ b/dendritic-nixos-main/modules/hardware/bluetooth.nix @@ -0,0 +1,18 @@ +{ ... }: +{ + flake.nixosModules.bluetooth = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.hardware.bluetooth; + in { + options.mySystem.hardware.bluetooth.enable = lib.mkEnableOption "Bluetooth Support"; + + config = lib.mkIf cfg.enable { + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + environment.systemPackages = [ + pkgs.bluetui + ]; + }; + }; +} diff --git a/dendritic-nixos-main/modules/hardware/nvidia.nix b/dendritic-nixos-main/modules/hardware/nvidia.nix new file mode 100644 index 000000000..b2a636c80 --- /dev/null +++ b/dendritic-nixos-main/modules/hardware/nvidia.nix @@ -0,0 +1,50 @@ +{ ... }: + +{ + flake.nixosModules.nvidia = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.hardware.nvidia; + in { + options.mySystem.hardware.nvidia.enable = lib.mkEnableOption "NVIDIA Drivers and Wayland Fixes"; + + config = lib.mkIf cfg.enable { + + # 1. Enable OpenGL / Graphics Support + hardware.graphics = { + enable = true; + enable32Bit = true; # Crucial for 32-bit games (like older Terraria versions/mods) + + extraPackages = with pkgs; [ + nvidia-vaapi-driver + ]; + }; + + # 2. Tell X11/Wayland to use the Nvidia driver + services.xserver.videoDrivers = [ "nvidia" ]; + + # 3. Configure the Nvidia package + hardware.nvidia = { + modesetting.enable = true; + + powerManagement.enable = false; + powerManagement.finegrained = false; + + open = false; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + + # 4. Inject Wayland variables into UWSM to force NVIDIA hardware acceleration + home-manager.users.shonh = { + home.sessionVariables = { + LIBVA_DRIVER_NAME = "nvidia"; + XDG_SESSION_TYPE = "wayland"; + __GLX_VENDOR_LIBRARY_NAME = "nvidia"; + NVD_BACKEND = "direct"; # Fixes graphical glitches in Electron/Chromium apps + + NIXOS_OZONE_WL = "1"; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/system/core.nix b/dendritic-nixos-main/modules/system/core.nix new file mode 100644 index 000000000..91adc4f17 --- /dev/null +++ b/dendritic-nixos-main/modules/system/core.nix @@ -0,0 +1,92 @@ +{ ... }: + +{ + flake.nixosModules.core = { config, lib, pkgs, ... }: +let + cfg = config.mySystem.system.core; +in { + options.mySystem.system.core.enable = lib.mkEnableOption "Core System Settings"; + + config = lib.mkIf cfg.enable { + + # --- Flakes & Nix Settings --- + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + download-buffer-size = 536870912; # 512 MB + cores = 2; + max-jobs = 1; + }; + + nixpkgs.config.allowUnfree = true; + + # --- Kernel --- + boot.kernelPackages = pkgs.linuxPackages_latest; + + # --- Networking --- + networking.networkmanager.enable = true; + + # --- Time & Locale --- + time.timeZone = "America/Chicago"; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "en_US.UTF-8"; + LC_IDENTIFICATION = "en_US.UTF-8"; + LC_MEASUREMENT = "en_US.UTF-8"; + LC_MONETARY = "en_US.UTF-8"; + LC_NAME = "en_US.UTF-8"; + LC_NUMERIC = "en_US.UTF-8"; + LC_PAPER = "en_US.UTF-8"; + LC_TELEPHONE = "en_US.UTF-8"; + LC_TIME = "en_US.UTF-8"; + }; + + # --- X11 & Login Manager --- + services.xserver.enable = true; + mySystem.system.login-manager.enable = true; + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # --- Services (Printing & Audio) --- + services.printing.enable = true; + services.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; + + # --- User Account --- + users.users.shonh = { + isNormalUser = true; + description = "Shonh"; + extraGroups = [ "networkmanager" "wheel" ]; + }; + + # --- Home Manager Base --- + home-manager = { + backupFileExtension = "backup"; + + users.shonh = { + home.sessionVariables = { + TERMINAL = "foot"; + EDITOR = "nvim"; + BROWSER = "vivaldi"; + }; + + home.stateVersion = "25.11"; + }; + }; + + # --- Base Applications --- + environment.systemPackages = with pkgs; [ + tree + sl + vivaldi + ]; + }; + }; +} diff --git a/dendritic-nixos-main/modules/system/login-manager.nix b/dendritic-nixos-main/modules/system/login-manager.nix new file mode 100644 index 000000000..4d0e78570 --- /dev/null +++ b/dendritic-nixos-main/modules/system/login-manager.nix @@ -0,0 +1,22 @@ +{ ... }: + +{ + flake.nixosModules.login-manager = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.system.login-manager; + in { + options.mySystem.system.login-manager.enable = lib.mkEnableOption "TuiGreetd Login Manager"; + + config = lib.mkIf cfg.enable { + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.tuigreet}/bin/tuigreet -t --user-menu -r --remember-session --asterisks --sessions ${config.services.displayManager.sessionData.desktops}/share/wayland-sessions"; + user = "greeter"; + }; + }; + }; + }; + }; +} diff --git a/dendritic-nixos-main/modules/system/power-management.nix b/dendritic-nixos-main/modules/system/power-management.nix new file mode 100644 index 000000000..3309b1dfa --- /dev/null +++ b/dendritic-nixos-main/modules/system/power-management.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + # Push the configuration into the Flake's module pool + flake.nixosModules.bluetooth = { config, lib, pkgs, ... }: + let + cfg = config.mySystem.system.power-management; + in { + # 1. Define the custom toggle + options.mySystem.system.power-management.enable = lib.mkEnableOption "Power Management/Profiles"; + + # 2. Apply the configuration + config = lib.mkIf cfg.enable { + services.upower.enable = true; + services.power-profiles-daemon.enable = true; + }; + }; +} diff --git a/dendritic-nixos-main/scripts/gamemode.sh b/dendritic-nixos-main/scripts/gamemode.sh new file mode 100755 index 000000000..0e5b8292b --- /dev/null +++ b/dendritic-nixos-main/scripts/gamemode.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env sh +HYPRGAMEMODE=$(hyprctl getoption animations:enabled | awk 'NR==1{print $2}') +if [ "$HYPRGAMEMODE" = 1 ] ; then + hyprctl --batch "\ + keyword animations:enabled 0;\ + keyword decoration:shadow:enabled 0;\ + keyword decoration:blur:enabled 0;\ + keyword general:gaps_in 0;\ + keyword general:gaps_out 0;\ + keyword general:border_size 1;\ + keyword decoration:rounding 0" + noctalia-shell ipc call powerProfile enableNoctaliaPerformance + exit +fi +hyprctl reload +noctalia-shell ipc call powerProfile disableNoctaliaPerformance diff --git a/dendritic-nixos-main/wallpapers/wallpaper.jpg b/dendritic-nixos-main/wallpapers/wallpaper.jpg new file mode 100644 index 000000000..7eb3c32b0 Binary files /dev/null and b/dendritic-nixos-main/wallpapers/wallpaper.jpg differ diff --git a/dendritic-nixos-main/wallpapers/wallpaper.webp b/dendritic-nixos-main/wallpapers/wallpaper.webp new file mode 100644 index 000000000..8a637210a Binary files /dev/null and b/dendritic-nixos-main/wallpapers/wallpaper.webp differ diff --git a/dendritic-nixos-main/wallpapers/wallpaper1.jpg b/dendritic-nixos-main/wallpapers/wallpaper1.jpg new file mode 100644 index 000000000..88807c2e6 Binary files /dev/null and b/dendritic-nixos-main/wallpapers/wallpaper1.jpg differ diff --git a/dendritic-nixos-main/wallpapers/wallpaper1.png b/dendritic-nixos-main/wallpapers/wallpaper1.png new file mode 100644 index 000000000..0b39c31b5 Binary files /dev/null and b/dendritic-nixos-main/wallpapers/wallpaper1.png differ diff --git a/dendritic-nixos-main/wallpapers/wallpaper2.png b/dendritic-nixos-main/wallpapers/wallpaper2.png new file mode 100644 index 000000000..a1e35cf0b Binary files /dev/null and b/dendritic-nixos-main/wallpapers/wallpaper2.png differ