From 022e2849963950d9e1accf93d2e37cb7ea043dbb Mon Sep 17 00:00:00 2001 From: alexion Date: Mon, 12 Oct 2026 11:13:20 -0400 Subject: [PATCH] refactor(flake): move custom packages to overlay --- .../nixos/modules/desktop/session/waybar.nix | 37 +++++-------------- configs/nixos/modules/shell/pi/default.nix | 11 ++++-- src/dotfiles/hosts.nix | 4 ++ src/flake/default.nix | 11 ++++++ src/flake/overlay.nix | 7 ++++ src/flake/packages/default.nix | 8 ++++ src/flake/packages/pi-coding-agent.nix | 8 ++++ src/flake/packages/waybar.nix | 28 ++++++++++++++ 8 files changed, 83 insertions(+), 31 deletions(-) create mode 100644 src/flake/overlay.nix create mode 100644 src/flake/packages/default.nix create mode 100644 src/flake/packages/pi-coding-agent.nix create mode 100644 src/flake/packages/waybar.nix diff --git a/configs/nixos/modules/desktop/session/waybar.nix b/configs/nixos/modules/desktop/session/waybar.nix index 459bc96..5ca28aa 100644 --- a/configs/nixos/modules/desktop/session/waybar.nix +++ b/configs/nixos/modules/desktop/session/waybar.nix @@ -21,7 +21,15 @@ let modules = lib.attrByPath [ config.networking.hostName ] { } config.registry.waybar; in { - options.modules.desktop.session.waybar.enable = lib.mkEnableOption "the Waybar status bar"; + options.modules.desktop.session.waybar = { + enable = lib.mkEnableOption "the Waybar status bar"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.alexion.waybar; + description = "Waybar package used by the status bar."; + }; + }; config = lib.mkIf config.modules.desktop.session.waybar.enable { # A symbols font backs the module glyphs, so pango falls back to it for the @@ -30,32 +38,7 @@ in home-manager.users.${config.user.name}.programs.waybar = { enable = true; - # Waybar 0.15.0 sends old Hyprland workspace dispatch commands. - # Use the fix commit until a release includes upstream PR #5013. - package = pkgs.waybar.overrideAttrs { - src = pkgs.fetchFromGitHub { - owner = "Alexays"; - repo = "Waybar"; - rev = "05945748dccce28bf96d26d8f64a9e69a8dd49ba"; - hash = "sha256-51R3mIt8cLNvh/X5qe9vOqeJCj0U9KRyemVE5y+OhiU="; - }; - - postUnpack = - let - libcava = pkgs.fetchFromGitHub { - owner = "LukashonakV"; - repo = "cava"; - tag = "0.10.7"; - hash = "sha256-zkyj1vBzHtoypX4Bxdh1Vmwh967DKKxN751v79hzmgQ="; - }; - in - '' - pushd "$sourceRoot" - cp -R --no-preserve=mode,ownership ${libcava} subprojects/cava-0.10.7 - patchShebangs . - popd - ''; - }; + package = config.modules.desktop.session.waybar.package; # A user service bound to graphical-session.target, which uwsm activates, # so the bar comes up with the session and no compositor exec-once. diff --git a/configs/nixos/modules/shell/pi/default.nix b/configs/nixos/modules/shell/pi/default.nix index a50de4d..d5ee5d0 100644 --- a/configs/nixos/modules/shell/pi/default.nix +++ b/configs/nixos/modules/shell/pi/default.nix @@ -14,16 +14,19 @@ in { options.modules.shell.pi = { enable = lib.mkEnableOption "Pi, a terminal coding agent, configured through home-manager"; + + package = lib.mkOption { + type = lib.types.package; + default = pkgs.alexion.pi-coding-agent; + description = "Pi package installed for the primary user."; + }; }; config = lib.mkIf config.modules.shell.pi.enable { home-manager.users.${user} = { programs.pi-coding-agent = { enable = true; - package = pkgs.pi-coding-agent.overrideAttrs { - src = ../../../../../third_party/pi; - patches = [ ]; - }; + package = config.modules.shell.pi.package; settings = { defaultProvider = "openai-codex"; diff --git a/src/dotfiles/hosts.nix b/src/dotfiles/hosts.nix index 5ce6e53..d5d2ea9 100644 --- a/src/dotfiles/hosts.nix +++ b/src/dotfiles/hosts.nix @@ -24,6 +24,10 @@ let inputs.sops-nix.nixosModules.sops inputs.stylix.nixosModules.stylix + { + nixpkgs.overlays = [ specialArgs.self.overlays.default ]; + } + repositoryModules guestModules diff --git a/src/flake/default.nix b/src/flake/default.nix index 76f2576..b3b1eaf 100644 --- a/src/flake/default.nix +++ b/src/flake/default.nix @@ -5,7 +5,18 @@ root, system, }: +let + overlay = import ./overlay.nix { inherit root; }; + pkgs = import inputs.nixpkgs { + inherit system; + overlays = [ overlay ]; + }; +in { + overlays.default = overlay; + + packages.${system} = pkgs.alexion; + nixosConfigurations = import ../dotfiles { inherit inputs diff --git a/src/flake/overlay.nix b/src/flake/overlay.nix new file mode 100644 index 0000000..c93db45 --- /dev/null +++ b/src/flake/overlay.nix @@ -0,0 +1,7 @@ +{ root }: +final: _prev: { + alexion = import ./packages { + pkgs = final; + inherit root; + }; +} diff --git a/src/flake/packages/default.nix b/src/flake/packages/default.nix new file mode 100644 index 0000000..30078bc --- /dev/null +++ b/src/flake/packages/default.nix @@ -0,0 +1,8 @@ +{ pkgs, root }: +{ + pi-coding-agent = pkgs.callPackage ./pi-coding-agent.nix { + inherit root; + }; + + waybar = pkgs.callPackage ./waybar.nix { }; +} diff --git a/src/flake/packages/pi-coding-agent.nix b/src/flake/packages/pi-coding-agent.nix new file mode 100644 index 0000000..ce2b5df --- /dev/null +++ b/src/flake/packages/pi-coding-agent.nix @@ -0,0 +1,8 @@ +{ + pi-coding-agent, + root, +}: +pi-coding-agent.overrideAttrs { + src = root + "/third_party/pi"; + patches = [ ]; +} diff --git a/src/flake/packages/waybar.nix b/src/flake/packages/waybar.nix new file mode 100644 index 0000000..09a8bdc --- /dev/null +++ b/src/flake/packages/waybar.nix @@ -0,0 +1,28 @@ +{ + fetchFromGitHub, + waybar, +}: +waybar.overrideAttrs { + src = fetchFromGitHub { + owner = "Alexays"; + repo = "Waybar"; + rev = "05945748dccce28bf96d26d8f64a9e69a8dd49ba"; + hash = "sha256-51R3mIt8cLNvh/X5qe9vOqeJCj0U9KRyemVE5y+OhiU="; + }; + + postUnpack = + let + libcava = fetchFromGitHub { + owner = "LukashonakV"; + repo = "cava"; + tag = "0.10.7"; + hash = "sha256-zkyj1vBzHtoypX4Bxdh1Vmwh967DKKxN751v79hzmgQ="; + }; + in + '' + pushd "$sourceRoot" + cp -R --no-preserve=mode,ownership ${libcava} subprojects/cava-0.10.7 + patchShebangs . + popd + ''; +}