summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorscouckel <james.krinsky@gmail.com>2025-11-26 03:08:28 -0600
committerscouckel <james.krinsky@gmail.com>2025-11-26 03:08:28 -0600
commit94f99ad3d4bb375d0d1296e4b2755057bd812fd9 (patch)
tree84e784de30cdb8d818e388fd49db67246e5340d6
rebase
-rw-r--r--README.md25
-rw-r--r--flake.lock474
-rw-r--r--flake.nix108
-rw-r--r--hosts/tiamat/configuration.nix151
-rw-r--r--hosts/tiamat/hardware-configuration.nix40
-rw-r--r--hosts/tiamat/home.nix92
-rw-r--r--hosts/vecna/configuration.nix132
-rw-r--r--hosts/vecna/hardware-configuration.nix42
-rw-r--r--hosts/vecna/home.nix89
-rw-r--r--hosts/xanathar/configuration.nix143
-rw-r--r--hosts/xanathar/hardware-configuration.nix40
-rw-r--r--hosts/xanathar/home.nix86
-rw-r--r--modules/home-manager/default.nix71
-rw-r--r--modules/home-manager/fastfetch-logo.txt17
-rw-r--r--modules/home-manager/fastfetch.nix61
-rw-r--r--modules/home-manager/fish.nix18
-rw-r--r--modules/home-manager/gaming.nix37
-rw-r--r--modules/home-manager/git.nix11
-rw-r--r--modules/home-manager/hypr/autostart.nix14
-rw-r--r--modules/home-manager/hypr/binds.nix93
-rw-r--r--modules/home-manager/hypr/camdenyards.jpgbin0 -> 2850041 bytes
-rw-r--r--modules/home-manager/hypr/decoration.nix28
-rw-r--r--modules/home-manager/hypr/default.nix140
-rw-r--r--modules/home-manager/hypr/hypridle.nix26
-rw-r--r--modules/home-manager/hypr/hyprlock.nix46
-rw-r--r--modules/home-manager/hypr/hyprpaper.nix22
-rw-r--r--modules/home-manager/hypr/input.nix38
-rw-r--r--modules/home-manager/hypr/pyprland.toml12
-rw-r--r--modules/home-manager/hypr/rofi-hyprland.nix23
-rw-r--r--modules/home-manager/hypr/swaync.nix13
-rw-r--r--modules/home-manager/hypr/waybar-hyprland.nix44
-rw-r--r--modules/home-manager/kitty.nix27
-rw-r--r--modules/home-manager/lazygit.nix13
-rw-r--r--modules/home-manager/nvf.nix115
-rw-r--r--modules/home-manager/obs.nix12
-rw-r--r--modules/home-manager/rbw.nix19
-rw-r--r--modules/home-manager/spicetify.nix27
-rw-r--r--modules/home-manager/spotify-player.nix7
-rw-r--r--modules/home-manager/vscodium.nix47
-rw-r--r--modules/home-manager/yazi.nix42
-rw-r--r--modules/home-manager/zen-browser.nix41
-rw-r--r--modules/nixos/bluetooth.nix9
-rw-r--r--modules/nixos/default.nix66
-rw-r--r--modules/nixos/flatpak.nix13
-rw-r--r--modules/nixos/gaming.nix19
-rw-r--r--modules/nixos/greetd.nix18
-rw-r--r--modules/nixos/nix-ld.nix32
-rw-r--r--modules/nixos/nordvpn.nix7
-rw-r--r--modules/nixos/pipewire.nix10
-rw-r--r--modules/nixos/steam.nix19
-rw-r--r--modules/nixos/thunar.nix17
-rw-r--r--modules/nixos/xdg-portal.nix19
52 files changed, 2715 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..15fc025
--- /dev/null
+++ b/README.md
@@ -0,0 +1,25 @@
+nixos (and home-manager) configuration for a practically-minded young cs major
+
+moved to nixos after using arch for the vast majority of my linux career largely as a summer project in 2025
+
+i encourage you not to use this configuration as is, even if i do: not very pretty, exceedingly simple, not very elegant, written stupidly
+
+hosts:
+
+tiamat is a framework 13 laptop, named because the io modules are kind of like the heads (also the name is awesome)
+
+ - 7040 mainboard
+ - 32 gb ram
+
+vecna is a large, forboding desktop in a corsair 4000D airflow. looks wholly evil. appropriately named after a most evil lich
+
+- ryzen 7800x3d
+- 32 gb ram
+- rog strix motherboard (which i kinda hate)
+- xfx speedster 7900xtx
+
+xanathar ii (my old laptop, and maybe future server) is an hp pavilion from a few years ago, named so due to its omnipresence (at least in my backpack)
+
+- whatever is in one of those things
+
+hope you enjoy reading my config files \ No newline at end of file
diff --git a/flake.lock b/flake.lock
new file mode 100644
index 0000000..529eef6
--- /dev/null
+++ b/flake.lock
@@ -0,0 +1,474 @@
+{
+ "nodes": {
+ "auto-cpufreq": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1763546214,
+ "narHash": "sha256-vc9seqvw2ElF8jPetsCoCQ5lo9P3fmgiTle3HlOMezk=",
+ "owner": "AdnanHodzic",
+ "repo": "auto-cpufreq",
+ "rev": "76ccb66f8e4875671fd746fb6b50931454ab8cd8",
+ "type": "github"
+ },
+ "original": {
+ "owner": "AdnanHodzic",
+ "repo": "auto-cpufreq",
+ "type": "github"
+ }
+ },
+ "chaotic": {
+ "inputs": {
+ "flake-schemas": "flake-schemas",
+ "home-manager": "home-manager",
+ "jovian": "jovian",
+ "nixpkgs": "nixpkgs",
+ "rust-overlay": "rust-overlay"
+ },
+ "locked": {
+ "lastModified": 1764031508,
+ "narHash": "sha256-4Yh26aEgO1O0kV6qhW+Uw/CzAQTSbGkBGuiw6OkI/Ws=",
+ "owner": "chaotic-cx",
+ "repo": "nyx",
+ "rev": "2d5f96ca62d47d93d67fa7267e92aa2f660a3a36",
+ "type": "github"
+ },
+ "original": {
+ "owner": "chaotic-cx",
+ "ref": "nyxpkgs-unstable",
+ "repo": "nyx",
+ "type": "github"
+ }
+ },
+ "flake-compat": {
+ "flake": false,
+ "locked": {
+ "lastModified": 1751685974,
+ "narHash": "sha256-NKw96t+BgHIYzHUjkTK95FqYRVKB8DHpVhefWSz/kTw=",
+ "ref": "refs/heads/main",
+ "rev": "549f2762aebeff29a2e5ece7a7dc0f955281a1d1",
+ "revCount": 92,
+ "type": "git",
+ "url": "https://git.lix.systems/lix-project/flake-compat.git"
+ },
+ "original": {
+ "type": "git",
+ "url": "https://git.lix.systems/lix-project/flake-compat.git"
+ }
+ },
+ "flake-parts": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "nur",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1733312601,
+ "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-parts_2": {
+ "inputs": {
+ "nixpkgs-lib": [
+ "nvf",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1760948891,
+ "narHash": "sha256-TmWcdiUUaWk8J4lpjzu4gCGxWY6/Ok7mOK4fIFfBuU4=",
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "rev": "864599284fc7c0ba6357ed89ed5e2cd5040f0c04",
+ "type": "github"
+ },
+ "original": {
+ "owner": "hercules-ci",
+ "repo": "flake-parts",
+ "type": "github"
+ }
+ },
+ "flake-schemas": {
+ "locked": {
+ "lastModified": 1721999734,
+ "narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
+ "rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
+ "revCount": 75,
+ "type": "tarball",
+ "url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
+ },
+ "original": {
+ "type": "tarball",
+ "url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
+ }
+ },
+ "home-manager": {
+ "inputs": {
+ "nixpkgs": [
+ "chaotic",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1763869804,
+ "narHash": "sha256-2lw+MnkrnygEyUl+3qZjnlCCJF/kJ57GUtYkAQPfLDA=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "04c27d743d069cad58f9707ee8e165c471b1c7cd",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "home-manager_2": {
+ "inputs": {
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1764075860,
+ "narHash": "sha256-KYEIHCBBw+/lwKsJNRNoUxBB4ZY2LK0G0T8f+0i65q0=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "295d90e22d557ccc3049dc92460b82f372cd3892",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "home-manager_3": {
+ "inputs": {
+ "nixpkgs": [
+ "zen-browser",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1762964643,
+ "narHash": "sha256-RYHN8O/Aja59XDji6WSJZPkJpYVUfpSkyH+PEupBJqM=",
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "rev": "827f2a23373a774a8805f84ca5344654c31f354b",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "home-manager",
+ "type": "github"
+ }
+ },
+ "jovian": {
+ "inputs": {
+ "nix-github-actions": "nix-github-actions",
+ "nixpkgs": [
+ "chaotic",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1763714684,
+ "narHash": "sha256-ZNJPAaeSYQTDgvwwE8XHhCz4HiHqYoUyoXdoBE2nxug=",
+ "owner": "Jovian-Experiments",
+ "repo": "Jovian-NixOS",
+ "rev": "6178d787ee61b8586fdb0ccb8644fbfd5317d0f3",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Jovian-Experiments",
+ "repo": "Jovian-NixOS",
+ "type": "github"
+ }
+ },
+ "mnw": {
+ "locked": {
+ "lastModified": 1758834834,
+ "narHash": "sha256-Y7IvY4F8vajZyp3WGf+KaiIVwondEkMFkt92Cr9NZmg=",
+ "owner": "Gerg-L",
+ "repo": "mnw",
+ "rev": "cfbc7d1cc832e318d0863a5fc91d940a96034001",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Gerg-L",
+ "repo": "mnw",
+ "type": "github"
+ }
+ },
+ "nix-flatpak": {
+ "locked": {
+ "lastModified": 1739444422,
+ "narHash": "sha256-iAVVHi7X3kWORftY+LVbRiStRnQEob2TULWyjMS6dWg=",
+ "owner": "gmodena",
+ "repo": "nix-flatpak",
+ "rev": "5e54c3ca05a7c7d968ae1ddeabe01d2a9bc1e177",
+ "type": "github"
+ },
+ "original": {
+ "owner": "gmodena",
+ "ref": "latest",
+ "repo": "nix-flatpak",
+ "type": "github"
+ }
+ },
+ "nix-github-actions": {
+ "inputs": {
+ "nixpkgs": [
+ "chaotic",
+ "jovian",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1729697500,
+ "narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
+ "owner": "zhaofengli",
+ "repo": "nix-github-actions",
+ "rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
+ "type": "github"
+ },
+ "original": {
+ "owner": "zhaofengli",
+ "ref": "matrix-name",
+ "repo": "nix-github-actions",
+ "type": "github"
+ }
+ },
+ "nixos-hardware": {
+ "locked": {
+ "lastModified": 1764080039,
+ "narHash": "sha256-b1MtLQsQc4Ji1u08f+C6g5XrmLPkJQ1fhNkCt+0AERQ=",
+ "owner": "NixOS",
+ "repo": "nixos-hardware",
+ "rev": "da17006633ca9cda369be82893ae36824a2ddf1a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "master",
+ "repo": "nixos-hardware",
+ "type": "github"
+ }
+ },
+ "nixpkgs": {
+ "locked": {
+ "lastModified": 1763835633,
+ "narHash": "sha256-HzxeGVID5MChuCPESuC0dlQL1/scDKu+MmzoVBJxulM=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "050e09e091117c3d7328c7b2b7b577492c43c134",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_2": {
+ "locked": {
+ "lastModified": 1763966396,
+ "narHash": "sha256-6eeL1YPcY1MV3DDStIDIdy/zZCDKgHdkCmsrLJFiZf0=",
+ "owner": "nixos",
+ "repo": "nixpkgs",
+ "rev": "5ae3b07d8d6527c42f17c876e404993199144b6a",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nixos",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nixpkgs_3": {
+ "locked": {
+ "lastModified": 1762977756,
+ "narHash": "sha256-4PqRErxfe+2toFJFgcRKZ0UI9NSIOJa+7RXVtBhy4KE=",
+ "owner": "NixOS",
+ "repo": "nixpkgs",
+ "rev": "c5ae371f1a6a7fd27823bc500d9390b38c05fa55",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NixOS",
+ "ref": "nixos-unstable",
+ "repo": "nixpkgs",
+ "type": "github"
+ }
+ },
+ "nur": {
+ "inputs": {
+ "flake-parts": "flake-parts",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1764095925,
+ "narHash": "sha256-zc67UXOqujgU2LM2fhjvVRUupvB3xHEq+By/DrG+K+o=",
+ "owner": "nix-community",
+ "repo": "NUR",
+ "rev": "9a7e79e6a8535a84050b72fd453bfa50be9b2c15",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-community",
+ "repo": "NUR",
+ "type": "github"
+ }
+ },
+ "nvf": {
+ "inputs": {
+ "flake-compat": "flake-compat",
+ "flake-parts": "flake-parts_2",
+ "mnw": "mnw",
+ "nixpkgs": [
+ "nixpkgs"
+ ],
+ "systems": "systems"
+ },
+ "locked": {
+ "lastModified": 1763778960,
+ "narHash": "sha256-8VAzjVrEeG1pqA7n3rZgm0pZAmAVjOFwuWq3OVe8sos=",
+ "owner": "NotAShelf",
+ "repo": "nvf",
+ "rev": "f8dc16a29f56d60ef7a8f2cf79a80b1ae441d452",
+ "type": "github"
+ },
+ "original": {
+ "owner": "NotAShelf",
+ "ref": "v0.8",
+ "repo": "nvf",
+ "type": "github"
+ }
+ },
+ "root": {
+ "inputs": {
+ "auto-cpufreq": "auto-cpufreq",
+ "chaotic": "chaotic",
+ "home-manager": "home-manager_2",
+ "nix-flatpak": "nix-flatpak",
+ "nixos-hardware": "nixos-hardware",
+ "nixpkgs": "nixpkgs_2",
+ "nur": "nur",
+ "nvf": "nvf",
+ "spicetify": "spicetify",
+ "zen-browser": "zen-browser"
+ }
+ },
+ "rust-overlay": {
+ "inputs": {
+ "nixpkgs": [
+ "chaotic",
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1763865987,
+ "narHash": "sha256-DJpzM8Jz3B0azJcAoF+YFHr8rEbxYLJ0wy1kWZ29HOw=",
+ "owner": "oxalica",
+ "repo": "rust-overlay",
+ "rev": "042d905c01a6eec3bcae8530dacb19cda9758a63",
+ "type": "github"
+ },
+ "original": {
+ "owner": "oxalica",
+ "repo": "rust-overlay",
+ "type": "github"
+ }
+ },
+ "spicetify": {
+ "inputs": {
+ "nixpkgs": "nixpkgs_3",
+ "systems": "systems_2"
+ },
+ "locked": {
+ "lastModified": 1763985453,
+ "narHash": "sha256-vUqODgLIjeyHN7DP8dVx7oH9yB/L8qcxpN//4EmMQcM=",
+ "owner": "Gerg-L",
+ "repo": "spicetify-nix",
+ "rev": "89cd40c646ec5b12e5c20c0e18f082e7629d4819",
+ "type": "github"
+ },
+ "original": {
+ "owner": "Gerg-L",
+ "repo": "spicetify-nix",
+ "type": "github"
+ }
+ },
+ "systems": {
+ "locked": {
+ "lastModified": 1681028828,
+ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
+ "owner": "nix-systems",
+ "repo": "default",
+ "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
+ "type": "github"
+ },
+ "original": {
+ "owner": "nix-systems",
+ "repo": "default",
+ "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"
+ }
+ },
+ "zen-browser": {
+ "inputs": {
+ "home-manager": "home-manager_3",
+ "nixpkgs": [
+ "nixpkgs"
+ ]
+ },
+ "locked": {
+ "lastModified": 1764015829,
+ "narHash": "sha256-Oi3D37fFYvYRC4cA2voW8kICzmtUCYMoGSuyYuazDZ8=",
+ "owner": "0xc000022070",
+ "repo": "zen-browser-flake",
+ "rev": "011760d40ec6ac8af6b078d58def3c7d2d994a53",
+ "type": "github"
+ },
+ "original": {
+ "owner": "0xc000022070",
+ "repo": "zen-browser-flake",
+ "type": "github"
+ }
+ }
+ },
+ "root": "root",
+ "version": 7
+}
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..7144b00
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,108 @@
+{
+ description = "scouckel config flake";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
+ nix-flatpak.url = "github:gmodena/nix-flatpak/?ref=latest";
+ home-manager = {
+ url = "github:nix-community/home-manager";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ nur = {
+ url = "github:nix-community/NUR";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ zen-browser = {
+ url = "github:0xc000022070/zen-browser-flake";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ spicetify.url = "github:Gerg-L/spicetify-nix";
+ auto-cpufreq = {
+ url = "github:AdnanHodzic/auto-cpufreq";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ nixos-hardware.url = "github:NixOS/nixos-hardware/master";
+ nvf = {
+ url = "github:NotAShelf/nvf/v0.8";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+ chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
+ };
+
+ outputs = { nixpkgs, home-manager, nix-flatpak, nur, auto-cpufreq, nixos-hardware, chaotic, ... }@inputs: {
+ nixosConfigurations = {
+ # desktop
+ vecna = nixpkgs.lib.nixosSystem {
+ specialArgs = {inherit inputs;};
+ modules = [
+ ./hosts/vecna/configuration.nix
+ ./modules/nixos
+ nix-flatpak.nixosModules.nix-flatpak
+ home-manager.nixosModules.home-manager {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.users.jck = {
+ imports = [
+ ./hosts/vecna/home.nix
+ ./modules/home-manager
+ inputs.nvf.homeManagerModules.default
+ ];
+ };
+ home-manager.extraSpecialArgs = {inherit inputs;};
+ }
+ nur.modules.nixos.default
+ chaotic.nixosModules.default
+ ];
+ };
+ # laptop
+ xanathar = nixpkgs.lib.nixosSystem {
+ specialArgs = {inherit inputs;};
+ modules = [
+ ./hosts/xanathar/configuration.nix
+ ./modules/nixos
+ nix-flatpak.nixosModules.nix-flatpak
+ home-manager.nixosModules.home-manager {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.users.jck = {
+ imports = [
+ ./hosts/xanathar/home.nix
+ ./modules/home-manager
+ inputs.nvf.homeManagerModules.default
+ ];
+ };
+ home-manager.extraSpecialArgs = {inherit inputs;};
+ }
+ nur.modules.nixos.default
+ auto-cpufreq.nixosModules.default
+ chaotic.nixosModules.default
+ ];
+ };
+ # new laptop
+ tiamat = nixpkgs.lib.nixosSystem {
+ specialArgs = {inherit inputs;};
+ modules = [
+ ./hosts/tiamat/configuration.nix
+ ./modules/nixos
+ nix-flatpak.nixosModules.nix-flatpak
+ home-manager.nixosModules.home-manager {
+ home-manager.useGlobalPkgs = true;
+ home-manager.useUserPackages = true;
+ home-manager.users.jck = {
+ imports = [
+ ./hosts/tiamat/home.nix
+ ./modules/home-manager
+ inputs.nvf.homeManagerModules.default
+ ];
+ };
+ home-manager.extraSpecialArgs = {inherit inputs;};
+ }
+ nur.modules.nixos.default
+ auto-cpufreq.nixosModules.default
+ nixos-hardware.nixosModules.framework-13-7040-amd
+ chaotic.nixosModules.default
+ ];
+ };
+ };
+ };
+}
diff --git a/hosts/tiamat/configuration.nix b/hosts/tiamat/configuration.nix
new file mode 100644
index 0000000..0ecb442
--- /dev/null
+++ b/hosts/tiamat/configuration.nix
@@ -0,0 +1,151 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ imports =
+ [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ ];
+
+ # Bootloader.
+ boot.loader = {
+ efi = {
+ canTouchEfiVariables = true;
+ efiSysMountPoint = "/boot"; # ← use the same mount point here.
+ };
+ grub = {
+ efiSupport = true;
+ device = "nodev";
+ useOSProber = true;
+ theme = "${pkgs.fetchFromGitHub { # blue screen of life grub theme
+ owner = "harishnkr";
+ repo = "bsol";
+ rev = "8f39f66967e2391b11ee554578f0b821070ec72a";
+ sha256 = "sha256-UD5crwJdqnKVnxTN2vHIukJnQuzxmkko3E5wb8Xg6gs";
+ }}/bsol";
+ };
+ };
+
+ hardware.framework.enableKmod = false;
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+ hardware.firmware = with pkgs; [
+ linux-firmware
+ ];
+
+ hardware.graphics = {
+ enable = true;
+ enable32Bit = true;
+ };
+
+ system.name = "tiamat";
+ networking.hostName = "tiamat";
+ networking.nameservers = [ "1.1.1.1" "9.9.9.9" ];
+
+ # Configure network proxy if necessary
+ # networking.proxy.default = "http://user:password@proxy:port/";
+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+ # Enable networking
+ networking.networkmanager = {
+ enable = true;
+ plugins = with pkgs; [
+ networkmanager-openvpn
+ ];
+ };
+
+ # Set your time zone.
+ time.timeZone = "US/Central";
+
+ # Select internationalisation properties.
+ 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";
+ };
+
+ # Configure keymap in X11
+ services.xserver.xkb = {
+ layout = "us";
+ variant = "";
+ };
+
+ # Define a user account. Don't forget to set a password with ‘passwd’.
+ users.users.jck = {
+ isNormalUser = true;
+ description = "jck";
+ extraGroups = [ "networkmanager" "wheel" "nordvpn" ];
+ };
+
+ nixpkgs.config.allowUnfree = true;
+
+ services.thermald.enable = true;
+
+ environment.systemPackages = [ pkgs.framework-tool ];
+
+ services.fwupd.enable = true;
+
+ nix.settings = {
+ experimental-features = [ "nix-command" "flakes" ];
+ auto-optimise-store = true;
+ };
+
+ environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ];
+
+ gaming.enable = true;
+
+ services.kanata = {
+ enable = true;
+ keyboards.tkb = {
+ devices = [
+ "dev/input/by-path/platform-i8042-serio-0-event-kbd"
+ ];
+ config = "
+ (defsrc h j k l caps)
+
+ (deflayer default _ _ _ _ @press)
+ (deflayer arrows left down up right @press)
+
+ (defalias press
+ (tap-hold-press 200 200 esc (layer-while-held arrows))
+ )
+ ";
+
+ extraDefCfg = "
+ process-unmapped-keys yes
+ ";
+ };
+ };
+
+ # Some programs need SUID wrappers, can be configured further or are
+ # started in user sessions.
+ # programs.mtr.enable = true;
+ # programs.gnupg.agent = {
+ # enable = true;
+ # enableSSHSupport = true;
+ # };
+
+ security.polkit.enable = true;
+ services.playerctld.enable = true;
+
+ services.openssh = {
+ enable = true;
+ settings.PermitRootLogin = "no";
+ # PasswordAuthentication = true;
+ # allowSFTP = true;
+ };
+
+ # Open ports in the firewall.
+ # networking.firewall.allowedTCPPorts = [ ... ];
+ # networking.firewall.allowedUDPPorts = [ ... ];
+ # Or disable the firewall altogether.
+ # networking.firewall.enable = false;
+
+ system.stateVersion = "25.05";
+}
diff --git a/hosts/tiamat/hardware-configuration.nix b/hosts/tiamat/hardware-configuration.nix
new file mode 100644
index 0000000..dee0ce0
--- /dev/null
+++ b/hosts/tiamat/hardware-configuration.nix
@@ -0,0 +1,40 @@
+# 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" "thunderbolt" "usb_storage" "uas" "sd_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-amd" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/0983bf69-0f71-4c49-885b-0b5c09a19429";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/756C-8B9B";
+ fsType = "vfat";
+ options = [ "fmask=0077" "dmask=0077" ];
+ };
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/50dd07e0-bf93-450c-a91b-aa73a18a8224"; }
+ ];
+
+ # 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.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/tiamat/home.nix b/hosts/tiamat/home.nix
new file mode 100644
index 0000000..f4c1dca
--- /dev/null
+++ b/hosts/tiamat/home.nix
@@ -0,0 +1,92 @@
+{ config, pkgs, ... }:
+
+{
+ # Home Manager needs a bit of information about you and the paths it should
+ # manage.
+ home.username = "jck";
+ home.homeDirectory = "/home/jck";
+
+ # This value determines the Home Manager release that your configuration is
+ # compatible with. This helps avoid breakage when a new Home Manager release
+ # introduces backwards incompatible changes.
+ #
+ # You should not change this value, even if you update Home Manager. If you do
+ # want to update the value, then make sure to first check the Home Manager
+ # release notes.
+ home.stateVersion = "25.05"; # Please read the comment before changing.
+
+ # The home.packages option allows you to install Nix packages into your
+ # environment.
+
+ # Home Manager is pretty good at managing dotfiles. The primary way to manage
+ # plain files is through 'home.file'.
+ home.file = {
+ # # Building this configuration will create a copy of 'dotfiles/screenrc' in
+ # # the Nix store. Activating the configuration will then make '~/.screenrc' a
+ # # symlink to the Nix store copy.
+ # ".screenrc".source = dotfiles/screenrc;
+
+ # # You can also set the file content immediately.
+ # ".gradle/gradle.properties".text = ''
+ # org.gradle.console=verbose
+ # org.gradle.daemon.idletimeout=3600000
+ # '';
+ };
+
+ # Home Manager can also manage your environment variables through
+ # 'home.sessionVariables'. These will be explicitly sourced when using a
+ # shell provided by Home Manager. If you don't want to manage your shell
+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
+ # located at either
+ #
+ # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # /etc/profiles/per-user/jck/etc/profile.d/hm-session-vars.sh
+ #
+ home.sessionVariables = {
+ # EDITOR = "emacs";
+ };
+
+ hyprland.enable = true;
+ gaming.enable = true;
+
+ wayland.windowManager.hyprland.settings = {
+ monitor = [
+ "eDP-1, 2256x1504@60, 0x0, 1.5"
+ ];
+
+ workspace = [
+ "1,monitor:eDP-1"
+ "2,monitor:eDP-1"
+ "3,monitor:eDP-1"
+ "4,monitor:eDP-1"
+ "5,monitor:eDP-1"
+ "6,monitor:eDP-1"
+ "7,monitor:eDP-1"
+ "8,monitor:eDP-1"
+ ];
+
+ misc = {
+ vrr = 2;
+ };
+ };
+
+ programs.hyprlock.settings.auth = {
+ fingerprint.enabled = true;
+ fingerprint.present_message = "scanning finger";
+ };
+
+ dconf.settings."org/gnome/desktop/interface" = {
+ color-scheme = "prefer-dark";
+ };
+
+ # Let Home Manager install and manage itself.
+ programs.home-manager.enable = true;
+}
+
diff --git a/hosts/vecna/configuration.nix b/hosts/vecna/configuration.nix
new file mode 100644
index 0000000..960200c
--- /dev/null
+++ b/hosts/vecna/configuration.nix
@@ -0,0 +1,132 @@
+{ pkgs, ... }:
+
+{
+ imports = [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ ];
+
+ # Bootloader.
+ boot.loader = {
+ efi = {
+ canTouchEfiVariables = true;
+ efiSysMountPoint = "/boot"; # ← use the same mount point here.
+ };
+ grub = {
+ efiSupport = true;
+ device = "nodev";
+ useOSProber = true;
+ theme = "${pkgs.fetchFromGitHub { # blue screen of life grub theme
+ owner = "harishnkr";
+ repo = "bsol";
+ rev = "8f39f66967e2391b11ee554578f0b821070ec72a";
+ sha256 = "sha256-UD5crwJdqnKVnxTN2vHIukJnQuzxmkko3E5wb8Xg6gs";
+ }}/bsol";
+ };
+ };
+
+ boot.kernelPackages = pkgs.linuxPackages_cachyos;
+ chaotic.mesa-git = {
+ enable = true;
+ fallbackSpecialisation = true;
+ };
+
+ # amd gpu config
+ hardware.graphics = {
+ enable = true;
+ enable32Bit = true;
+ extraPackages = with pkgs; [
+ rocmPackages.clr.icd
+ libva
+ ];
+ };
+
+ boot.initrd.availableKernelModules = [ "amdgpu" ];
+ hardware.firmware = with pkgs; [
+ linux-firmware
+ ];
+ # boot.extraModprobeConfig = "options amdgpu ppfeaturemask=0xffffffff\n";
+ hardware.amdgpu.overdrive.enable = true;
+ environment.systemPackages = with pkgs; [ lact ];
+ systemd.packages = with pkgs; [ lact ];
+ systemd.services.lactd.wantedBy = [ "multi-user.target" ];
+ services.xserver.videoDrivers = [ "amdgpu" ];
+
+ hardware.cpu.amd.updateMicrocode = true;
+
+ # networking
+ system.name = "vecna";
+ networking.hostName = "vecna";
+ networking.networkmanager = {
+ enable = true;
+ plugins = with pkgs; [
+ networkmanager-openvpn
+ ];
+ };
+
+ networking.nameservers = [ "1.1.1.1" "9.9.9.9" ];
+
+ # localization
+ time.timeZone = "US/Central";
+ 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";
+ };
+
+ services.xserver.xkb = {
+ layout = "us";
+ variant = "";
+ };
+
+ users.users.jck = {
+ isNormalUser = true;
+ description = "jck";
+ extraGroups = [ "networkmanager" "wheel" "nordvpn" ];
+ };
+
+ nixpkgs.config.allowUnfree = true;
+
+ nix.settings = {
+ experimental-features = [ "nix-command" "flakes" ];
+ auto-optimise-store = true;
+ };
+
+ environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ];
+
+ gaming.enable = true;
+
+ hardware.wooting.enable = true;
+
+ # Some programs need SUID wrappers, can be configured further or are
+ # started in user sessions.
+ # programs.mtr.enable = true;
+ # programs.gnupg.agent = {
+ # enable = true;
+ # enableSSHSupport = true;
+ # };
+
+ security.polkit.enable = true;
+ services.playerctld.enable = true;
+
+ services.openssh = {
+ enable = true;
+ settings.PermitRootLogin = "no";
+ # PasswordAuthentication = true;
+ # allowSFTP = true;
+ };
+
+ # Open ports in the firewall.
+ # networking.firewall.allowedTCPPorts = [ ... ];
+ # networking.firewall.allowedUDPPorts = [ ... ];
+ # Or disable the firewall altogether.
+ # networking.firewall.enable = false;
+
+ system.stateVersion = "25.05";
+}
diff --git a/hosts/vecna/hardware-configuration.nix b/hosts/vecna/hardware-configuration.nix
new file mode 100644
index 0000000..adfd14f
--- /dev/null
+++ b/hosts/vecna/hardware-configuration.nix
@@ -0,0 +1,42 @@
+# 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/a87c306e-d9dd-4c49-895b-b4245c4b13b8";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/3784-AD60";
+ fsType = "vfat";
+ options = [ "fmask=0077" "dmask=0077" ];
+ };
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/079d90c1-cf47-4684-9d73-20fa7c3bfb80"; }
+ ];
+
+ # 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.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.eno1.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp11s0.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp9s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/vecna/home.nix b/hosts/vecna/home.nix
new file mode 100644
index 0000000..0033eee
--- /dev/null
+++ b/hosts/vecna/home.nix
@@ -0,0 +1,89 @@
+{ config, pkgs, ... }:
+
+{
+ # Home Manager needs a bit of information about you and the paths it should
+ # manage.
+ home.username = "jck";
+ home.homeDirectory = "/home/jck";
+
+ # This value determines the Home Manager release that your configuration is
+ # compatible with. This helps avoid breakage when a new Home Manager release
+ # introduces backwards incompatible changes.
+ #
+ # You should not change this value, even if you update Home Manager. If you do
+ # want to update the value, then make sure to first check the Home Manager
+ # release notes.
+ home.stateVersion = "25.05"; # Please read the comment before changing.
+
+ # The home.packages option allows you to install Nix packages into your
+ # environment.
+
+ # Home Manager is pretty good at managing dotfiles. The primary way to manage
+ # plain files is through 'home.file'.
+ home.file = {
+ # # Building this configuration will create a copy of 'dotfiles/screenrc' in
+ # # the Nix store. Activating the configuration will then make '~/.screenrc' a
+ # # symlink to the Nix store copy.
+ # ".screenrc".source = dotfiles/screenrc;
+
+ # # You can also set the file content immediately.
+ # ".gradle/gradle.properties".text = ''
+ # org.gradle.console=verbose
+ # org.gradle.daemon.idletimeout=3600000
+ # '';
+ };
+
+ # Home Manager can also manage your environment variables through
+ # 'home.sessionVariables'. These will be explicitly sourced when using a
+ # shell provided by Home Manager. If you don't want to manage your shell
+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
+ # located at either
+ #
+ # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # /etc/profiles/per-user/jck/etc/profile.d/hm-session-vars.sh
+ #
+ home.sessionVariables = {
+ # EDITOR = "emacs";
+ };
+
+ hyprland.enable = true;
+ gaming.enable = true;
+
+ wayland.windowManager.hyprland.settings = {
+ monitor = [
+ "DP-3, 2560x1440@170.07100, 0x0, 1"
+ "HDMI-A-1, 1920x1080@74.97, 2560x150, 1"
+ ];
+
+ workspace = [
+ "1,monitor:DP-3"
+ "2,monitor:DP-3"
+ "3,monitor:DP-3"
+ "4,monitor:DP-3"
+ "5,monitor:DP-3"
+ "6,monitor:HDMI-A-1"
+ "7,monitor:HDMI-A-1"
+ "8,monitor:HDMI-A-1"
+ "9,monitor:HDMI-A-1"
+ "10,monitor:HDMI-A-1"
+ ];
+
+ env = [
+ "AQ_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1"
+ ];
+ };
+
+ dconf.settings."org/gnome/desktop/interface" = {
+ color-scheme = "prefer-dark";
+ };
+
+ # Let Home Manager install and manage itself.
+ programs.home-manager.enable = true;
+}
diff --git a/hosts/xanathar/configuration.nix b/hosts/xanathar/configuration.nix
new file mode 100644
index 0000000..36133bc
--- /dev/null
+++ b/hosts/xanathar/configuration.nix
@@ -0,0 +1,143 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ imports =
+ [ # Include the results of the hardware scan.
+ ./hardware-configuration.nix
+ ];
+
+ # Bootloader.
+ boot.loader = {
+ efi = {
+ canTouchEfiVariables = true;
+ efiSysMountPoint = "/boot"; # ← use the same mount point here.
+ };
+ grub = {
+ efiSupport = true;
+ device = "nodev";
+ useOSProber = true;
+ theme = "${pkgs.fetchFromGitHub { # blue screen of life grub theme
+ owner = "harishnkr";
+ repo = "bsol";
+ rev = "8f39f66967e2391b11ee554578f0b821070ec72a";
+ sha256 = "sha256-UD5crwJdqnKVnxTN2vHIukJnQuzxmkko3E5wb8Xg6gs";
+ }}/bsol";
+ };
+ };
+
+ boot.kernelPackages = pkgs.linuxPackages_latest;
+ hardware.firmware = with pkgs; [
+ linux-firmware
+ ];
+
+ hardware.graphics = {
+ enable = true;
+ enable32Bit = true;
+ };
+
+ system.name = "xanathar";
+ networking.hostName = "xanathar";
+ networking.nameservers = [ "1.1.1.1" "9.9.9.9" ];
+
+ # Configure network proxy if necessary
+ # networking.proxy.default = "http://user:password@proxy:port/";
+ # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
+
+ # Enable networking
+ networking.networkmanager = {
+ enable = true;
+ plugins = with pkgs; [
+ networkmanager-openvpn
+ ];
+ };
+
+ # Set your time zone.
+ time.timeZone = "US/Central";
+
+ # Select internationalisation properties.
+ 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";
+ };
+
+ # Configure keymap in X11
+ services.xserver.xkb = {
+ layout = "us";
+ variant = "";
+ };
+
+ # Define a user account. Don't forget to set a password with ‘passwd’.
+ users.users.jck = {
+ isNormalUser = true;
+ description = "jck";
+ extraGroups = [ "networkmanager" "wheel" ];
+ };
+
+ nixpkgs.config.allowUnfree = true;
+
+ services.thermald.enable = true;
+
+ # services.logind = {
+ # lidSwitch = "poweroff";
+ # lidSwitchExternalPower = "lock";
+ # lidSwitchDocked = "ignore";
+ # };
+
+ services.auto-cpufreq = {
+ enable = true;
+ settings = {
+ battery = {
+ governor = "powersave";
+ turbo = "never";
+ };
+ charger = {
+ governor = "performance";
+ turbo = "auto";
+ };
+ };
+ };
+
+ nix.settings = {
+ experimental-features = [ "nix-command" "flakes" ];
+ auto-optimise-store = true;
+ };
+
+ environment.pathsToLink = [ "/share/xdg-desktop-portal" "/share/applications" ];
+
+ gaming.enable = true;
+
+ # Some programs need SUID wrappers, can be configured further or are
+ # started in user sessions.
+ # programs.mtr.enable = true;
+ # programs.gnupg.agent = {
+ # enable = true;
+ # enableSSHSupport = true;
+ # };
+
+ security.polkit.enable = true;
+ services.playerctld.enable = true;
+
+ services.openssh = {
+ enable = true;
+ settings.PermitRootLogin = "no";
+ # PasswordAuthentication = true;
+ # allowSFTP = true;
+ };
+
+ # Open ports in the firewall.
+ # networking.firewall.allowedTCPPorts = [ ... ];
+ # networking.firewall.allowedUDPPorts = [ ... ];
+ # Or disable the firewall altogether.
+ # networking.firewall.enable = false;
+
+ system.stateVersion = "25.05";
+}
diff --git a/hosts/xanathar/hardware-configuration.nix b/hosts/xanathar/hardware-configuration.nix
new file mode 100644
index 0000000..43c4f6c
--- /dev/null
+++ b/hosts/xanathar/hardware-configuration.nix
@@ -0,0 +1,40 @@
+# 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" "nvme" "usb_storage" "sd_mod" ];
+ boot.initrd.kernelModules = [ ];
+ boot.kernelModules = [ "kvm-intel" ];
+ boot.extraModulePackages = [ ];
+
+ fileSystems."/" =
+ { device = "/dev/disk/by-uuid/3db16c90-b01b-4244-a249-74873f9a59e7";
+ fsType = "ext4";
+ };
+
+ fileSystems."/boot" =
+ { device = "/dev/disk/by-uuid/A83C-AF90";
+ fsType = "vfat";
+ options = [ "fmask=0077" "dmask=0077" ];
+ };
+
+ swapDevices =
+ [ { device = "/dev/disk/by-uuid/ddbc5a19-f520-4538-8f7b-b6f5b709e8e9"; }
+ ];
+
+ # 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.<interface>.useDHCP`.
+ networking.useDHCP = lib.mkDefault true;
+ # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true;
+
+ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+ hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
diff --git a/hosts/xanathar/home.nix b/hosts/xanathar/home.nix
new file mode 100644
index 0000000..f47b01f
--- /dev/null
+++ b/hosts/xanathar/home.nix
@@ -0,0 +1,86 @@
+{ config, pkgs, ... }:
+
+{
+ # Home Manager needs a bit of information about you and the paths it should
+ # manage.
+ home.username = "jck";
+ home.homeDirectory = "/home/jck";
+
+ # This value determines the Home Manager release that your configuration is
+ # compatible with. This helps avoid breakage when a new Home Manager release
+ # introduces backwards incompatible changes.
+ #
+ # You should not change this value, even if you update Home Manager. If you do
+ # want to update the value, then make sure to first check the Home Manager
+ # release notes.
+ home.stateVersion = "25.05"; # Please read the comment before changing.
+
+ # The home.packages option allows you to install Nix packages into your
+ # environment.
+
+ # Home Manager is pretty good at managing dotfiles. The primary way to manage
+ # plain files is through 'home.file'.
+ home.file = {
+ # # Building this configuration will create a copy of 'dotfiles/screenrc' in
+ # # the Nix store. Activating the configuration will then make '~/.screenrc' a
+ # # symlink to the Nix store copy.
+ # ".screenrc".source = dotfiles/screenrc;
+
+ # # You can also set the file content immediately.
+ # ".gradle/gradle.properties".text = ''
+ # org.gradle.console=verbose
+ # org.gradle.daemon.idletimeout=3600000
+ # '';
+ };
+
+ # Home Manager can also manage your environment variables through
+ # 'home.sessionVariables'. These will be explicitly sourced when using a
+ # shell provided by Home Manager. If you don't want to manage your shell
+ # through Home Manager then you have to manually source 'hm-session-vars.sh'
+ # located at either
+ #
+ # ~/.nix-profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
+ #
+ # or
+ #
+ # /etc/profiles/per-user/jck/etc/profile.d/hm-session-vars.sh
+ #
+ home.sessionVariables = {
+ # EDITOR = "emacs";
+ };
+
+ hyprland.enable = true;
+ gaming.enable = true;
+
+ wayland.windowManager.hyprland.settings = {
+ monitor = [
+ "eDP-1, 1920x1080@40, 0x0, 1"
+ ];
+
+ workspace = [
+ "1,monitor:eDP-1"
+ "2,monitor:eDP-1"
+ "3,monitor:eDP-1"
+ "4,monitor:eDP-1"
+ "5,monitor:eDP-1"
+ "6,monitor:eDP-1"
+ "7,monitor:eDP-1"
+ "8,monitor:eDP-1"
+ ];
+
+ misc = {
+ vrr = 1;
+ };
+ };
+
+ dconf.settings."org/gnome/desktop/interface" = {
+ color-scheme = "prefer-dark";
+ };
+
+ # Let Home Manager install and manage itself.
+ programs.home-manager.enable = true;
+}
diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix
new file mode 100644
index 0000000..c9d8268
--- /dev/null
+++ b/modules/home-manager/default.nix
@@ -0,0 +1,71 @@
+{ pkgs, lib, config, inputs, ... }:
+
+{
+ imports = [
+ ./hypr
+ ./git.nix
+ # ./vscodium.nix
+ ./kitty.nix
+ ./zen-browser.nix
+ ./obs.nix
+ ./spicetify.nix
+ ./yazi.nix
+ ./fastfetch.nix
+ ./gaming.nix
+ # ./rbw.nix
+ ./nvf.nix
+ ./lazygit.nix
+ ./spotify-player.nix
+ ];
+
+ home.packages = with pkgs; [
+ dconf
+ bitwarden-desktop
+ hyprshot
+ wineWowPackages.stable
+ winetricks
+ motrix
+ flashprint
+ gvfs
+ brave
+ hyprpicker
+ glances
+ discord
+ openvpn
+ qbittorrent
+ zoom-us
+ obsidian
+ cryptomator
+ networkmanagerapplet
+ libreoffice
+ gimp3
+ vlc
+ ungoogled-chromium
+ audacity
+ ];
+
+ home.sessionVariables = {
+ EDITOR = "vi";
+ VISUAL = "vi";
+ };
+
+ xdg.configFile."mimeapps.list".force = true;
+
+ xdg.mimeApps = {
+ enable = true;
+
+ defaultApplications = {
+ "application/pdf" = "userapp-kitty vi-DARLE3.desktop";
+ "application/toml" = "userapp-kitty vi-DARLE3.desktop";
+ "application/vnd.microsoft.portable-executable" = "wine-desktop";
+ "application/zip" = "lxqt-archiver.desktop";
+ "inode/directory" = "userapp-kitty yazi-X3BEF3.desktop";
+ "text/html" = "zen-twilight.desktop";
+ "text/plain" = "userapp-kitty vi-DARLE3.desktop";
+ "x-scheme-handler/about" = "zen-twilight.desktop";
+ "x-scheme-handler/http" = "zen-twilight.desktop";
+ "x-scheme-handler/https" = "zen-twilight.desktop";
+ "x-scheme-handler/unknown" = "zen-twilight.desktop";
+ };
+ };
+}
diff --git a/modules/home-manager/fastfetch-logo.txt b/modules/home-manager/fastfetch-logo.txt
new file mode 100644
index 0000000..b3bc376
--- /dev/null
+++ b/modules/home-manager/fastfetch-logo.txt
@@ -0,0 +1,17 @@
+ * *
+ * * *
+ * * * * *
+ * * * * *
+ * * * * * * *
+ * * * * * .# * *
+ * * * #. .# * *
+ * "#. #: #" * * *
+ * * * "#. ##" *
+ * "###
+ "##
+ ##.
+ .##:
+ :###
+ ;###
+ ,####.
+/\/\/\/\/\/.######.\/\/\/\/\
diff --git a/modules/home-manager/fastfetch.nix b/modules/home-manager/fastfetch.nix
new file mode 100644
index 0000000..74f0820
--- /dev/null
+++ b/modules/home-manager/fastfetch.nix
@@ -0,0 +1,61 @@
+{
+ programs.fastfetch = {
+ enable = true;
+
+ settings = {
+ logo = {
+ source = ./fastfetch-logo.txt; # ascii art by Joan G. Stark
+ padding = {
+ right = 2;
+ left = 1;
+ top = 2;
+ };
+ color = {
+ "1" = "bright_green";
+ };
+ };
+
+ display = {
+ color = "bright_green";
+ };
+
+ modules = [
+ "title"
+ "separator"
+ {
+ type = "datetime";
+ key = "Date";
+ format = "{weekday}, {year}-{month-pretty}-{day-in-month}";
+ }
+ {
+ type = "datetime";
+ key = "Time";
+ format = "{hour-pretty}:{minute-pretty}:{second-pretty}, {timezone-name}, UTC{offset-from-utc}";
+ }
+ "uptime"
+ {
+ type = "battery";
+ key = "Battery";
+ format = "{capacity}, {time-formatted} [{status}]";
+ }
+ "separator"
+ "os"
+ "host"
+ "kernel"
+ "packages"
+ "shell"
+ "display"
+ "wm"
+ "separator"
+ "cpu"
+ "gpu"
+ "memory"
+ "swap"
+ "disk"
+ "localip"
+ "break"
+ "colors"
+ ];
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/fish.nix b/modules/home-manager/fish.nix
new file mode 100644
index 0000000..e38d149
--- /dev/null
+++ b/modules/home-manager/fish.nix
@@ -0,0 +1,18 @@
+{ pkgs, ... }:
+
+{
+ programs.fish = {
+ enable = true;
+
+ shellInit = ''
+ function fish_greeting
+ fastfetch
+ end
+ '';
+
+ plugins = [
+ { name = "grc"; src = pkgs.fishPlugins.grc; }
+ { name = "bang-bang"; src = pkgs.fishPlugins.bang-bang; }
+ ];
+ };
+}
diff --git a/modules/home-manager/gaming.nix b/modules/home-manager/gaming.nix
new file mode 100644
index 0000000..09eff6b
--- /dev/null
+++ b/modules/home-manager/gaming.nix
@@ -0,0 +1,37 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ options = {
+ gaming.enable = lib.mkEnableOption "enables gaming module";
+ };
+
+ config = lib.mkIf config.gaming.enable {
+ home.packages = [
+ pkgs.prismlauncher
+ pkgs.cemu
+ pkgs.ryubing
+ ];
+
+ programs.lutris = {
+ enable = true;
+ runners = {
+ cemu.package = pkgs.cemu;
+ ryujinx.package = pkgs.ryubing;
+ };
+ steamPackage = pkgs.steam;
+ winePackages = with pkgs.wineWowPackages; [
+ stable
+ ];
+ extraPackages = with pkgs; [
+ gamemode
+ umu-launcher
+ winetricks
+ mangohud
+ gamescope
+ ];
+ protonPackages = with pkgs; [
+ proton-ge-bin
+ ];
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/git.nix b/modules/home-manager/git.nix
new file mode 100644
index 0000000..7216282
--- /dev/null
+++ b/modules/home-manager/git.nix
@@ -0,0 +1,11 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ programs.git = {
+ enable = true;
+ settings = {
+ init.defaultBranch = "main";
+ safe.directory = "/etc/nixos";
+ };
+ };
+}
diff --git a/modules/home-manager/hypr/autostart.nix b/modules/home-manager/hypr/autostart.nix
new file mode 100644
index 0000000..048afcc
--- /dev/null
+++ b/modules/home-manager/hypr/autostart.nix
@@ -0,0 +1,14 @@
+{ config, lib, inputs, ... }:
+
+# very broken, fix later
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ wayland.windowManager.hyprland.settings = {
+ exec-once = [
+ "[workspace 1 silent] zen-browser"
+ "[workspace 7 silent] equibop"
+ ];
+ };
+ };
+}
diff --git a/modules/home-manager/hypr/binds.nix b/modules/home-manager/hypr/binds.nix
new file mode 100644
index 0000000..8d2d772
--- /dev/null
+++ b/modules/home-manager/hypr/binds.nix
@@ -0,0 +1,93 @@
+{ config, lib, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ wayland.windowManager.hyprland.settings.binds = {
+ "$mod" = "SUPER";
+ "$term" = "kitty";
+ "$filem" = "kitty yazi";
+
+ bind = [
+ "$mod SHIFT, K, exec, hyprlock"
+ "$mod, P, exec, hyprpicker"
+ # "$mod, RETURN, exec, pypr toggle kitty"
+
+ "$mod, F1, exec, rofi -show drun"
+ "$mod, F2, exec, $term"
+ "$mod, F3, exec, $filem"
+ "$mod, F4, killactive,"
+
+ "$mod, F, fullscreen"
+ "$mod, T, togglefloating"
+
+ "$mod, 1, workspace, 1"
+ "$mod, 2, workspace, 2"
+ "$mod, 3, workspace, 3"
+ "$mod, 4, workspace, 4"
+ "$mod, 5, workspace, 5"
+ "$mod, 6, workspace, 6"
+ "$mod, 7, workspace, 7"
+ "$mod, 8, workspace, 8"
+ "$mod, 9, workspace, 9"
+ "$mod, 0, workspace, 10"
+
+ "$mod SHIFT, 1, movetoworkspace, 1"
+ "$mod SHIFT, 2, movetoworkspace, 2"
+ "$mod SHIFT, 3, movetoworkspace, 3"
+ "$mod SHIFT, 4, movetoworkspace, 4"
+ "$mod SHIFT, 5, movetoworkspace, 5"
+ "$mod SHIFT, 6, movetoworkspace, 6"
+ "$mod SHIFT, 7, movetoworkspace, 7"
+ "$mod SHIFT, 8, movetoworkspace, 8"
+ "$mod SHIFT, 9, movetoworkspace, 9"
+ "$mod SHIFT, 0, movetoworkspace, 10"
+
+ "$mod, H, movefocus, l"
+ "$mod, J, movefocus, d"
+ "$mod, K, movefocus, u"
+ "$mod, L, movefocus, r"
+
+ "$mod SHIFT, c, exec, xsel -bc"
+
+ "$mod, C, exec, rofi -show calc"
+
+ ", PRINT, exec, hyprshot -m region -o ~/Documents/screenshots"
+ "SHIFT, PRINT, exec, hyprshot -m region --clipboard-only"
+
+ "$mod SHIFT CTRL ALT, L, exec, xdg-open https://linkedin.com" # important bind
+ ];
+
+ bindm = [
+ "$mod, mouse:272, movewindow"
+ "$mod, mouse:273, resizewindow"
+ "$mod SHIFT, mouse:272, resizewindow"
+ ];
+
+ bindl = [
+ ", XF86AudioPrev, exec, playerctl --player=spotify_player,spotify previous"
+ ", XF86AudioNext, exec, playerctl --player=spotify_player,spotify next"
+ ", XF86AudioPause, exec, playerctl --player=spotify_player,spotify play-pause"
+ ", XF86AudioPlay, exec, playerctl --player=spotify_player,spotify play-pause"
+ "$mod, XF86AudioPrev, exec, playerctl --player=spotify_player,spotify loop none"
+ "$mod, XF86AudioPause, exec, playerctl --player=spotify_player,spotify loop playlist"
+ "$mod, XF86AudioPlay, exec, playerctl --player=spotify_player,spotify loop playlist"
+ "$mod, XF86AudioNext, exec, playerctl --player=spotify_player,spotify loop track"
+ "$mod, XF86AudioStop, exec, playerctl --player=spotify_player,spotify shuffle toggle"
+ ", XF86AudioStop, exec, playerctl -a stop"
+
+ "$mod SHIFT, L, exec, hyprctl dispatch dpms toggle"
+ ",switch:Lid Switch, exec, pidof hyprlock || hyprlock"
+
+ "$mod, M, exit,"
+ ];
+
+ bindel = [
+ "$mod,XF86AudioRaiseVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%+"
+ "$mod,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-"
+ ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"
+ ", XF86MonBrightnessUp, exec, brightnessctl set 10%+"
+ ", XF86MonBrightnessDown, exec, brightnessctl set 10%-"
+ ];
+ };
+ };
+}
diff --git a/modules/home-manager/hypr/camdenyards.jpg b/modules/home-manager/hypr/camdenyards.jpg
new file mode 100644
index 0000000..4601318
--- /dev/null
+++ b/modules/home-manager/hypr/camdenyards.jpg
Binary files differ
diff --git a/modules/home-manager/hypr/decoration.nix b/modules/home-manager/hypr/decoration.nix
new file mode 100644
index 0000000..e928a51
--- /dev/null
+++ b/modules/home-manager/hypr/decoration.nix
@@ -0,0 +1,28 @@
+{ config, lib, inputs, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ wayland.windowManager.hyprland.settings = {
+ decoration = {
+ rounding = 0;
+ };
+
+ animations = {
+ enabled = false;
+ };
+
+ workspace = [
+ "w[tv1], gapsout:0, gapsin:0"
+ "f[1], gapsout:0, gapsin:0"
+ ];
+
+ windowrulev2 = [
+ "bordersize 0, floating:0, onworkspace:w[tv1]"
+ "rounding 0, floating:0, onworkspace:w[tv1]"
+ "bordersize 0, floating:0, onworkspace:f[1]"
+ "rounding 0, floating:0, onworkspace:f[1]"
+ ];
+
+ };
+ };
+}
diff --git a/modules/home-manager/hypr/default.nix b/modules/home-manager/hypr/default.nix
new file mode 100644
index 0000000..2ec9301
--- /dev/null
+++ b/modules/home-manager/hypr/default.nix
@@ -0,0 +1,140 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ options = {
+ hyprland.enable = lib.mkEnableOption "enables hyprland";
+ };
+
+ imports = [
+ ./decoration.nix
+ ./binds.nix
+ ./input.nix
+ ./waybar-hyprland.nix
+ ./hyprlock.nix
+ ./hypridle.nix
+ ./hyprpaper.nix
+ ./rofi-hyprland.nix
+ ];
+
+ config = lib.mkIf config.hyprland.enable {
+ #fixing issues
+
+ xdg.portal = {
+ enable = true;
+
+ config = {
+ common = {
+ default = [ "hyprland" ];
+ };
+ };
+
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-hyprland
+ ];
+ };
+
+ home.packages = with pkgs; [
+ # pyprland
+ ];
+
+ home.file.".config/hypr/pyprland.toml".source = ./pyprland.toml;
+
+ home.sessionVariables.NIXOS_OZONE_WL = "1";
+
+ home.pointerCursor = {
+ gtk.enable = true;
+ # x11.enable = true;
+ package = pkgs.bibata-cursors;
+ name = "Bibata-Modern-Classic";
+ size = 12;
+ };
+
+ gtk = {
+ enable = true;
+
+ theme = {
+ package = pkgs.flat-remix-gtk;
+ name = "Flat-Remix-GTK-Grey-Darkest";
+ };
+
+ iconTheme = {
+ package = pkgs.adwaita-icon-theme;
+ name = "Adwaita";
+ };
+
+ font = {
+ name = "Sans";
+ size = 11;
+ };
+
+ gtk3.extraConfig = {
+ gtk-application-prefer-dark-theme = true;
+ };
+
+ gtk4.extraConfig = {
+ gtk-application-prefer-dark-theme = true;
+ };
+ };
+
+ wayland.windowManager.hyprland.systemd.variables = ["--all"];
+
+ # ok now actually hyprland
+
+ wayland.windowManager.hyprland = {
+ enable = true;
+ xwayland.enable = true;
+
+ settings = {
+ exec-once = [
+ "lxqt-policykit-agent"
+ "waybar"
+ "hyprpaper"
+ "waypaper --restore"
+ # "pypr"
+ ];
+
+ # environment variables
+ env = [
+ "XCURSOR_SIZE,24"
+ "HYPRCURSOR_SIZE,24"
+ ];
+
+ general = {
+ gaps_in = 0;
+ gaps_out = 0;
+
+ border_size = 1;
+
+ # https://wiki.hyprland.org/Configuring/Variables/#variable-types for info about colors
+ "col.active_border" = "rgba(7DAeA3ee) rgba(89B482ee) 45deg";
+ "col.inactive_border" = "rgba(504945ee)";
+
+ # Set to true enable resizing windows by clicking and dragging on borders and gaps
+ resize_on_border = false;
+
+ # Please see https://wiki.hyprland.org/Configuring/Tearing/ before you turn this on
+ allow_tearing = false;
+
+ layout = "dwindle";
+ };
+
+ misc = {
+ force_default_wallpaper = 1;
+ disable_hyprland_logo = false;
+ vfr = true;
+ };
+
+ dwindle = {
+ pseudotile = true;
+ preserve_split = true;
+ };
+ };
+
+ extraConfig = "
+ xwayland {
+ force_zero_scaling = true;
+ }
+ ";
+ };
+ };
+}
diff --git a/modules/home-manager/hypr/hypridle.nix b/modules/home-manager/hypr/hypridle.nix
new file mode 100644
index 0000000..3f575a0
--- /dev/null
+++ b/modules/home-manager/hypr/hypridle.nix
@@ -0,0 +1,26 @@
+{ config, lib, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ services.hypridle = {
+ enable = true;
+
+ settings = {
+ general = {
+ lock_cmd = "pidof hyprlock || hyprlock";
+ };
+
+ listener = [
+ {
+ timeout = 300;
+ on-timeout = "hyprlock";
+ }
+ {
+ timeout = 3600;
+ on-timeout = "hyprctl dispatch dpms off";
+ }
+ ];
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/hypr/hyprlock.nix b/modules/home-manager/hypr/hyprlock.nix
new file mode 100644
index 0000000..dfaee43
--- /dev/null
+++ b/modules/home-manager/hypr/hyprlock.nix
@@ -0,0 +1,46 @@
+{ pkgs, lib, config, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ programs.hyprlock = {
+ enable = true;
+
+ settings = {
+ general = {
+ disable_loading_bar = true;
+ hide_cursor = false;
+ no_fade_in = true;
+ };
+
+ background = [
+ {
+ path = "screenshot";
+ # path = ~/.config/hypr/wallpaper_effects/.wallpaper_current;
+ blur_passes = 4;
+ blur_size = 7;
+ }
+ ];
+
+ input-field = [
+ {
+ size = "200, 50";
+ position = "0, 0";
+ fade_on_empty = false;
+ font_color = "rgb(212, 190, 152)";
+ inner_color = "rgb(29, 32, 33)";
+ outer_color = "rgb(125, 174, 163)";
+ outline_thickness = 2;
+ rounding = 0;
+ placeholder_text = "🔒🔒🔒";
+ }
+ ];
+
+ animations = [
+ {
+ enabled = false;
+ }
+ ];
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/hypr/hyprpaper.nix b/modules/home-manager/hypr/hyprpaper.nix
new file mode 100644
index 0000000..f24f4c8
--- /dev/null
+++ b/modules/home-manager/hypr/hyprpaper.nix
@@ -0,0 +1,22 @@
+{ pkgs, lib, config, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ home.packages = [
+ pkgs.hyprpaper
+ pkgs.waypaper
+ ];
+
+ services.hyprpaper = {
+ enable = true;
+
+ settings = {
+ ipc = "on";
+ splash = false;
+
+ preload = [ "~/nixosconf/modules/home-manager/hypr/camdenyards.jpg" ];
+ wallpaper = [ ", ~/nixosconf/modules/home-manager/hypr/camdenyards.jpg" ];
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/hypr/input.nix b/modules/home-manager/hypr/input.nix
new file mode 100644
index 0000000..09fdb3e
--- /dev/null
+++ b/modules/home-manager/hypr/input.nix
@@ -0,0 +1,38 @@
+{ config, lib, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ wayland.windowManager.hyprland = {
+ settings = {
+ input = {
+ touchpad = {
+ natural_scroll = true;
+ };
+ accel_profile = "flat";
+ };
+ gesture = [
+ "3, horizontal, workspace,"
+ ];
+
+ device = [
+ { # xanathar touchpad
+ name = "syna32ce:00-06cb:ce17-touchpad";
+ sensitivity = 0;
+ }
+ { # vecna mouse
+ name = "razer-razer-deathadder-v2-x-hyperspeed-1";
+ sensitivity = -0.35;
+ }
+ { # vecna mouse depending on how it's feeling
+ name = "razer-razer-deathadder-v2-x-hyperspeed";
+ sensitivity = -0.35;
+ }
+ { # i can't believe its this finnicky
+ name = "razer-razer-deathadder-v2-x-hyperspeed-mouse";
+ sensitivity = -0.35;
+ }
+ ];
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/hypr/pyprland.toml b/modules/home-manager/hypr/pyprland.toml
new file mode 100644
index 0000000..62227e9
--- /dev/null
+++ b/modules/home-manager/hypr/pyprland.toml
@@ -0,0 +1,12 @@
+[pyprland]
+plugins = [
+ "scratchpads"
+]
+
+[scratchpads.kitty]
+unfocus = "hide"
+command = "kitty --class kitty-dropterm"
+class = "kitty-dropterm"
+size = "75% 60%"
+max_size = "1920px 100%"
+lazy = true \ No newline at end of file
diff --git a/modules/home-manager/hypr/rofi-hyprland.nix b/modules/home-manager/hypr/rofi-hyprland.nix
new file mode 100644
index 0000000..e3644f9
--- /dev/null
+++ b/modules/home-manager/hypr/rofi-hyprland.nix
@@ -0,0 +1,23 @@
+{ pkgs, lib, ... }:
+
+{
+ programs.rofi = {
+ enable = true;
+ package = pkgs.rofi;
+ theme = "gruvbox-dark-hard";
+ font = "JetBrains Mono 13";
+
+ plugins = with pkgs; [
+ rofi-calc
+ # rofi-vpn
+ ];
+ modes = [
+ "calc"
+ "window"
+ # {
+ # name = "vpn";
+ # path = lib.getExe pkgs.rofi-vpn;
+ # }
+ ];
+ };
+}
diff --git a/modules/home-manager/hypr/swaync.nix b/modules/home-manager/hypr/swaync.nix
new file mode 100644
index 0000000..dc857a7
--- /dev/null
+++ b/modules/home-manager/hypr/swaync.nix
@@ -0,0 +1,13 @@
+{ config, lib, ... }:
+
+{
+ config = lib.mkIf config.hyprland.enable {
+ services.swaync = {
+ enable = true;
+
+ settings = {
+
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/hypr/waybar-hyprland.nix b/modules/home-manager/hypr/waybar-hyprland.nix
new file mode 100644
index 0000000..bd0196b
--- /dev/null
+++ b/modules/home-manager/hypr/waybar-hyprland.nix
@@ -0,0 +1,44 @@
+{ config, lib, ... }:
+
+{
+ programs.waybar = {
+ enable = true;
+
+ settings = {
+ mainBar = {
+ layer = "top";
+ position = "top";
+ height = 15;
+
+ modules-left = [ "hyprland/workspaces" ];
+ modules-center = [ "hyprland/window" ];
+ modules-right = [ "pulseaudio" "battery" "clock" ];
+
+ "hyprland/window" = {
+ on-click = "rofi -show window";
+ };
+ };
+ };
+
+ style = ''
+ *{
+ border: none;
+ border-radius: 0;
+ font-family: "JetBrains Mono"
+ }
+
+ window#waybar {
+ background: #141617;
+ color: #D4BE98;
+ }
+
+ label.module {
+ padding: 0 10px;
+ }
+
+ #workspaces button {
+ color: #D4BE98;
+ }
+ '';
+ };
+}
diff --git a/modules/home-manager/kitty.nix b/modules/home-manager/kitty.nix
new file mode 100644
index 0000000..b7d9f0b
--- /dev/null
+++ b/modules/home-manager/kitty.nix
@@ -0,0 +1,27 @@
+{ pkgs, ... }:
+
+{
+ imports = [
+ ./fish.nix
+ ];
+
+ programs.kitty = {
+ enable = true;
+
+ enableGitIntegration = true;
+ font = {
+ package = pkgs.jetbrains-mono;
+ name = "Jetbrains Mono";
+ size = 10;
+ };
+
+ shellIntegration.enableFishIntegration = true;
+
+ themeFile = "GruvboxMaterialDarkHard";
+
+ settings = {
+ confirm_os_window_close = 0;
+ shell = "${pkgs.fish}/bin/fish";
+ };
+ };
+}
diff --git a/modules/home-manager/lazygit.nix b/modules/home-manager/lazygit.nix
new file mode 100644
index 0000000..e2f9018
--- /dev/null
+++ b/modules/home-manager/lazygit.nix
@@ -0,0 +1,13 @@
+{
+ programs.lazygit = {
+ enable = true;
+ settings = {
+ gui.theme = {
+ #lightTheme = true;
+ #activeBorderColor = [ "blue" "bold" ];
+ #inactiveBorderColor = [ "black" ];
+ #selectedLineBgColor = [ "default" ];
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/nvf.nix b/modules/home-manager/nvf.nix
new file mode 100644
index 0000000..0172a25
--- /dev/null
+++ b/modules/home-manager/nvf.nix
@@ -0,0 +1,115 @@
+{ pkgs, ... }:
+
+{
+ programs.nvf = {
+ enable = true;
+
+ settings.vim = {
+ viAlias = true;
+ vimAlias = true;
+
+ lineNumberMode = "relNumber";
+
+ options = {
+ tabstop = 2;
+ shiftwidth = 0;
+ termguicolors = true;
+ };
+
+ keymaps = [
+ {
+ key = "<leader>w";
+ mode = "n";
+ silent = true;
+ action = ":w<CR>";
+ }
+ {
+ key = "<leader>x";
+ mode = "n";
+ silent = true;
+ action = ":wq<CR>";
+ }
+ {
+ key = "<leader>ff";
+ mode = "n";
+ silent = true;
+ action = ":Telescope find_files<CR>";
+ }
+ {
+ key = "<C-d>";
+ mode = "n";
+ silent = true;
+ action = "<C-d>zz";
+ }
+ {
+ key = "<C-u>";
+ mode = "n";
+ silent = true;
+ action = "<C-u>zz";
+ }
+ {
+ key = "<leader>n";
+ mode = "n";
+ silent = true;
+ action = ":noh<CR>";
+ }
+ ];
+
+ lsp = {
+ enable = true;
+ servers.nixd.settings.nil.nix.autoArchive = true;
+ };
+
+ languages = {
+ enableTreesitter = true;
+
+ nix.enable = true;
+ rust.enable = true;
+ ruby.enable = true;
+ java.enable = true;
+ };
+
+ treesitter = {
+ enable = true;
+ # context.enable = true;
+ highlight.enable = true;
+ };
+
+ telescope.enable = true;
+
+ utility = {
+ motion = {
+ # hop.enable = true;
+ # leap.enable = true;
+ precognition.enable = true;
+ };
+ };
+
+ visuals = {
+ rainbow-delimiters.enable = true;
+ };
+
+ extraPlugins = {
+ gruvbox-material = {
+ package = pkgs.vimPlugins.gruvbox-material;
+ setup = ''
+ vim.o.background = "dark"
+ vim.g.gruvbox_material_background = "hard"
+ vim.cmd("colorscheme gruvbox-material")
+ '';
+ };
+ };
+
+ autocmds = [
+ {
+ event = [ "InsertEnter" ];
+ command = "set norelativenumber";
+ }
+ {
+ event = [ "InsertLeave" ];
+ command = "set relativenumber";
+ }
+ ];
+ };
+ };
+}
diff --git a/modules/home-manager/obs.nix b/modules/home-manager/obs.nix
new file mode 100644
index 0000000..8798b54
--- /dev/null
+++ b/modules/home-manager/obs.nix
@@ -0,0 +1,12 @@
+{ pkgs, ... }:
+
+{
+ programs.obs-studio = {
+ enable = true;
+
+ plugins = with pkgs.obs-studio-plugins; [
+ input-overlay
+ obs-pipewire-audio-capture
+ ];
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/rbw.nix b/modules/home-manager/rbw.nix
new file mode 100644
index 0000000..50ca563
--- /dev/null
+++ b/modules/home-manager/rbw.nix
@@ -0,0 +1,19 @@
+{ pkgs, ... }:
+
+{
+ programs.rbw = {
+ enable = true;
+ settings = {
+ email = "james.krinsky@gmail.com";
+ pinentry = pkgs.pinentry-qt;
+ base_url = "https://vault.bitwarden.com";
+ identity_url = "https://identity.bitwarden.com";
+ ui_url = "https://vault.bitwarden.com";
+ };
+ };
+
+ home.packages = [
+ pkgs.pinentry-qt
+ pkgs.rofi-rbw
+ ];
+} \ No newline at end of file
diff --git a/modules/home-manager/spicetify.nix b/modules/home-manager/spicetify.nix
new file mode 100644
index 0000000..2181827
--- /dev/null
+++ b/modules/home-manager/spicetify.nix
@@ -0,0 +1,27 @@
+{ pkgs, inputs, ... }:
+
+{
+ imports = [
+ inputs.spicetify.homeManagerModules.default
+ ];
+
+ programs.spicetify =
+ let
+ spicepkgs = inputs.spicetify.legacyPackages.${pkgs.system};
+ in
+ {
+ enable = true;
+ theme = spicepkgs.themes.sleek;
+ colorScheme = "Deep";
+
+ enabledExtensions = with spicepkgs.extensions; [
+ shuffle
+ ];
+ enabledCustomApps = with spicepkgs.apps; [
+
+ ];
+ enabledSnippets = with spicepkgs.snippets; [
+
+ ];
+ };
+}
diff --git a/modules/home-manager/spotify-player.nix b/modules/home-manager/spotify-player.nix
new file mode 100644
index 0000000..0af16d8
--- /dev/null
+++ b/modules/home-manager/spotify-player.nix
@@ -0,0 +1,7 @@
+{
+ programs.spotify-player = {
+ enable = true;
+
+
+ };
+}
diff --git a/modules/home-manager/vscodium.nix b/modules/home-manager/vscodium.nix
new file mode 100644
index 0000000..2ea2baf
--- /dev/null
+++ b/modules/home-manager/vscodium.nix
@@ -0,0 +1,47 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ programs.vscode = {
+ enable = true;
+ package = pkgs.vscodium;
+
+ profiles.default = {
+ userSettings = {
+ "workbench.colorTheme" = "Gruvbox Dark Hard";
+ "editor.fontFamily" = "JetBrains Mono";
+ "editor.fontSize" = 12;
+ "editor.fontLigatures" = true;
+ "vim.smartRelativeLine" = true;
+ "editor.lineNumbers" = "relative";
+ "editor.cursorSmoothCaretAnimation" = "on";
+ "editor.wordWrap" = "on";
+ "editor.bracketPairColorization.enabled" = true;
+ };
+
+ extensions = with pkgs.vscode-extensions; [
+ # languages
+ jnoortheen.nix-ide
+ tomoki1207.pdf
+ redhat.vscode-yaml
+ tamasfe.even-better-toml
+ redhat.java
+ rust-lang.rust-analyzer
+ shopify.ruby-lsp
+
+ # functionality extensions
+ wix.vscode-import-cost
+ ms-vscode-remote.remote-ssh
+ ms-vscode-remote.remote-ssh-edit
+ vscodevim.vim
+ alefragnani.project-manager
+ esbenp.prettier-vscode
+
+ # appearance extensions
+ mechatroner.rainbow-csv
+ vscode-icons-team.vscode-icons
+ jdinhlife.gruvbox
+ johnpapa.vscode-peacock
+ ];
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/home-manager/yazi.nix b/modules/home-manager/yazi.nix
new file mode 100644
index 0000000..3088c1f
--- /dev/null
+++ b/modules/home-manager/yazi.nix
@@ -0,0 +1,42 @@
+{ pkgs, ... }:
+
+{
+ programs.yazi = {
+ enable = true;
+ enableFishIntegration = true;
+
+ plugins = {
+ bypass = pkgs.yaziPlugins.bypass;
+ ouch = pkgs.yaziPlugins.ouch;
+ };
+
+ initLua = ''
+ '';
+
+ settings = {
+ mgr = {
+ show_hidden = true;
+
+ prepend_keymap = [
+ {
+ on = ["L"];
+ run = "plugin bypass";
+ }
+ {
+ on = ["H"];
+ run = "plugin bypass reverse";
+ }
+ ];
+ };
+
+ opener = {
+ edit = [
+ {
+ run = ''vi "$@"'';
+ block = true;
+ }
+ ];
+ };
+ };
+ };
+}
diff --git a/modules/home-manager/zen-browser.nix b/modules/home-manager/zen-browser.nix
new file mode 100644
index 0000000..46b3992
--- /dev/null
+++ b/modules/home-manager/zen-browser.nix
@@ -0,0 +1,41 @@
+{ inputs, pkgs, ... }:
+
+{
+ imports = [
+ inputs.zen-browser.homeModules.twilight
+ ];
+
+ programs.zen-browser = {
+ enable = true;
+
+ policies = {
+ Preferences = {
+
+ };
+
+ ExtensionSettings = {
+
+ };
+
+ AutofillAddressEnabled = true;
+ AutofillCreditCardEnabled = false;
+ DisableFeedbackCommands = true;
+ DisableFirefoxStudies = true;
+ DisablePocket = true;
+ DisableTelemetry = true;
+ DontCheckDefaultBrowser = true;
+ NoDefaultBookmarks = true;
+ OfferToSaveLogins = false;
+ EnableTrackingProtection = {
+ Value = true;
+ Locked = true;
+ Cryptomining = true;
+ Fingerprinting = true;
+ };
+ };
+
+ nativeMessagingHosts = [
+ pkgs.firefoxpwa
+ ];
+ };
+} \ No newline at end of file
diff --git a/modules/nixos/bluetooth.nix b/modules/nixos/bluetooth.nix
new file mode 100644
index 0000000..0d60d4d
--- /dev/null
+++ b/modules/nixos/bluetooth.nix
@@ -0,0 +1,9 @@
+{ pkgs, ... }:
+
+{
+ hardware.bluetooth.enable = true;
+ hardware.bluetooth.powerOnBoot = false;
+
+ environment.systemPackages = with pkgs; [
+ ];
+} \ No newline at end of file
diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix
new file mode 100644
index 0000000..3bf9ac6
--- /dev/null
+++ b/modules/nixos/default.nix
@@ -0,0 +1,66 @@
+{ pkgs, lib, config, ... }:
+
+{
+ imports = [
+ ./pipewire.nix
+ ./flatpak.nix
+ ./greetd.nix
+ ./xdg-portal.nix
+ ./bluetooth.nix
+ ./thunar.nix
+ ./gaming.nix
+ ./nix-ld.nix
+ ./nordvpn.nix
+ ];
+
+ users.users.jck.packages = with pkgs; [
+ pwvucontrol
+ nix-tree
+ lxqt.lxqt-policykit
+ lxqt.lxqt-archiver
+ rsync
+ killall
+ unzip
+ p7zip-rar
+ xsel
+ unar
+ unrar-wrapper
+ brightnessctl
+ ntfs3g
+ ];
+
+ programs.localsend.enable = true;
+
+ fonts.packages = with pkgs; [
+ nerd-fonts.jetbrains-mono
+ jetbrains-mono
+ ];
+
+ programs.nh = {
+ enable = true;
+ clean.enable = true;
+ clean.extraArgs = "--keep-since 3d --keep 3";
+ clean.dates = "daily";
+ flake = "/home/jck/nixosconf/";
+ };
+
+ services.printing = {
+ enable = true;
+ drivers = with pkgs; [
+ brlaser
+ gutenprint
+ brgenml1lpr
+ brgenml1cupswrapper
+ cnijfilter2
+ ];
+ };
+
+ services.avahi = {
+ enable = true;
+ nssmdns4 = true;
+ openFirewall = true;
+ };
+
+ programs.partition-manager.enable = true;
+ services.udisks2.enable = true;
+}
diff --git a/modules/nixos/flatpak.nix b/modules/nixos/flatpak.nix
new file mode 100644
index 0000000..c5f065a
--- /dev/null
+++ b/modules/nixos/flatpak.nix
@@ -0,0 +1,13 @@
+{ config, pkgs, lib, inputs, outputs, ... }:
+
+{
+ services.flatpak = {
+ enable = true;
+
+ packages = [
+ #"org.kde.kwrite"
+ ];
+
+ update.onActivation = true;
+ };
+}
diff --git a/modules/nixos/gaming.nix b/modules/nixos/gaming.nix
new file mode 100644
index 0000000..085dd43
--- /dev/null
+++ b/modules/nixos/gaming.nix
@@ -0,0 +1,19 @@
+{ pkgs, lib, config, ... }:
+
+{
+ options = {
+ gaming.enable = lib.mkEnableOption "enables gaming module";
+ };
+
+ imports = [
+ ./steam.nix
+ ];
+
+ config = lib.mkIf config.gaming.enable {
+ services.flatpak = {
+ packages = [
+ "org.vinegarhq.Sober"
+ ];
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/nixos/greetd.nix b/modules/nixos/greetd.nix
new file mode 100644
index 0000000..97980cb
--- /dev/null
+++ b/modules/nixos/greetd.nix
@@ -0,0 +1,18 @@
+{ config, pkgs, ... }:
+
+{
+ environment.systemPackages = with pkgs; [
+ tuigreet
+ seatd
+ ];
+
+ services.greetd = {
+ enable = true;
+
+ settings = {
+ default_session = {
+ command = "${pkgs.tuigreet}/bin/tuigreet --user-menu -t --asterisks -c Hyprland";
+ };
+ };
+ };
+} \ No newline at end of file
diff --git a/modules/nixos/nix-ld.nix b/modules/nixos/nix-ld.nix
new file mode 100644
index 0000000..f35d2ec
--- /dev/null
+++ b/modules/nixos/nix-ld.nix
@@ -0,0 +1,32 @@
+{ pkgs, ... }:
+
+{
+ programs.nix-ld = {
+ enable = true;
+ libraries = with pkgs; [
+ # List by default
+ zlib
+ zstd
+ stdenv.cc.cc
+ curl
+ openssl
+ attr
+ libssh
+ bzip2
+ libxml2
+ acl
+ libsodium
+ util-linux
+ xz
+ systemd
+ glib
+ gtk2
+
+ # other additions
+ jq
+ unzip
+ py7zr
+ # python3Full
+ ];
+ };
+} \ No newline at end of file
diff --git a/modules/nixos/nordvpn.nix b/modules/nixos/nordvpn.nix
new file mode 100644
index 0000000..ae99d98
--- /dev/null
+++ b/modules/nixos/nordvpn.nix
@@ -0,0 +1,7 @@
+{
+ chaotic.nordvpn.enable = true;
+ networking.firewall.checkReversePath = false;
+ networking.firewall.allowedTCPPorts = [ 443 ];
+ networking.firewall.allowedUDPPorts = [ 1194 ];
+}
+
diff --git a/modules/nixos/pipewire.nix b/modules/nixos/pipewire.nix
new file mode 100644
index 0000000..5eac9eb
--- /dev/null
+++ b/modules/nixos/pipewire.nix
@@ -0,0 +1,10 @@
+{
+ services.pipewire = {
+ enable = true;
+ alsa.enable = true;
+ alsa.support32Bit = true;
+ jack.enable = true;
+ pulse.enable = true;
+ socketActivation = true;
+ };
+}
diff --git a/modules/nixos/steam.nix b/modules/nixos/steam.nix
new file mode 100644
index 0000000..ed2619e
--- /dev/null
+++ b/modules/nixos/steam.nix
@@ -0,0 +1,19 @@
+{ config, pkgs, lib, inputs, ... }:
+
+{
+ config = lib.mkIf config.gaming.enable {
+ programs.steam = {
+ enable = true;
+ package = pkgs.steam;
+ protontricks.enable = true;
+ extest.enable = true;
+
+ extraCompatPackages = with pkgs; [
+ proton-ge-bin
+ mangohud
+ ];
+ };
+
+ programs.gamemode.enable = true;
+ };
+} \ No newline at end of file
diff --git a/modules/nixos/thunar.nix b/modules/nixos/thunar.nix
new file mode 100644
index 0000000..168387f
--- /dev/null
+++ b/modules/nixos/thunar.nix
@@ -0,0 +1,17 @@
+{ pkgs, ... }:
+
+{
+ programs.thunar = {
+ enable = true;
+
+ plugins = with pkgs.xfce; [
+ thunar-archive-plugin
+ thunar-media-tags-plugin
+ thunar-volman
+ ];
+ };
+
+ programs.xfconf.enable = true;
+ services.gvfs.enable = true;
+ services.tumbler.enable = true;
+} \ No newline at end of file
diff --git a/modules/nixos/xdg-portal.nix b/modules/nixos/xdg-portal.nix
new file mode 100644
index 0000000..7883eec
--- /dev/null
+++ b/modules/nixos/xdg-portal.nix
@@ -0,0 +1,19 @@
+{ pkgs, ... }:
+
+{
+ xdg.portal = {
+ enable = true;
+
+ config.common.default = "*";
+ # config = {
+ # common = {
+ # default = [ "hyprland" ];
+ # };
+ # };
+
+ extraPortals = with pkgs; [
+ xdg-desktop-portal-hyprland
+ xdg-desktop-portal-gtk
+ ];
+ };
+}