add paneru package

This commit is contained in:
2026-02-15 19:31:16 +01:00
parent a13e4f349c
commit c7d14c4160
5 changed files with 134 additions and 35 deletions
Generated
+1 -22
View File
@@ -189,26 +189,6 @@
"type": "github"
}
},
"paneru": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1770939321,
"narHash": "sha256-OVF0sxT7mgZroAhOjK3QZqtnzOFcxN3wnxgghSYGgNw=",
"owner": "karinushka",
"repo": "paneru",
"rev": "c0537d166144f0776eb1bf0539942bda218716d5",
"type": "github"
},
"original": {
"owner": "karinushka",
"repo": "paneru",
"type": "github"
}
},
"root": {
"inputs": {
"flake-parts": "flake-parts",
@@ -219,8 +199,7 @@
"nix-darwin": "nix-darwin",
"nix-homebrew": "nix-homebrew",
"nixpkgs": "nixpkgs",
"nixpkgs-unstable": "nixpkgs-unstable",
"paneru": "paneru"
"nixpkgs-unstable": "nixpkgs-unstable"
}
}
},
-6
View File
@@ -17,10 +17,6 @@
home-manager.url = "github:nix-community/home-manager/release-25.11";
home-manager.inputs.nixpkgs.follows = "nixpkgs";
# Paneru
paneru.url = "github:karinushka/paneru";
paneru.inputs.nixpkgs.follows = "nixpkgs";
# Nix Homebrew
nix-homebrew.url = "github:zhaofengli/nix-homebrew";
homebrew-core = {
@@ -36,7 +32,6 @@
outputs =
inputs@{
self,
paneru,
nixpkgs,
nix-darwin,
flake-parts,
@@ -85,7 +80,6 @@
"MacBook-Air-de-Laurent" = nix-darwin.lib.darwinSystem {
specialArgs = {
self = self;
paneru = paneru;
import-tree = import-tree;
home-manager = home-manager;
homebrew-core = homebrew-core;
+6 -2
View File
@@ -1,9 +1,9 @@
{ import-tree, paneru, ... }:
{ import-tree, pkgs, ... }:
{
home-manager.users.alistreaza = {
imports = [
pkgs.paneru.homeModules.paneru
(import-tree ../../../modules/home/common)
paneru.homeModules.paneru
];
home = {
@@ -30,6 +30,10 @@
targets.darwin.linkApps.enable = false;
targets.darwin.copyApps.enable = false;
services.paneru = {
enable = true;
};
# The state version is required and should stay at the version you
# originally installed.
home.stateVersion = "25.11";
+2 -5
View File
@@ -1,11 +1,8 @@
{ paneru, ... }:
{ ... }:
{
nixpkgs.overlays = [
(final: prev: {
paneru = paneru.overrideAttrs (old: {
package.doCheck = false;
});
paneru = prev.callPackage ../packages/paneru.nix { };
})
];
}
+125
View File
@@ -0,0 +1,125 @@
{
self,
fetchFromGitHub,
nixpkgs,
}:
let
pkgs = import nixpkgs { system = "aarch64-darwin"; };
package = pkgs.rustPlatform.buildRustPackage {
pname = "paneru";
src = fetchFromGitHub {
owner = "karinushka";
repo = "paneru";
sha256 = "sha256-ZPnuAjieJM+C/ebNEr04ZN3Iw+J/mquHekJXXMNHelI=";
};
postPatch = ''
substituteInPlace build.rs --replace-fail \
'let sdk_dir = "/Library/Developer/CommandLineTools/SDKs";' \
'let sdk_dir = "${pkgs.apple-sdk}/Platforms/MacOSX.platform/Developer/SDKs";'
'';
cargoLock.lockFile = ./Cargo.lock;
buildInputs = [
pkgs.apple-sdk.privateFrameworksHook
];
};
in
{
packages.aarch64-darwin.default = self.packages.aarch64-darwin.paneru;
packages.aarch64-darwin.paneru = package;
homeModules.paneru =
{ config, lib, ... }:
let
cfg = config.services.paneru;
tomlFormat = pkgs.formats.toml { };
in
{
options.services.paneru = {
enable = lib.mkEnableOption ''
Install paneru and configure the launchd agent.
The first time this is enabled, macOS will prompt you to allow this background
item in System Settings.
You can verify the service is running correctly from your terminal.
Run: `launchctl list | grep paneru`
In case of failure, check the logs with `cat /tmp/paneru.err.log`.
'';
package = lib.mkOption {
type = lib.types.package;
default = package;
description = "The paneru package to use.";
};
settings = lib.mkOption {
type = lib.types.nullOr lib.types.attrs;
default = null;
description = "Configuration to put in `~/.paneru.toml`.";
example = {
options = {
focus_follows_mouse = true;
preset_column_widths = [
0.25
0.33
0.5
0.66
0.75
];
swipe_gesture_fingers = 4;
animation_speed = 4000;
};
bindings = {
window_focus_west = "cmd - h";
window_focus_east = "cmd - l";
window_focus_north = "cmd - k";
window_focus_south = "cmd - j";
window_swap_west = "alt - h";
window_swap_east = "alt - l";
window_swap_first = "alt + shift - h";
window_swap_last = "alt + shift - l";
window_center = "alt - c";
window_resize = "alt - r";
window_manage = "ctrl + alt - t";
window_stack = "alt - ]";
window_unstack = "alt + shift - ]";
quit = "ctrl + alt - q";
};
};
};
};
config = lib.mkIf cfg.enable {
assertions = [ (lib.hm.assertions.assertPlatform "services.paneru" pkgs lib.platforms.darwin) ];
launchd.agents.paneru = {
enable = true;
config = {
KeepAlive = {
Crashed = true;
SuccessfulExit = false;
};
Label = "Paneru";
Nice = -20;
ProcessType = "Interactive";
EnvironmentVariables = {
NO_COLOR = "1";
XDG_CONFIG_HOME =
if config.xdg.enable then config.xdg.configHome else "${config.home.homeDirectory}/.config";
};
RunAtLoad = true;
StandardOutPath = "/tmp/paneru.log";
StandardErrorPath = "/tmp/paneru.err.log";
Program = cfg.package + /bin/paneru;
};
};
xdg.configFile."paneru/paneru.toml" = lib.mkIf (config.xdg.enable && cfg.settings != null) {
source = tomlFormat.generate "paneru.toml" cfg.settings;
};
home.file.".paneru.toml" = lib.mkIf (!config.xdg.enable && cfg.settings != null) {
source = tomlFormat.generate ".paneru.toml" cfg.settings;
};
};
};
}