hyprland: expose cacheable package set
This commit is contained in:
19
.github/workflows/cachix.yml
vendored
19
.github/workflows/cachix.yml
vendored
@@ -1,15 +1,23 @@
|
|||||||
name: Build and Push Cachix (imalison-taffybar)
|
name: Build and Push Cachix
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
paths:
|
paths:
|
||||||
- "dotfiles/config/taffybar/**"
|
- "dotfiles/config/taffybar/**"
|
||||||
|
- "dotfiles/config/hypr/**"
|
||||||
|
- "dotfiles/lib/bin/hypr_*"
|
||||||
|
- "dotfiles/lib/bin/hypr*"
|
||||||
|
- "nixos/**"
|
||||||
- ".github/workflows/cachix.yml"
|
- ".github/workflows/cachix.yml"
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [master]
|
branches: [master]
|
||||||
paths:
|
paths:
|
||||||
- "dotfiles/config/taffybar/**"
|
- "dotfiles/config/taffybar/**"
|
||||||
|
- "dotfiles/config/hypr/**"
|
||||||
|
- "dotfiles/lib/bin/hypr_*"
|
||||||
|
- "dotfiles/lib/bin/hypr*"
|
||||||
|
- "nixos/**"
|
||||||
- ".github/workflows/cachix.yml"
|
- ".github/workflows/cachix.yml"
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
|
|
||||||
@@ -87,3 +95,12 @@ jobs:
|
|||||||
--no-link \
|
--no-link \
|
||||||
--print-build-logs \
|
--print-build-logs \
|
||||||
./dotfiles/config/taffybar#defaultPackage.x86_64-linux
|
./dotfiles/config/taffybar#defaultPackage.x86_64-linux
|
||||||
|
|
||||||
|
- name: Build Hyprland stuff
|
||||||
|
run: |
|
||||||
|
set -euxo pipefail
|
||||||
|
nix build \
|
||||||
|
--no-link \
|
||||||
|
--print-build-logs \
|
||||||
|
./nixos#hyprland-stuff \
|
||||||
|
--override-input railbird-secrets path:./nixos/ci/railbird-secrets-stub
|
||||||
|
|||||||
408
nixos/flake/hyprland-stuff.nix
Normal file
408
nixos/flake/hyprland-stuff.nix
Normal file
@@ -0,0 +1,408 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib ? pkgs.lib,
|
||||||
|
hyprlandConfigDir ? ../../dotfiles/config/hypr,
|
||||||
|
}: let
|
||||||
|
system = pkgs.stdenv.hostPlatform.system;
|
||||||
|
hyprlandInput = inputs.hyprland;
|
||||||
|
hyprlandInputPkgs = import hyprlandInput.inputs.nixpkgs {inherit system;};
|
||||||
|
makeHyprlandGlaze = glaze:
|
||||||
|
(glaze.override {
|
||||||
|
enableSIMD = false;
|
||||||
|
}).overrideAttrs (old: {
|
||||||
|
cmakeFlags =
|
||||||
|
(old.cmakeFlags or [])
|
||||||
|
++ [
|
||||||
|
"-Dglaze_DEVELOPER_MODE=OFF"
|
||||||
|
"-Dglaze_ENABLE_FUZZING=OFF"
|
||||||
|
"-DBUILD_TESTING=OFF"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
avoidHyprlandGccIce = glaze: package:
|
||||||
|
(package.override {
|
||||||
|
stdenv = pkgs.clangStdenv;
|
||||||
|
}).overrideAttrs (old: {
|
||||||
|
buildInputs =
|
||||||
|
map
|
||||||
|
(input:
|
||||||
|
if (input.pname or null) == "glaze"
|
||||||
|
then makeHyprlandGlaze glaze
|
||||||
|
else input)
|
||||||
|
(old.buildInputs or []);
|
||||||
|
});
|
||||||
|
avoidOverlayHyprlandGccIce = final: package:
|
||||||
|
(package.override {
|
||||||
|
stdenv = final.clangStdenv;
|
||||||
|
}).overrideAttrs (old: {
|
||||||
|
buildInputs =
|
||||||
|
map
|
||||||
|
(input:
|
||||||
|
if (input.pname or null) == "glaze"
|
||||||
|
then makeHyprlandGlaze final.glaze
|
||||||
|
else input)
|
||||||
|
(old.buildInputs or []);
|
||||||
|
});
|
||||||
|
hyprlandGccIceOverlay = final: prev: {
|
||||||
|
glaze = makeHyprlandGlaze prev.glaze;
|
||||||
|
hyprland = avoidOverlayHyprlandGccIce final prev.hyprland;
|
||||||
|
hyprland-unwrapped = final.hyprland.override {wrapRuntimeDeps = false;};
|
||||||
|
hyprland-with-tests = final.hyprland.override {withTests = true;};
|
||||||
|
};
|
||||||
|
# GCC 15.2 ICEs while compiling Hyprland 0.55 on this pin. Keep the
|
||||||
|
# Hyprland/plugin pin set intact and build Hyprland itself with Clang.
|
||||||
|
baseHyprlandPackage = (avoidHyprlandGccIce hyprlandInputPkgs.glaze hyprlandInput.packages.${system}.hyprland).overrideAttrs (_: {
|
||||||
|
# Clang 21 can segfault in LLVM's Live DEBUG_VALUE analysis while compiling
|
||||||
|
# ConfigValues.cpp when this build runs in parallel.
|
||||||
|
enableParallelBuilding = false;
|
||||||
|
});
|
||||||
|
hyprlandPluginsForBase = pkgs.callPackage "${pkgs.path}/pkgs/applications/window-managers/hyprwm/hyprland-plugins" {
|
||||||
|
hyprland = baseHyprlandPackage;
|
||||||
|
};
|
||||||
|
cleanupStaleGraphicalSession = pkgs.writeShellScript "cleanup-stale-graphical-session" ''
|
||||||
|
set -u
|
||||||
|
|
||||||
|
# Only clean targets that are plainly stale. If a compositor is still
|
||||||
|
# running, let the active session own its own shutdown path.
|
||||||
|
if ${pkgs.procps}/bin/pgrep -u "$(${pkgs.coreutils}/bin/id -u)" -f '(^|/)(Hyprland|\.Hyprland-wrapped|river|kwin_wayland)( |$)' >/dev/null 2>&1; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
${pkgs.systemd}/bin/systemctl --user stop \
|
||||||
|
hyprland-session.target \
|
||||||
|
river-xmonad-session.target \
|
||||||
|
graphical-session.target \
|
||||||
|
graphical-session-pre.target \
|
||||||
|
tray.target \
|
||||||
|
2>/dev/null || true
|
||||||
|
|
||||||
|
${pkgs.systemd}/bin/systemctl --user unset-environment \
|
||||||
|
WAYLAND_DISPLAY \
|
||||||
|
DISPLAY \
|
||||||
|
XAUTHORITY \
|
||||||
|
HYPRLAND_INSTANCE_SIGNATURE \
|
||||||
|
XDG_CURRENT_DESKTOP \
|
||||||
|
XDG_SESSION_DESKTOP \
|
||||||
|
XDG_SESSION_TYPE \
|
||||||
|
IMALISON_SESSION_TYPE \
|
||||||
|
IMALISON_WINDOW_MANAGER \
|
||||||
|
2>/dev/null || true
|
||||||
|
|
||||||
|
${pkgs.systemd}/bin/systemctl --user reset-failed 2>/dev/null || true
|
||||||
|
'';
|
||||||
|
makeHyprlandLuaPackage = package:
|
||||||
|
(pkgs.symlinkJoin {
|
||||||
|
name = "${package.name}-lua-config";
|
||||||
|
inherit (package) version;
|
||||||
|
paths = [package];
|
||||||
|
meta =
|
||||||
|
builtins.removeAttrs (package.meta or {}) ["outputsToInstall"]
|
||||||
|
// {
|
||||||
|
mainProgram = package.meta.mainProgram or "Hyprland";
|
||||||
|
};
|
||||||
|
passthru =
|
||||||
|
(package.passthru or {})
|
||||||
|
// {
|
||||||
|
providedSessions = package.passthru.providedSessions or ["hyprland"];
|
||||||
|
};
|
||||||
|
postBuild = ''
|
||||||
|
mkdir -p "$out/bin" "$out/share/wayland-sessions"
|
||||||
|
printf '%s\n' \
|
||||||
|
'#!${pkgs.runtimeShell}' \
|
||||||
|
'nvidia_drm_device="/dev/dri/by-path/pci-0000:01:00.0-card"' \
|
||||||
|
'intel_drm_device="/dev/dri/by-path/pci-0000:00:02.0-card"' \
|
||||||
|
'if [ -e "$nvidia_drm_device" ] && [ -e "$intel_drm_device" ]; then' \
|
||||||
|
' export AQ_DRM_DEVICES="$nvidia_drm_device:$intel_drm_device"' \
|
||||||
|
'fi' \
|
||||||
|
'config_path="''${XDG_CONFIG_HOME:-$HOME/.config}/hypr/hyprland.lua"' \
|
||||||
|
'exec "${package}/bin/start-hyprland" --path "${package}/bin/Hyprland" -- --config "$config_path" "$@"' \
|
||||||
|
> "$out/bin/start-hyprland-lua"
|
||||||
|
chmod +x "$out/bin/start-hyprland-lua"
|
||||||
|
|
||||||
|
printf '%s\n' \
|
||||||
|
'#!${pkgs.runtimeShell}' \
|
||||||
|
'${cleanupStaleGraphicalSession}' \
|
||||||
|
'exec ${pkgs.uwsm}/bin/uwsm start -g -1 -e -D Hyprland hyprland.desktop' \
|
||||||
|
> "$out/bin/start-hyprland-uwsm-clean"
|
||||||
|
chmod +x "$out/bin/start-hyprland-uwsm-clean"
|
||||||
|
|
||||||
|
rm -f "$out/share/wayland-sessions/hyprland.desktop"
|
||||||
|
substitute \
|
||||||
|
"${package}/share/wayland-sessions/hyprland.desktop" \
|
||||||
|
"$out/share/wayland-sessions/hyprland.desktop" \
|
||||||
|
--replace-fail \
|
||||||
|
"Exec=${package}/bin/start-hyprland" \
|
||||||
|
"Exec=$out/bin/start-hyprland-lua"
|
||||||
|
|
||||||
|
rm -f "$out/share/wayland-sessions/hyprland-uwsm.desktop"
|
||||||
|
substitute \
|
||||||
|
"${package}/share/wayland-sessions/hyprland-uwsm.desktop" \
|
||||||
|
"$out/share/wayland-sessions/hyprland-uwsm.desktop" \
|
||||||
|
--replace-fail \
|
||||||
|
"Exec=uwsm start -e -D Hyprland hyprland.desktop" \
|
||||||
|
"Exec=$out/bin/start-hyprland-uwsm-clean"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
// {
|
||||||
|
override = {enableXWayland ? true, ...} @ args:
|
||||||
|
makeHyprlandLuaPackage (package.override args);
|
||||||
|
overrideAttrs = f: makeHyprlandLuaPackage (package.overrideAttrs f);
|
||||||
|
};
|
||||||
|
hyprlandPackage = makeHyprlandLuaPackage baseHyprlandPackage;
|
||||||
|
enableHyprglass = false;
|
||||||
|
hyprglass = pkgs.callPackage ../packages/hyprglass {
|
||||||
|
src = inputs.hyprglass;
|
||||||
|
hyprland = baseHyprlandPackage;
|
||||||
|
aquamarine = inputs.aquamarine.packages.${system}.aquamarine;
|
||||||
|
hyprcursor = inputs.hyprcursor.packages.${system}.hyprcursor;
|
||||||
|
hyprgraphics = inputs.hyprgraphics.packages.${system}.hyprgraphics;
|
||||||
|
hyprlang = inputs.hyprlang.packages.${system}.hyprlang;
|
||||||
|
hyprutils = inputs.hyprutils.packages.${system}.hyprutils;
|
||||||
|
};
|
||||||
|
hyprwobbly = (pkgs.callPackage "${inputs.hyprwobbly}/default.nix" {}).overrideAttrs (old: {
|
||||||
|
patches =
|
||||||
|
(old.patches or [])
|
||||||
|
++ [
|
||||||
|
../packages/hyprwobbly-safe-geometry-and-idle-timer.patch
|
||||||
|
];
|
||||||
|
});
|
||||||
|
hyprexpo = inputs.hyprexpo.packages.${system}.hyprexpo;
|
||||||
|
hyprwinview = hyprlandPluginsForBase.mkHyprlandPlugin {
|
||||||
|
pluginName = "hyprwinview";
|
||||||
|
version = "0.1.0";
|
||||||
|
src = inputs.hyprwinview;
|
||||||
|
inherit (baseHyprlandPackage) nativeBuildInputs;
|
||||||
|
buildInputs = [pkgs.librsvg];
|
||||||
|
meta = {
|
||||||
|
description = "A window overview plugin for Hyprland";
|
||||||
|
homepage = "https://github.com/colonelpanic8/hyprwinview";
|
||||||
|
license = lib.licenses.bsd3;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyprWorkspaceHistory = hyprlandPluginsForBase.mkHyprlandPlugin {
|
||||||
|
pluginName = "hypr-workspace-history";
|
||||||
|
version = "0.1.0";
|
||||||
|
src = inputs.hypr-workspace-history;
|
||||||
|
inherit (baseHyprlandPackage) nativeBuildInputs;
|
||||||
|
meta = {
|
||||||
|
description = "Workspace history cycling plugin for Hyprland";
|
||||||
|
homepage = "https://github.com/colonelpanic8/hypr-workspace-history";
|
||||||
|
license = lib.licenses.bsd3;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyprtasking = pkgs.gcc14Stdenv.mkDerivation {
|
||||||
|
pname = "hyprtasking";
|
||||||
|
version = "0.1.0-unstable-${inputs.hyprtasking.shortRev or "dirty"}";
|
||||||
|
src = inputs.hyprtasking;
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
nativeBuildInputs =
|
||||||
|
[
|
||||||
|
pkgs.pkg-config
|
||||||
|
pkgs.meson
|
||||||
|
pkgs.ninja
|
||||||
|
]
|
||||||
|
++ baseHyprlandPackage.nativeBuildInputs;
|
||||||
|
buildInputs = [baseHyprlandPackage] ++ baseHyprlandPackage.buildInputs;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "Powerful workspace management plugin for Hyprland";
|
||||||
|
homepage = "https://github.com/raybbian/hyprtasking";
|
||||||
|
license = lib.licenses.bsd3;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyprDynamicCursors = pkgs.gcc14Stdenv.mkDerivation {
|
||||||
|
pname = "hypr-dynamic-cursors";
|
||||||
|
version = "0-unstable-${inputs.hypr-dynamic-cursors.shortRev or "dirty"}";
|
||||||
|
src = inputs.hypr-dynamic-cursors;
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
nativeBuildInputs =
|
||||||
|
baseHyprlandPackage.nativeBuildInputs
|
||||||
|
++ [
|
||||||
|
baseHyprlandPackage
|
||||||
|
pkgs.pkg-config
|
||||||
|
];
|
||||||
|
buildInputs = [(lib.getDev baseHyprlandPackage)] ++ baseHyprlandPackage.buildInputs;
|
||||||
|
|
||||||
|
dontConfigure = true;
|
||||||
|
dontUseCmakeConfigure = true;
|
||||||
|
dontUseMesonConfigure = true;
|
||||||
|
dontUseNinjaBuild = true;
|
||||||
|
dontUseNinjaInstall = true;
|
||||||
|
|
||||||
|
buildPhase = ''
|
||||||
|
runHook preBuild
|
||||||
|
make
|
||||||
|
runHook postBuild
|
||||||
|
'';
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -Dm755 out/dynamic-cursors.so "$out/lib/libhypr-dynamic-cursors.so"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "A plugin to make Hyprland cursor movement more realistic";
|
||||||
|
homepage = "https://github.com/VirtCode/hypr-dynamic-cursors";
|
||||||
|
license = lib.licenses.bsd3;
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyprNStack = pkgs.stdenv.mkDerivation {
|
||||||
|
pname = "hyprNStack";
|
||||||
|
version = "0-unstable-${inputs.hyprNStack.shortRev or "dirty"}";
|
||||||
|
|
||||||
|
src = inputs.hyprNStack;
|
||||||
|
|
||||||
|
strictDeps = true;
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.pkg-config
|
||||||
|
];
|
||||||
|
buildInputs =
|
||||||
|
[
|
||||||
|
baseHyprlandPackage
|
||||||
|
]
|
||||||
|
++ baseHyprlandPackage.buildInputs;
|
||||||
|
|
||||||
|
dontStrip = true;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
install -Dm755 nstackLayoutPlugin.so "$out/lib/libhyprNStack.so"
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "N-stack layout plugin for Hyprland";
|
||||||
|
homepage = "https://github.com/zakk4223/hyprNStack";
|
||||||
|
license = lib.licenses.bsd3;
|
||||||
|
platforms = baseHyprlandPackage.meta.platforms;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
hyprlandPluginPackages =
|
||||||
|
[
|
||||||
|
hyprNStack
|
||||||
|
hyprexpo
|
||||||
|
hyprwinview
|
||||||
|
hyprWorkspaceHistory
|
||||||
|
hyprtasking
|
||||||
|
hyprDynamicCursors
|
||||||
|
hyprwobbly
|
||||||
|
]
|
||||||
|
++ lib.optionals enableHyprglass [hyprglass];
|
||||||
|
llvmNmCompat = pkgs.writeShellApplication {
|
||||||
|
name = "llvm-nm";
|
||||||
|
runtimeInputs = [pkgs.binutils];
|
||||||
|
text = ''
|
||||||
|
exec nm "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hyprRofiWindow = pkgs.writeShellApplication {
|
||||||
|
name = "hypr_rofi_window";
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.python3
|
||||||
|
pkgs.rofi
|
||||||
|
hyprlandPackage
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
exec python3 ${../../dotfiles/lib/bin/hypr_rofi_window} "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hyprShellUi = pkgs.writeShellApplication {
|
||||||
|
name = "hypr_shell_ui";
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.rofi
|
||||||
|
hyprRofiWindow
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
exec ${../../dotfiles/lib/bin/hypr_shell_ui} "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hyprRofiLayout = pkgs.writeShellApplication {
|
||||||
|
name = "hypr_rofi_layout";
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.coreutils
|
||||||
|
pkgs.findutils
|
||||||
|
pkgs.gawk
|
||||||
|
pkgs.rofi
|
||||||
|
hyprlandPackage
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
exec ${../../dotfiles/lib/bin/hypr_rofi_layout} "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hyprRofiAction = pkgs.writeShellApplication {
|
||||||
|
name = "hypr_rofi_action";
|
||||||
|
runtimeInputs = [
|
||||||
|
pkgs.libnotify
|
||||||
|
pkgs.python3
|
||||||
|
pkgs.rofi
|
||||||
|
hyprlandPackage
|
||||||
|
];
|
||||||
|
text = ''
|
||||||
|
exec python3 ${../../dotfiles/lib/bin/hypr_rofi_action} "$@"
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
hyprlandConfigSyntax = import ../checks/hyprland-config-syntax {
|
||||||
|
inherit pkgs hyprlandConfigDir;
|
||||||
|
};
|
||||||
|
hyprlandStuffPaths =
|
||||||
|
[
|
||||||
|
hyprlandPackage
|
||||||
|
llvmNmCompat
|
||||||
|
hyprRofiLayout
|
||||||
|
hyprRofiAction
|
||||||
|
hyprRofiWindow
|
||||||
|
hyprShellUi
|
||||||
|
]
|
||||||
|
++ hyprlandPluginPackages;
|
||||||
|
hyprlandStuffPathStrings = map builtins.toString (hyprlandStuffPaths ++ [hyprlandConfigSyntax]);
|
||||||
|
hyprlandStuff = pkgs.symlinkJoin {
|
||||||
|
name = "imalison-hyprland-stuff";
|
||||||
|
paths = hyprlandStuffPaths;
|
||||||
|
postBuild = ''
|
||||||
|
mkdir -p "$out/nix-support"
|
||||||
|
printf '%s\n' ${lib.escapeShellArgs hyprlandStuffPathStrings} > "$out/nix-support/hyprland-store-paths"
|
||||||
|
'';
|
||||||
|
passthru = {
|
||||||
|
inherit
|
||||||
|
baseHyprlandPackage
|
||||||
|
hyprlandPackage
|
||||||
|
hyprlandPluginPackages
|
||||||
|
hyprlandConfigSyntax
|
||||||
|
;
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
description = "Ivan Malison's Hyprland package, plugins, scripts, and Lua config syntax check";
|
||||||
|
platforms = lib.platforms.linux;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
inherit
|
||||||
|
baseHyprlandPackage
|
||||||
|
cleanupStaleGraphicalSession
|
||||||
|
hyprDynamicCursors
|
||||||
|
hyprNStack
|
||||||
|
hyprRofiAction
|
||||||
|
hyprRofiLayout
|
||||||
|
hyprRofiWindow
|
||||||
|
hyprShellUi
|
||||||
|
hyprWorkspaceHistory
|
||||||
|
hyprglass
|
||||||
|
hyprlandConfigSyntax
|
||||||
|
hyprlandGccIceOverlay
|
||||||
|
hyprlandPackage
|
||||||
|
hyprlandPluginPackages
|
||||||
|
hyprlandStuff
|
||||||
|
hyprtasking
|
||||||
|
hyprwinview
|
||||||
|
hyprwobbly
|
||||||
|
hyprexpo
|
||||||
|
llvmNmCompat
|
||||||
|
;
|
||||||
|
}
|
||||||
@@ -17,16 +17,9 @@
|
|||||||
inherit pkgs system;
|
inherit pkgs system;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
};
|
};
|
||||||
hyprglass = pkgs.callPackage ../packages/hyprglass {
|
hyprlandStuffPackages = import ./hyprland-stuff.nix {
|
||||||
src = inputs.hyprglass;
|
inherit pkgs inputs lib;
|
||||||
hyprland = inputs.hyprland.packages.${system}.hyprland;
|
|
||||||
aquamarine = inputs.aquamarine.packages.${system}.aquamarine;
|
|
||||||
hyprcursor = inputs.hyprcursor.packages.${system}.hyprcursor;
|
|
||||||
hyprgraphics = inputs.hyprgraphics.packages.${system}.hyprgraphics;
|
|
||||||
hyprlang = inputs.hyprlang.packages.${system}.hyprlang;
|
|
||||||
hyprutils = inputs.hyprutils.packages.${system}.hyprutils;
|
|
||||||
};
|
};
|
||||||
hyprexpo = inputs.hyprexpo.packages.${system}.hyprexpo;
|
|
||||||
tangledConfig = dotfilesOrgApi.org-agenda-custom-config;
|
tangledConfig = dotfilesOrgApi.org-agenda-custom-config;
|
||||||
|
|
||||||
# Import container build logic
|
# Import container build logic
|
||||||
@@ -42,11 +35,13 @@ in {
|
|||||||
kat-org-agenda-api = containerLib.containers.kat;
|
kat-org-agenda-api = containerLib.containers.kat;
|
||||||
}
|
}
|
||||||
// lib.optionalAttrs pkgs.stdenv.isLinux {
|
// lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
hyprNStack = inputs.hyprNStack.packages.${system}.hyprNStack;
|
hyprland-stuff = hyprlandStuffPackages.hyprlandStuff;
|
||||||
hyprexpo-lua = hyprexpo;
|
hyprland-lua = hyprlandStuffPackages.hyprlandPackage;
|
||||||
hyprwinview = inputs.hyprwinview.packages.${system}.hyprwinview;
|
hyprNStack = hyprlandStuffPackages.hyprNStack;
|
||||||
hypr-workspace-history = inputs.hypr-workspace-history.packages.${system}.hypr-workspace-history;
|
hyprexpo-lua = hyprlandStuffPackages.hyprexpo;
|
||||||
inherit hyprglass;
|
hyprwinview = hyprlandStuffPackages.hyprwinview;
|
||||||
|
hypr-workspace-history = hyprlandStuffPackages.hyprWorkspaceHistory;
|
||||||
|
hyprglass = hyprlandStuffPackages.hyprglass;
|
||||||
};
|
};
|
||||||
|
|
||||||
checks =
|
checks =
|
||||||
@@ -60,15 +55,13 @@ in {
|
|||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
// lib.optionalAttrs pkgs.stdenv.isLinux {
|
// lib.optionalAttrs pkgs.stdenv.isLinux {
|
||||||
hyprNStack = inputs.hyprNStack.packages.${system}.hyprNStack;
|
hyprNStack = hyprlandStuffPackages.hyprNStack;
|
||||||
hyprexpo-lua = hyprexpo;
|
hyprexpo-lua = hyprlandStuffPackages.hyprexpo;
|
||||||
hyprwinview = inputs.hyprwinview.packages.${system}.hyprwinview;
|
hyprwinview = hyprlandStuffPackages.hyprwinview;
|
||||||
hypr-workspace-history = inputs.hypr-workspace-history.packages.${system}.hypr-workspace-history;
|
hypr-workspace-history = hyprlandStuffPackages.hyprWorkspaceHistory;
|
||||||
inherit hyprglass;
|
hyprglass = hyprlandStuffPackages.hyprglass;
|
||||||
hyprland-config-syntax = import ../checks/hyprland-config-syntax {
|
hyprland-config-syntax = hyprlandStuffPackages.hyprlandConfigSyntax;
|
||||||
inherit pkgs;
|
hyprland-stuff = hyprlandStuffPackages.hyprlandStuff;
|
||||||
hyprlandConfigDir = ../../dotfiles/config/hypr;
|
|
||||||
};
|
|
||||||
# Hyprland 0.54 currently segfaults in --verify-config before it can
|
# Hyprland 0.54 currently segfaults in --verify-config before it can
|
||||||
# validate even an empty config in this environment. Keep coverage in
|
# validate even an empty config in this environment. Keep coverage in
|
||||||
# hyprland-config-syntax until the upstream verifier is usable again.
|
# hyprland-config-syntax until the upstream verifier is usable again.
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
|
switch-substituters := "https://cache.nixos.org https://cache.nixos-cuda.org https://cuda-maintainers.cachix.org https://ai.cachix.org https://nix-community.cachix.org https://numtide.cachix.org https://colonelpanic8-dotfiles.cachix.org https://taffybar.cachix.org https://codex-cli.cachix.org https://claude-code.cachix.org"
|
||||||
|
switch-trusted-public-keys := "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY= cache.nixos-cuda.org:74DUi4Ye579gUqzH4ziL9IyiJBlDpMRn9MBN8oNan9M= cuda-maintainers.cachix.org-1:0dq3bujKpuEPMCX6U4WylrUDZ9JyUG0VpVZa7CNfq5E= ai.cachix.org-1:N9dzRK+alWwoKXQlnn0H6aUx0lU/mspIoz8hMvGvbbc= nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs= numtide.cachix.org-1:2ps1kLBUWjxIneOy1Ik6cQjb41X0iXVXeHigGmycPPE= colonelpanic8-dotfiles.cachix.org-1:O6GF3nptpeMFapX29okzO92eSWXR36zqW6ZF2C8P0eQ= taffybar.cachix.org-1:beZotJ1nVEsAnJxa3lWn0zwzZM7oeXmGh4ADRpHeeIo= codex-cli.cachix.org-1:1Br3H1hHoRYG22n//cGKJOk3cQXgYobUel6O8DgSing= claude-code.cachix.org-1:YeXf2aNu7UTX8Vwrze0za1WEDS+4DuI2kVeWEE4fsRk="
|
||||||
|
|
||||||
switch *args:
|
switch *args:
|
||||||
case "$(systemctl show -P ActiveState nixos-upgrade.service 2>/dev/null)" in active|activating|reloading) /run/wrappers/bin/sudo systemctl stop nixos-upgrade.service;; esac
|
case "$(systemctl show -P ActiveState nixos-upgrade.service 2>/dev/null)" in active|activating|reloading) /run/wrappers/bin/sudo systemctl stop nixos-upgrade.service;; esac
|
||||||
/run/wrappers/bin/sudo nixos-rebuild switch --flake ".#" --impure {{args}}
|
/run/wrappers/bin/sudo nixos-rebuild switch --flake ".#" --impure --option substituters '{{switch-substituters}}' --option trusted-public-keys '{{switch-trusted-public-keys}}' {{args}}
|
||||||
|
|
||||||
populate-cachix cache="colonelpanic8-dotfiles" host=`hostname` *args:
|
populate-cachix cache="colonelpanic8-dotfiles" host=`hostname` *args:
|
||||||
store_path="$(nix build --no-link --print-out-paths ".#nixosConfigurations.{{host}}.config.system.build.toplevel" --impure --option warn-dirty false {{args}})" && cachix push {{cache}} "$store_path
|
store_path="$(nix build --no-link --print-out-paths ".#nixosConfigurations.{{host}}.config.system.build.toplevel" --impure --option warn-dirty false {{args}})" && cachix push {{cache}} "$store_path"
|
||||||
|
|
||||||
|
publish-hyprland-cachix cache="colonelpanic8-dotfiles" *args:
|
||||||
|
store_paths="$(nix build --no-link --print-out-paths ".#hyprland-stuff" --option warn-dirty false {{args}})" && cachix push {{cache}} $store_paths
|
||||||
|
|||||||
Reference in New Issue
Block a user