From c5ed13b5118fc5db846bfc135582f8cfc970fecc Mon Sep 17 00:00:00 2001 From: "Reid \"reidlab" Date: Tue, 15 Oct 2024 19:51:27 -0700 Subject: [PATCH] Oops. thats a big commit --- README.md | 9 +- config/dunst.conf | 2 +- flake.lock | 374 +++++++++--------- flake.nix | 2 +- .../apple-macbook-air-9-1.nix | 12 +- hosts/goopnet-interface/default.nix | 9 +- hosts/goopnet-interface/hardware.nix | 7 - modules/desktop/batsignal.nix | 2 +- modules/desktop/clipse.nix | 3 +- modules/desktop/default.nix | 24 +- modules/desktop/gammastep.nix | 2 +- modules/desktop/hypridle.nix | 1 + modules/desktop/hyprland.nix | 13 +- modules/desktop/hyprlock.nix | 74 +++- modules/desktop/hyprpaper.nix | 28 -- modules/desktop/nwg-drawer.nix | 2 +- modules/desktop/sddm.nix | 3 +- modules/desktop/swww.nix | 28 ++ modules/desktop/themes/catppuccin/waybar.css | 2 + modules/desktop/waybar.nix | 54 +-- modules/desktop/wob.nix | 4 +- modules/fstrim.nix | 36 ++ modules/security.nix | 3 + modules/software/dev/git.nix | 1 + modules/software/system/wezterm.nix | 1 + 25 files changed, 393 insertions(+), 303 deletions(-) delete mode 100644 modules/desktop/hyprpaper.nix create mode 100644 modules/desktop/swww.nix create mode 100644 modules/fstrim.nix diff --git a/README.md b/README.md index 6389374..f535b47 100755 --- a/README.md +++ b/README.md @@ -15,10 +15,9 @@ each host should have these files: - `hardware.nix`, hardware configuration. ## todo - - move common config such as bootloader and networking settings to [`default.nix`](./default.nix) or some other common spot - multi architecture configuration ([nix-systems](https://github.com/nix-systems/nix-systems)?) - divide steam and gamemode? - - cursor size theme option - - sddm x11 support, too. or maybe just remove x11 - - hyprcursor - - ags/quickshell? \ No newline at end of file + - hidpi and cursor size option + - better theming for hyprlock, nwg-drawer, dunst + - why is hyprlock broken??? + - wallpaper cycling \ No newline at end of file diff --git a/config/dunst.conf b/config/dunst.conf index 63c019a..ffc6b82 100644 --- a/config/dunst.conf +++ b/config/dunst.conf @@ -23,7 +23,7 @@ progress_bar_frame_width = 1 progress_bar_min_width = 150 progress_bar_max_width = 300 separator_height = 2 -frame_width = 2 +frame_width = 1 corner_radius = 8 transparency = 1 gap_size = 8 diff --git a/flake.lock b/flake.lock index 520a366..2ea8f91 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,38 @@ { "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1728326504, + "narHash": "sha256-dQXAj+4d6neY7ldCiH6gNym3upP49PVxRzEPxXlD9Aw=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "65dd97b5d21e917295159bbef1d52e06963f4eb0", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, "base16-schemes": { "flake": false, "locked": { @@ -50,13 +83,51 @@ "type": "github" } }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, "hardware": { "locked": { - "lastModified": 1720737798, - "narHash": "sha256-G/OtEAts7ZUvW5lrGMXSb8HqRp2Jr9I7reBuvCOL54w=", + "lastModified": 1728729581, + "narHash": "sha256-oazkQ/z7r43YkDLLQdMg8oIB3CwWNb+2ZrYOxtLEWTQ=", "owner": "nixos", "repo": "nixos-hardware", - "rev": "c5013aa7ce2c7ec90acee5d965d950c8348db751", + "rev": "a8dd1b21995964b115b1e3ec639dd6ce24ab9806", "type": "github" }, "original": { @@ -72,11 +143,11 @@ ] }, "locked": { - "lastModified": 1721135958, - "narHash": "sha256-H548rpPMsn25LDKn1PCFmPxmWlClJJGnvdzImHkqjuY=", + "lastModified": 1728337164, + "narHash": "sha256-VdRTjJFyq4Q9U7Z/UoC2Q5jK8vSo6E86lHc2OanXtvc=", "owner": "nix-community", "repo": "home-manager", - "rev": "afd2021bedff2de92dfce0e257a3d03ae65c603d", + "rev": "038630363e7de57c36c417fd2f5d7c14773403e4", "type": "github" }, "original": { @@ -101,11 +172,11 @@ ] }, "locked": { - "lastModified": 1720108799, - "narHash": "sha256-AxRkTJlbB8r7aG6gvc7IaLhc2T9TO4/8uqanKRxukBQ=", + "lastModified": 1727821604, + "narHash": "sha256-hNw5J6xatedqytYowx0mJKgctjA4lQARZFdgnzM2RpM=", "owner": "hyprwm", "repo": "hyprcursor", - "rev": "a5c0d57325c5f0814c39110a70ca19c070ae9486", + "rev": "d60e1e01e6e6633ef1c87148b9137cc1dd39263d", "type": "github" }, "original": { @@ -122,11 +193,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1721162167, - "narHash": "sha256-seS+vRTrXWMBPUHUM0MYLd5Sg1JBICSzZX5daA/Vw+c=", + "lastModified": 1727257269, + "narHash": "sha256-b/j875k6RrxQLtbW+NCLw7NLToMd9KDYywjtUoihpq4=", "owner": "hyprwm", "repo": "hypridle", - "rev": "fc4e3bd2dccd3b2e816c7cbe2dca25fa5e83a4bd", + "rev": "cc23f97836adbba1abc8edd48169fb1f1f698c32", "type": "github" }, "original": { @@ -137,20 +208,23 @@ }, "hyprland": { "inputs": { + "aquamarine": "aquamarine", "hyprcursor": "hyprcursor", + "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang_2", "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner", "nixpkgs": "nixpkgs_3", + "pre-commit-hooks": "pre-commit-hooks", "systems": "systems_2", "xdph": "xdph" }, "locked": { - "lastModified": 1721248202, - "narHash": "sha256-VAhuQQ4EKbw/6z7K2IoR83+gXUdMksLWFQOhJNhSvQE=", + "lastModified": 1728507606, + "narHash": "sha256-Bt6aMwB63lmb8SqKLo6hKdi//camzM3KvJ5242gn+gQ=", "ref": "refs/heads/main", - "rev": "300228b503b36e5977b0d58713c5b4cf1f07b8a9", - "revCount": 4930, + "rev": "c4eb1940336cd88ca65ba65582ce104e49dfc7c9", + "revCount": 5324, "submodules": true, "type": "git", "url": "https://github.com/hyprwm/Hyprland" @@ -181,21 +255,19 @@ "inputs": { "nixpkgs": [ "hyprland", - "xdph", "nixpkgs" ], "systems": [ "hyprland", - "xdph", "systems" ] }, "locked": { - "lastModified": 1718746314, - "narHash": "sha256-HUklK5u86w2Yh9dOkk4FdsL8eehcOZ95jPhLixGDRQY=", + "lastModified": 1728345020, + "narHash": "sha256-xGbkc7U/Roe0/Cv3iKlzijIaFBNguasI31ynL2IlEoM=", "owner": "hyprwm", "repo": "hyprland-protocols", - "rev": "1b61f0093afff20ab44d88ad707aed8bf2215290", + "rev": "a7c183800e74f337753de186522b9017a07a8cee", "type": "github" }, "original": { @@ -220,11 +292,11 @@ ] }, "locked": { - "lastModified": 1720381373, - "narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=", + "lastModified": 1721324361, + "narHash": "sha256-BiJKO0IIdnSwHQBSrEJlKlFr753urkLE48wtt0UhNG4=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb", + "rev": "adbefbf49664a6c2c8bf36b6487fd31e3eb68086", "type": "github" }, "original": { @@ -249,11 +321,11 @@ ] }, "locked": { - "lastModified": 1720381373, - "narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=", + "lastModified": 1728168612, + "narHash": "sha256-AnB1KfiXINmuiW7BALYrKqcjCnsLZPifhb/7BsfPbns=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb", + "rev": "f054f2e44d6a0b74607a6bc0f52dba337a3db38e", "type": "github" }, "original": { @@ -278,40 +350,11 @@ ] }, "locked": { - "lastModified": 1720381373, - "narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=", + "lastModified": 1717881852, + "narHash": "sha256-XeeVoKHQgfKuXoP6q90sUqKyl7EYy3ol2dVZGM+Jj94=", "owner": "hyprwm", "repo": "hyprlang", - "rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlang_4": { - "inputs": { - "hyprutils": [ - "hyprpaper", - "hyprutils" - ], - "nixpkgs": [ - "hyprpaper", - "nixpkgs" - ], - "systems": [ - "hyprpaper", - "systems" - ] - }, - "locked": { - "lastModified": 1720381373, - "narHash": "sha256-lyC/EZdHULsaAKVryK11lgHY9u6pXr7qR4irnxNWC7k=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "5df0174fd09de4ac5475233d65ffc703e89b82eb", + "rev": "ec6938c66253429192274d612912649a0cfe4d28", "type": "github" }, "original": { @@ -342,28 +385,6 @@ "type": "github" } }, - "hyprpaper": { - "inputs": { - "hyprlang": "hyprlang_4", - "hyprutils": "hyprutils_4", - "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_5", - "systems": "systems_4" - }, - "locked": { - "lastModified": 1721226775, - "narHash": "sha256-dO+jd4i9vitOnSNgJSR6zjS2Gi/mDscLwfo5OY9geN0=", - "owner": "hyprwm", - "repo": "hyprpaper", - "rev": "cbc16f939fc0ac742ac681c86e9009b9d48e1bfc", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprpaper", - "type": "github" - } - }, "hyprutils": { "inputs": { "nixpkgs": [ @@ -376,11 +397,11 @@ ] }, "locked": { - "lastModified": 1721071737, - "narHash": "sha256-qmC9jGfbE4+EIBbbSAkrfR/p49wShjpv4/KztgE/P54=", + "lastModified": 1721324102, + "narHash": "sha256-WAZ0X6yJW1hFG6otkHBfyJDKRpNP5stsRqdEuHrFRpk=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "eb1ceff2b87f6820789249f63faa8e9dcb54d05f", + "rev": "962582a090bc233c4de9d9897f46794280288989", "type": "github" }, "original": { @@ -401,11 +422,11 @@ ] }, "locked": { - "lastModified": 1721071737, - "narHash": "sha256-qmC9jGfbE4+EIBbbSAkrfR/p49wShjpv4/KztgE/P54=", + "lastModified": 1727300645, + "narHash": "sha256-OvAtVLaSRPnbXzOwlR1fVqCXR7i+ICRX3aPMCdIiv+c=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "eb1ceff2b87f6820789249f63faa8e9dcb54d05f", + "rev": "3f5293432b6dc6a99f26aca2eba3876d2660665c", "type": "github" }, "original": { @@ -426,36 +447,11 @@ ] }, "locked": { - "lastModified": 1721324102, - "narHash": "sha256-WAZ0X6yJW1hFG6otkHBfyJDKRpNP5stsRqdEuHrFRpk=", + "lastModified": 1717881334, + "narHash": "sha256-a0inRgJhPL6v9v7RPM/rx1kbXdfe3xJA1c9z0ZkYnh4=", "owner": "hyprwm", "repo": "hyprutils", - "rev": "962582a090bc233c4de9d9897f46794280288989", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprutils_4": { - "inputs": { - "nixpkgs": [ - "hyprpaper", - "nixpkgs" - ], - "systems": [ - "hyprpaper", - "systems" - ] - }, - "locked": { - "lastModified": 1721071737, - "narHash": "sha256-qmC9jGfbE4+EIBbbSAkrfR/p49wShjpv4/KztgE/P54=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "eb1ceff2b87f6820789249f63faa8e9dcb54d05f", + "rev": "0693f9398ab693d89c9a0aa3b3d062dd61b7a60e", "type": "github" }, "original": { @@ -476,36 +472,11 @@ ] }, "locked": { - "lastModified": 1720215857, - "narHash": "sha256-JPdL+Qul+jEueAn8CARfcWP83eJgwkhMejQYfDvrgvU=", + "lastModified": 1726874836, + "narHash": "sha256-VKR0sf0PSNCB0wPHVKSAn41mCNVCnegWmgkrneKDhHM=", "owner": "hyprwm", "repo": "hyprwayland-scanner", - "rev": "d5fa094ca27e0039be5e94c0a80ae433145af8bb", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, - "hyprwayland-scanner_2": { - "inputs": { - "nixpkgs": [ - "hyprpaper", - "nixpkgs" - ], - "systems": [ - "hyprpaper", - "systems" - ] - }, - "locked": { - "lastModified": 1720215857, - "narHash": "sha256-JPdL+Qul+jEueAn8CARfcWP83eJgwkhMejQYfDvrgvU=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "d5fa094ca27e0039be5e94c0a80ae433145af8bb", + "rev": "500c81a9e1a76760371049a8d99e008ea77aa59e", "type": "github" }, "original": { @@ -564,13 +535,29 @@ "type": "github" } }, - "nixpkgs_2": { + "nixpkgs-stable": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1720386169, + "narHash": "sha256-NGKVY4PjzwAa4upkGtAMz1npHGoRzWotlSnVlqI40mo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "194846768975b7ad2c4988bdb82572c00222c0d7", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-24.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1721138476, + "narHash": "sha256-+W5eZOhhemLQxelojLxETfbFbc19NWawsXBlapYpqIA=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ad0b5eed1b6031efaed382844806550c3dcb4206", "type": "github" }, "original": { @@ -582,11 +569,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1728241625, + "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1", "type": "github" }, "original": { @@ -598,11 +585,11 @@ }, "nixpkgs_4": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", + "lastModified": 1717602782, + "narHash": "sha256-pL9jeus5QpX5R+9rsp3hhZ+uplVHscNJh8n8VpqscM0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "e8057b67ebf307f01bdcc8fba94d94f75039d1f6", "type": "github" }, "original": { @@ -614,15 +601,15 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", - "owner": "NixOS", + "lastModified": 1728241625, + "narHash": "sha256-yumd4fBc/hi8a9QgA9IT8vlQuLZ2oqhkJXHPKxH/tRw=", + "owner": "nixos", "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "rev": "c31898adf5a8ed202ce5bea9f347b1c6871f32d1", "type": "github" }, "original": { - "owner": "NixOS", + "owner": "nixos", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" @@ -632,31 +619,39 @@ "locked": { "lastModified": 1720957393, "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", - "owner": "nixos", + "owner": "NixOS", "repo": "nixpkgs", "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", "type": "github" }, "original": { - "owner": "nixos", + "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, - "nixpkgs_7": { + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, "locked": { - "lastModified": 1720957393, - "narHash": "sha256-oedh2RwpjEa+TNxhg5Je9Ch6d3W1NKi7DbRO1ziHemA=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "693bc46d169f5af9c992095736e82c3488bf7dbb", + "lastModified": 1728092656, + "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", "type": "github" }, "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", + "owner": "cachix", + "repo": "git-hooks.nix", "type": "github" } }, @@ -669,9 +664,8 @@ "hyprland": "hyprland", "hyprland-catppuccin": "hyprland-catppuccin", "hyprlock": "hyprlock", - "hyprpaper": "hyprpaper", "nix-colors": "nix-colors", - "nixpkgs": "nixpkgs_6", + "nixpkgs": "nixpkgs_5", "waybar": "waybar", "waybar-catppuccin": "waybar-catppuccin" } @@ -721,25 +715,10 @@ "type": "github" } }, - "systems_4": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, "waybar": { "inputs": { - "flake-compat": "flake-compat", - "nixpkgs": "nixpkgs_7" + "flake-compat": "flake-compat_2", + "nixpkgs": "nixpkgs_6" }, "locked": { "lastModified": 1721250245, @@ -773,11 +752,22 @@ }, "xdph": { "inputs": { - "hyprland-protocols": "hyprland-protocols", + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], "hyprlang": [ "hyprland", "hyprlang" ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], "nixpkgs": [ "hyprland", "nixpkgs" @@ -788,11 +778,11 @@ ] }, "locked": { - "lastModified": 1720194466, - "narHash": "sha256-Rizg9efi6ue95zOp0MeIV2ZedNo+5U9G2l6yirgBUnA=", + "lastModified": 1728166987, + "narHash": "sha256-w6dVTguAn9zJ+7aPOhBQgDz8bn6YZ7b56cY8Kg5HJRI=", "owner": "hyprwm", "repo": "xdg-desktop-portal-hyprland", - "rev": "b9b97e5ba23fe7bd5fa4df54696102e8aa863cf6", + "rev": "fb9c8d665af0588bb087f97d0f673ddf0d501787", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7eb5916..8c6503f 100644 --- a/flake.nix +++ b/flake.nix @@ -12,10 +12,10 @@ waybar.url = "github:Alexays/Waybar"; + # hypr suite hyprland.url = "git+https://github.com/hyprwm/Hyprland?submodules=1"; hyprlock.url = "github:hyprwm/hyprlock?rev=b407128caeb551ae808cf8d0fb653a252a271709"; hypridle.url = "github:hyprwm/hypridle"; - hyprpaper.url = "github:hyprwm/hyprpaper"; waybar-catppuccin.url = "github:catppuccin/waybar"; waybar-catppuccin.flake = false; diff --git a/hosts/goopnet-interface/apple-macbook-air-9-1.nix b/hosts/goopnet-interface/apple-macbook-air-9-1.nix index 6737950..e5ae767 100644 --- a/hosts/goopnet-interface/apple-macbook-air-9-1.nix +++ b/hosts/goopnet-interface/apple-macbook-air-9-1.nix @@ -10,6 +10,8 @@ services.power-profiles-daemon.enable = true; # manage fans for macbook devices services.mbpfan.enable = true; + # disable tiny-dfr module from the nixos-hardware module + hardware.apple-t2.enableTinyDfr = false; # better performance than the actual intel driver services.xserver.videoDrivers = [ "modesetting" ]; @@ -31,17 +33,17 @@ ${pkgs.kmod}/bin/modprobe brcmfmac_wcc ''; - # VA-API + # VA-API and opengl hardware.graphics = { extraPackages = with pkgs; [ intel-media-driver - intel-vaapi-driver + (intel-vaapi-driver.override { enableHybridCodec = true; }) libvdpau-va-gl ]; extraPackages32 = with pkgs.pkgsi686Linux; [ intel-media-driver - intel-vaapi-driver + (intel-vaapi-driver.override { enableHybridCodec = true; }) libvdpau-va-gl ]; }; @@ -49,8 +51,6 @@ environment.variables = { LIBVA_DRIVER_NAME= "iHD"; VDPAU_DRIVER = "va_gl"; - # VA-API on firefox - MOZ_DISABLE_RDD_SANDBOX = "1"; }; environment.systemPackages = with pkgs; [ intel-gpu-tools ]; @@ -60,4 +60,4 @@ "i915.enable_fbc=1" "i915.enable_gvt=1" ]; -} \ No newline at end of file +} diff --git a/hosts/goopnet-interface/default.nix b/hosts/goopnet-interface/default.nix index 5acb10c..ca36ac8 100755 --- a/hosts/goopnet-interface/default.nix +++ b/hosts/goopnet-interface/default.nix @@ -17,7 +17,7 @@ # debug strace ltrace lsof # apps - firefox qalculate-gtk krita inkscape onlyoffice-bin vlc nicotine-plus transmission_4-gtk + firefox qalculate-gtk krita inkscape onlyoffice-desktopeditors vlc nicotine-plus transmission_4-gtk font-manager # compatibility wineWowPackages.waylandFull winetricks # misc @@ -28,7 +28,7 @@ # none yet ]) ++ (with pkgs.gnome; [ # yay gnomeware!!!!!!!!!!!!!! yum - nautilus gnome-font-viewer gnome-disk-utility ghex pkgs.gnome-text-editor pkgs.baobab file-roller gnome-system-monitor loupe + nautilus gnome-disk-utility ghex pkgs.gnome-text-editor pkgs.baobab file-roller gnome-system-monitor loupe ]); modules = { @@ -48,8 +48,8 @@ hyprland.enable = true; hyprlock.enable = true; hypridle.enable = true; - hyprpaper.enable = true; + swww.enable = true; gnome-keyring.enable = true; dunst.enable = true; rofi.enable = true; @@ -88,7 +88,4 @@ tools.rbw.enable = true; }; }; - - networking.networkmanager.enable = true; - systemd.services.NetworkManager-wait-online.enable = false; } diff --git a/hosts/goopnet-interface/hardware.nix b/hosts/goopnet-interface/hardware.nix index 18f19f6..f04b0c9 100755 --- a/hosts/goopnet-interface/hardware.nix +++ b/hosts/goopnet-interface/hardware.nix @@ -20,13 +20,6 @@ boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - - boot.loader = { - # use systemd-boot over grub - grub.enable = lib.mkForce false; - systemd-boot.enable = true; - efi.canTouchEfiVariables = true; - }; fileSystems."/" = { device = "/dev/disk/by-uuid/0f09afdc-88e4-4764-818b-77828931278f"; diff --git a/modules/desktop/batsignal.nix b/modules/desktop/batsignal.nix index c8020bf..bdf9e0a 100644 --- a/modules/desktop/batsignal.nix +++ b/modules/desktop/batsignal.nix @@ -13,7 +13,7 @@ in { }; config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = [ + modules.desktop.execOnStart = [ # -w 20 -c 10 -d 5 -- set battery levels # -p -- notify on plug/unplug # -m 2 -- set interval to 2 seconds diff --git a/modules/desktop/clipse.nix b/modules/desktop/clipse.nix index 2cf47db..28e6123 100644 --- a/modules/desktop/clipse.nix +++ b/modules/desktop/clipse.nix @@ -16,11 +16,10 @@ in { # runtime dependencies user.packages = with pkgs; [ wl-clipboard ]; + modules.desktop.execOnStart = [ "${lib.getExe cfg.package} -listen-shell" ]; hm.wayland.windowManager.hyprland.settings = let class = "clipse"; in { - exec-once = [ "${lib.getExe cfg.package} -listen-shell" ]; - windowrulev2 = [ "float, class:^${class}$" "size 622 652, class:^${class}$" diff --git a/modules/desktop/default.nix b/modules/desktop/default.nix index c80020d..4bcc269 100644 --- a/modules/desktop/default.nix +++ b/modules/desktop/default.nix @@ -9,6 +9,11 @@ in { type = types.nullOr (types.enum ["x11" "wayland"]); description = "What display protocol to use"; }; + execOnStart = mkOption { + type = types.listOf types.str; + description = "List of commands to run on startup"; + default = null; + }; }; config = mkMerge [ @@ -16,8 +21,25 @@ in { modules.desktop.fonts.enable = true; modules.desktop.fonts.baseFonts = true; - # mounting and trash functionality, the recommended solution for most file managers + # bootloader + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # enable networking + networking.networkmanager.enable = true; + + # speed up boot + # https://discourse.nixos.org/t/boot-faster-by-disabling-udev-settle-and-nm-wait-online/6339 + systemd.services.systemd-udev-settle.enable = false; + systemd.services.NetworkManager-wait-online.enable = false; + + # mounting, trash, and mtp support services.gvfs.enable = true; + + # various evironment variables that are needed for everything desktop related + environment.sessionVariables = { + MOZ_DISABLE_RDD_SANDBOX = "1"; + }; } (mkIf (cfg.envProto == "wayland") { environment.sessionVariables = { diff --git a/modules/desktop/gammastep.nix b/modules/desktop/gammastep.nix index 0e2a8fc..cda329a 100644 --- a/modules/desktop/gammastep.nix +++ b/modules/desktop/gammastep.nix @@ -9,7 +9,7 @@ in { }; config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = [ "${pkgs.gammastep}/bin/gammastep-indicator" ]; + modules.desktop.execOnStart = [ "${pkgs.gammastep}/bin/gammastep-indicator" ]; hm.services.gammastep = { enable = true; # portland, oregon diff --git a/modules/desktop/hypridle.nix b/modules/desktop/hypridle.nix index 37a6c5c..a9304ed 100644 --- a/modules/desktop/hypridle.nix +++ b/modules/desktop/hypridle.nix @@ -14,6 +14,7 @@ in { }; config = mkIf cfg.enable { + hm.home.packages = [ cfg.package ]; hm.services.hypridle = let hyprctl = "${config.modules.desktop.hyprland.package}/bin/hyprctl"; in { diff --git a/modules/desktop/hyprland.nix b/modules/desktop/hyprland.nix index 4d13820..7613c31 100644 --- a/modules/desktop/hyprland.nix +++ b/modules/desktop/hyprland.nix @@ -179,7 +179,7 @@ in { "${lib.getExe pkgs.networkmanagerapplet}" # network applet "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1" # polkit agent "${lib.getExe pkgs.wl-clip-persist} --clipboard regular" # to fix wl clipboards disappearing - ]; + ] ++ config.modules.desktop.execOnStart; env = [ "XCURSOR_THEME,${config.modules.desktop.themes.cursorTheme.name}" @@ -269,14 +269,17 @@ in { blur = { enabled = true; - size = 4; - passes = 2; + size = 10; + passes = 3; + # popups and special workspace have blur disabled by default popups = true; + special = true; }; drop_shadow = true; - shadow_range = 4; + shadow_range = 6; shadow_render_power = 3; + shadow_ignore_window = true; }; animations = { @@ -308,6 +311,8 @@ in { gestures = { workspace_swipe = true; + workspace_swipe_min_speed_to_force = 0; + workspace_swipe_cancel_ratio = 0.1; }; misc = { diff --git a/modules/desktop/hyprlock.nix b/modules/desktop/hyprlock.nix index ddfb8c1..e5dc572 100644 --- a/modules/desktop/hyprlock.nix +++ b/modules/desktop/hyprlock.nix @@ -15,6 +15,7 @@ in { config = mkIf cfg.enable { security.pam.services.hyprlock.text = "auth include login"; + hm.home.packages = [ cfg.package ]; hm.programs.hyprlock = with config.colorScheme.palette; { enable = true; package = cfg.package; @@ -26,7 +27,6 @@ in { no_fade_out = true; text_trim = false; }; - background = [ { path = toString ../../assets/lockscreen.png; @@ -35,46 +35,82 @@ in { blur_size = 6; } ]; + shape = [ + { + size = "280, 280"; + color = "rgb(${base00})"; + rounding = 48; + position = "0, 45"; + halign = "center"; valign = "center"; + + shadow_passes = 3; + shadow_size = 8; + } + ]; label = [ { - text = "cmd[update:1000] echo \"$(date +'%H:%M')\""; - font_size = 58; - color = "rgb(${base05})"; + position = "0, 105"; + text = "cmd[update:1000] echo \"$(date +'%H')\""; + font_size = 78; + color = "rgb(f5c2e7)"; # catppuccin pink font_family = config.modules.desktop.fonts.fonts.sansSerif.family; - position = "0, 30"; - halign = "center"; - valign = "center"; + halign = "center"; valign = "center"; } { - text = "cmd[update:1000] echo \"$(date +'%A %B %e')\""; + position = "0, 20"; + text = "cmd[update:1000] echo \"$(date +'%M')\""; + font_size = 78; + color = "rgb(${base05})"; + font_family = config.modules.desktop.fonts.fonts.sansSerif.family; + halign = "center"; valign = "center"; + } + { + position = "0, -45"; + text = "cmd[update:1000] echo \"$(date +'%A, %d %B')\""; font_size = 14; color = "rgb(${base05})"; font_family = config.modules.desktop.fonts.fonts.sansSerif.family; - position = "0, 10"; - halign = "center"; - valign = "center"; + halign = "center"; valign = "center"; + } + { + position = "-15, -13"; + halign = "right"; valign = "top"; + color = "rgb(${base05})"; + font_size = 14; + font_family = "Font Awesome 6 Free"; + text = ""; + + shadow_passes = 3; + shadow_size = 8; + } + { + position = "-41, -10"; + halign = "right"; valign = "top"; + color = "rgb(${base05})"; + font_size = 14; + font_family = config.modules.desktop.fonts.fonts.sansSerif.family; + text = "cmd[update:4000] echo \"$(cat /sys/class/power_supply/BAT0/capacity)%\""; + + shadow_passes = 3; + shadow_size = 8; } ]; - input-field = [ { - size = "300, 28"; + position = "0, -140"; + size = "280, 48"; outline_thickness = 2; - dots_size = 0.2; + dots_size = 0.3; fade_on_empty = false; placeholder_text = ""; - outer_color = "rgb(${base0E})"; + outer_color = "rgb(${base00})"; inner_color = "rgb(${base00})"; font_color = "rgb(${base05})"; check_color = "rgb(${base02})"; fail_color = "rgb(${base08})"; capslock_color = "rgb(${base09})"; - - position = "0, -30"; - halign = "center"; - valign = "center"; } ]; }; diff --git a/modules/desktop/hyprpaper.nix b/modules/desktop/hyprpaper.nix deleted file mode 100644 index 8e00d79..0000000 --- a/modules/desktop/hyprpaper.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ lib, config, inputs, system, ... }: - -with lib; -let - cfg = config.modules.desktop.hyprpaper; -in { - options.modules.desktop.hyprpaper = { - enable = mkEnableOption "Enable hyprpaper, a wayland wallpaper utility"; - package = mkOption { - type = types.package; - default = inputs.hyprpaper.packages.${system}.hyprpaper; - example = "pkgs.hyprpaper"; - }; - }; - - config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe cfg.package}" ]; - hm.xdg.configFile."hypr/hyprpaper.conf" = let - img = ../../assets/wallpaper.png; - in { - text = '' - preload = ${img} - wallpaper = ,${img} - splash = false - ''; - }; - }; -} diff --git a/modules/desktop/nwg-drawer.nix b/modules/desktop/nwg-drawer.nix index 558f07d..7da4367 100644 --- a/modules/desktop/nwg-drawer.nix +++ b/modules/desktop/nwg-drawer.nix @@ -9,7 +9,7 @@ in { }; config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus" ]; + modules.desktop.execOnStart = [ "${lib.getExe pkgs.nwg-drawer} -r -nofs -nocats -ovl -term wezterm -spacing 15 -fm nautilus" ]; hm.xdg.configFile."nwg-drawer/drawer.css".text = builtins.concatStringsSep "\n" [ "@import \"${inputs.waybar-catppuccin}/themes/mocha.css\";" (lib.readFile ../../config/nwg-drawer.css) diff --git a/modules/desktop/sddm.nix b/modules/desktop/sddm.nix index 9b4b4ce..9067a87 100644 --- a/modules/desktop/sddm.nix +++ b/modules/desktop/sddm.nix @@ -9,7 +9,6 @@ in { }; config = mkIf cfg.enable { - # unsure if it's correct to put this in `environment.systemPackages` environment.systemPackages = with pkgs; [ config.modules.desktop.themes.sddmTheme.package config.modules.desktop.themes.cursorTheme.package @@ -19,7 +18,7 @@ in { ]; services.displayManager.sddm = { enable = true; - wayland.enable = true; + wayland.enable = config.modules.desktop.envProto == "wayland"; theme = config.modules.desktop.themes.sddmTheme.name; settings = { Theme = { diff --git a/modules/desktop/swww.nix b/modules/desktop/swww.nix new file mode 100644 index 0000000..cbcaff6 --- /dev/null +++ b/modules/desktop/swww.nix @@ -0,0 +1,28 @@ +{ lib, config, inputs, system, pkgs, ... }: + +with lib; +let + cfg = config.modules.desktop.swww; + + img = ../../assets/wallpaper.png; +in { + options.modules.desktop.swww = { + enable = mkEnableOption "Enable swww, a Solution to your Wayland Wallpaper Woes"; + package = mkOption { + type = types.package; + default = pkgs.swww; + example = "pkgs.swww"; + }; + startScript = mkOption { + type = types.package; + default = pkgs.writeScript "swww-start" '' + ${cfg.package}/bin/swww-daemon & + ${lib.getExe cfg.package} img "${img}" --transition-type none + ''; + }; + }; + + config = mkIf cfg.enable { + modules.desktop.execOnStart = [ "${cfg.startScript}" ]; + }; +} \ No newline at end of file diff --git a/modules/desktop/themes/catppuccin/waybar.css b/modules/desktop/themes/catppuccin/waybar.css index bb72f31..d805dd0 100644 --- a/modules/desktop/themes/catppuccin/waybar.css +++ b/modules/desktop/themes/catppuccin/waybar.css @@ -18,6 +18,8 @@ window#waybar { font-family: CozetteVector, monospace, FontAwesome, Noto Sans CJK; font-size: 13px; font-style: normal; + + border: 1px solid @surface0; } #workspaces, .modules-right box { diff --git a/modules/desktop/waybar.nix b/modules/desktop/waybar.nix index f21fa05..d3d3200 100644 --- a/modules/desktop/waybar.nix +++ b/modules/desktop/waybar.nix @@ -14,7 +14,13 @@ in { }; config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = [ "${lib.getExe cfg.package}" ]; + # runtime requirements for modules + user.packages = with pkgs; [ + # mpris + playerctl + ]; + + modules.desktop.execOnStart = [ "${lib.getExe cfg.package}" ]; hm.programs.waybar = { enable = true; package = cfg.package; @@ -54,11 +60,11 @@ in { modules = [ "pulseaudio" "backlight" - #"network" "cpu" "memory" "power-profiles-daemon" "battery" + "custom/weather" "privacy" ]; }; @@ -70,18 +76,18 @@ in { }; "custom/power" = let powerSelect = pkgs.writeScript "power-menu" '' - cmd=$(echo 'shutdown|reboot|lock|exit Hyprland' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }') + cmd=$(echo '⏻ shutdown|↻ reboot| lock|⎋ exit desktop environment' | ${lib.getExe pkgs.rofi-wayland} -dmenu -sep '|' -i -p 'what to do ?' -theme-str 'window { height: 132px; }') case "$cmd" in - shutdown) - shutdown now + "⏻ shutdown") + poweroff ;; - reboot) + "↻ reboot") reboot ;; - lock) - ${lib.getExe config.modules.desktop.hyprlock.package} + " lock") + ${pkgs.systemd}/bin/loginctl lock-session ;; - "exit Hyprland") + "⎋ exit desktop environment") ${config.modules.desktop.hyprland.package}/bin/hyprctl dispatch exit ;; esac @@ -139,17 +145,6 @@ in { }; separate-outputs = true; }; - #network = { - # format = ""; - # format-ethernet = ""; - # format-wifi = " {signalStrength}%"; - # format-disconnected = ""; - # tooltip-format = "{ifname} via {gwaddr}"; - # tooltip-format-wifi = "connected to {essid}"; - # tooltip-format-ethernet = "{ifname}"; - # tooltip-format-disconnected = "Disconnected"; - # on-click = "${pkgs.networkmanagerapplet}/bin/nm-connection-editor"; - #}; pulseaudio = { format = "{icon} {volume}%"; format-bluetooth = "{icon} {volume}%"; @@ -215,16 +210,15 @@ in { ]; }; mpris = { - format = "♫ {dynamic}"; + format = "{status_icon} {dynamic}"; format-paused = "{status_icon} {dynamic}"; dynamic-order = [ "title" ]; tooltip-format = "{player}: {dynamic}"; interval = 1; status-icons = { - playing = "▶"; - paused = "⏸"; + playing = "⏸"; + paused = "▶"; }; - player = "firefox"; }; clock = { format = "{:%H:%M}"; @@ -252,6 +246,18 @@ in { }; }; }; + tray = { + icon-size = 16; + spacing = 4; + }; + "custom/weather" = { + format = "{}°"; + tooltip = true; + interval = 3600; + # doxxing live stream + exec = "${lib.getExe pkgs.wttrbar} --location 'Corvallis, Oregon, United States' --hide-conditions --fahrenheit --mph"; + return-type = "json"; + }; }; }; }; diff --git a/modules/desktop/wob.nix b/modules/desktop/wob.nix index de88a37..443f0b0 100644 --- a/modules/desktop/wob.nix +++ b/modules/desktop/wob.nix @@ -14,12 +14,12 @@ in { }; config = mkIf cfg.enable { - hm.wayland.windowManager.hyprland.settings.exec-once = let + modules.desktop.execOnStart = let path = cfg.sockPath; script = pkgs.writeScript "launch-wob" '' rm -f ${path} && mkfifo ${path} && tail -f ${path} | ${lib.getExe pkgs.wob} ''; - in [ script ]; + in [ (toString script) ]; hm.services.wob = { enable = true; settings = { diff --git a/modules/fstrim.nix b/modules/fstrim.nix new file mode 100644 index 0000000..a0e92b1 --- /dev/null +++ b/modules/fstrim.nix @@ -0,0 +1,36 @@ +{ config, lib, ... }: + +with lib; +{ + # if lvm is enabled, then tell it to issue discards + # (this is good for SSDs and has almost no downsides on HDDs, so + # it's a good idea to enable it unconditionally) + environment.etc."lvm/lvm.conf".text = mkIf config.services.lvm.enable '' + devices { + issue_discards = 1 + } + ''; + + # discard blocks that are not in use by the filesystem, good for SSDs + services.fstrim = { + # we may enable this unconditionally across all systems becuase it's performance + # impact is negligible on systems without a SSD - which means it's a no-op with + # almost no downsides aside from the service firing once per week + enable = true; + + # the default value, good enough for average-load systems + interval = "weekly"; + }; + + # tweak fstim service to run only when on AC power + # and to be nice to other processes + # (this is a good idea for any service that runs periodically) + systemd.services.fstrim = { + unitConfig.ConditionACPower = true; + + serviceConfig = { + Nice = 19; + IOSchedulingClass = "idle"; + }; + }; +} \ No newline at end of file diff --git a/modules/security.nix b/modules/security.nix index 32fbd61..41b10a0 100755 --- a/modules/security.nix +++ b/modules/security.nix @@ -12,6 +12,9 @@ in { boot = { tmp.useTmpfs = lib.mkDefault true; tmp.cleanOnBoot = lib.mkDefault (!config.boot.tmp.useTmpfs); + + # disable kernel parameter editing on boot + loader.systemd-boot.editor = false; kernel.sysctl = { # magic sysrq key, allows low-level commands through keyboard input diff --git a/modules/software/dev/git.nix b/modules/software/dev/git.nix index 3db2265..012a0ed 100644 --- a/modules/software/dev/git.nix +++ b/modules/software/dev/git.nix @@ -54,5 +54,6 @@ in { init.defaultBranch = "main"; }; }; + hm.programs.gh.enable = true; }; } diff --git a/modules/software/system/wezterm.nix b/modules/software/system/wezterm.nix index 04f349e..ba094b6 100644 --- a/modules/software/system/wezterm.nix +++ b/modules/software/system/wezterm.nix @@ -20,6 +20,7 @@ in { local config = {} + config.front_end = "WebGpu" config.font = wezterm.font '${fonts.monospaceBitmap.family}' config.font_size = ${toString fonts.monospaceBitmap.size} config.freetype_load_flags = 'MONOCHROME'