From 94f99ad3d4bb375d0d1296e4b2755057bd812fd9 Mon Sep 17 00:00:00 2001 From: scouckel Date: Wed, 26 Nov 2025 03:08:28 -0600 Subject: rebase --- README.md | 25 ++ flake.lock | 474 ++++++++++++++++++++++++++ flake.nix | 108 ++++++ hosts/tiamat/configuration.nix | 151 ++++++++ hosts/tiamat/hardware-configuration.nix | 40 +++ hosts/tiamat/home.nix | 92 +++++ hosts/vecna/configuration.nix | 132 +++++++ hosts/vecna/hardware-configuration.nix | 42 +++ hosts/vecna/home.nix | 89 +++++ hosts/xanathar/configuration.nix | 143 ++++++++ hosts/xanathar/hardware-configuration.nix | 40 +++ hosts/xanathar/home.nix | 86 +++++ modules/home-manager/default.nix | 71 ++++ modules/home-manager/fastfetch-logo.txt | 17 + modules/home-manager/fastfetch.nix | 61 ++++ modules/home-manager/fish.nix | 18 + modules/home-manager/gaming.nix | 37 ++ modules/home-manager/git.nix | 11 + modules/home-manager/hypr/autostart.nix | 14 + modules/home-manager/hypr/binds.nix | 93 +++++ modules/home-manager/hypr/camdenyards.jpg | Bin 0 -> 2850041 bytes modules/home-manager/hypr/decoration.nix | 28 ++ modules/home-manager/hypr/default.nix | 140 ++++++++ modules/home-manager/hypr/hypridle.nix | 26 ++ modules/home-manager/hypr/hyprlock.nix | 46 +++ modules/home-manager/hypr/hyprpaper.nix | 22 ++ modules/home-manager/hypr/input.nix | 38 +++ modules/home-manager/hypr/pyprland.toml | 12 + modules/home-manager/hypr/rofi-hyprland.nix | 23 ++ modules/home-manager/hypr/swaync.nix | 13 + modules/home-manager/hypr/waybar-hyprland.nix | 44 +++ modules/home-manager/kitty.nix | 27 ++ modules/home-manager/lazygit.nix | 13 + modules/home-manager/nvf.nix | 115 +++++++ modules/home-manager/obs.nix | 12 + modules/home-manager/rbw.nix | 19 ++ modules/home-manager/spicetify.nix | 27 ++ modules/home-manager/spotify-player.nix | 7 + modules/home-manager/vscodium.nix | 47 +++ modules/home-manager/yazi.nix | 42 +++ modules/home-manager/zen-browser.nix | 41 +++ modules/nixos/bluetooth.nix | 9 + modules/nixos/default.nix | 66 ++++ modules/nixos/flatpak.nix | 13 + modules/nixos/gaming.nix | 19 ++ modules/nixos/greetd.nix | 18 + modules/nixos/nix-ld.nix | 32 ++ modules/nixos/nordvpn.nix | 7 + modules/nixos/pipewire.nix | 10 + modules/nixos/steam.nix | 19 ++ modules/nixos/thunar.nix | 17 + modules/nixos/xdg-portal.nix | 19 ++ 52 files changed, 2715 insertions(+) create mode 100644 README.md create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hosts/tiamat/configuration.nix create mode 100644 hosts/tiamat/hardware-configuration.nix create mode 100644 hosts/tiamat/home.nix create mode 100644 hosts/vecna/configuration.nix create mode 100644 hosts/vecna/hardware-configuration.nix create mode 100644 hosts/vecna/home.nix create mode 100644 hosts/xanathar/configuration.nix create mode 100644 hosts/xanathar/hardware-configuration.nix create mode 100644 hosts/xanathar/home.nix create mode 100644 modules/home-manager/default.nix create mode 100644 modules/home-manager/fastfetch-logo.txt create mode 100644 modules/home-manager/fastfetch.nix create mode 100644 modules/home-manager/fish.nix create mode 100644 modules/home-manager/gaming.nix create mode 100644 modules/home-manager/git.nix create mode 100644 modules/home-manager/hypr/autostart.nix create mode 100644 modules/home-manager/hypr/binds.nix create mode 100644 modules/home-manager/hypr/camdenyards.jpg create mode 100644 modules/home-manager/hypr/decoration.nix create mode 100644 modules/home-manager/hypr/default.nix create mode 100644 modules/home-manager/hypr/hypridle.nix create mode 100644 modules/home-manager/hypr/hyprlock.nix create mode 100644 modules/home-manager/hypr/hyprpaper.nix create mode 100644 modules/home-manager/hypr/input.nix create mode 100644 modules/home-manager/hypr/pyprland.toml create mode 100644 modules/home-manager/hypr/rofi-hyprland.nix create mode 100644 modules/home-manager/hypr/swaync.nix create mode 100644 modules/home-manager/hypr/waybar-hyprland.nix create mode 100644 modules/home-manager/kitty.nix create mode 100644 modules/home-manager/lazygit.nix create mode 100644 modules/home-manager/nvf.nix create mode 100644 modules/home-manager/obs.nix create mode 100644 modules/home-manager/rbw.nix create mode 100644 modules/home-manager/spicetify.nix create mode 100644 modules/home-manager/spotify-player.nix create mode 100644 modules/home-manager/vscodium.nix create mode 100644 modules/home-manager/yazi.nix create mode 100644 modules/home-manager/zen-browser.nix create mode 100644 modules/nixos/bluetooth.nix create mode 100644 modules/nixos/default.nix create mode 100644 modules/nixos/flatpak.nix create mode 100644 modules/nixos/gaming.nix create mode 100644 modules/nixos/greetd.nix create mode 100644 modules/nixos/nix-ld.nix create mode 100644 modules/nixos/nordvpn.nix create mode 100644 modules/nixos/pipewire.nix create mode 100644 modules/nixos/steam.nix create mode 100644 modules/nixos/thunar.nix create mode 100644 modules/nixos/xdg-portal.nix 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..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..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..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 Binary files /dev/null and b/modules/home-manager/hypr/camdenyards.jpg 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 = "w"; + mode = "n"; + silent = true; + action = ":w"; + } + { + key = "x"; + mode = "n"; + silent = true; + action = ":wq"; + } + { + key = "ff"; + mode = "n"; + silent = true; + action = ":Telescope find_files"; + } + { + key = ""; + mode = "n"; + silent = true; + action = "zz"; + } + { + key = ""; + mode = "n"; + silent = true; + action = "zz"; + } + { + key = "n"; + mode = "n"; + silent = true; + action = ":noh"; + } + ]; + + 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 + ]; + }; +} -- cgit v1.3