Clean on IDE deps and add paneru

This commit is contained in:
2026-02-15 22:41:24 +01:00
parent c7d14c4160
commit 2f7c7d7e8e
18 changed files with 175 additions and 385 deletions
+5 -4
View File
@@ -55,10 +55,10 @@
nixos = nixpkgs.lib.nixosSystem {
specialArgs = {
self = self;
import-tree = import-tree;
home-manager = home-manager;
nixpkgs = nixpkgs;
nixpkgs-unstable = nixpkgs-unstable;
import-tree = import-tree;
home-manager = home-manager;
};
modules = [
./hosts/nixos/overlays.nix
@@ -93,9 +93,10 @@
(import-tree ./hosts/darwin/system)
]
++ [
(import-tree ./hosts/darwin/overlays)
home-manager.darwinModules.home-manager
(import-tree ./overlays/darwin)
(import-tree ./modules/system/darwin)
home-manager.darwinModules.home-manager
(import-tree ./hosts/common)
(import-tree ./hosts/darwin/home)
];
+2 -6
View File
@@ -1,9 +1,9 @@
{ import-tree, pkgs, ... }:
{ import-tree, ... }:
{
home-manager.users.alistreaza = {
imports = [
pkgs.paneru.homeModules.paneru
(import-tree ../../../modules/home/common)
(import-tree ./partials)
];
home = {
@@ -30,10 +30,6 @@
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";
+37
View File
@@ -0,0 +1,37 @@
{ ... }:
{
services.paneru = {
enable = true;
# Equivalent to what you would put into `~/.paneru` (See Configuration options below).
settings = {
options = {
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_fullwidth = "alt - f";
window_manage = "ctrl + alt - t";
window_stack = "alt - ]";
window_unstack = "alt + shift - ]";
quit = "ctrl + alt - q";
};
};
};
}
-8
View File
@@ -1,8 +0,0 @@
{ ... }:
{
nixpkgs.overlays = [
(final: prev: {
paneru = prev.callPackage ../packages/paneru.nix { };
})
];
}
-125
View File
@@ -1,125 +0,0 @@
{
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;
};
};
};
}
+100
View File
@@ -0,0 +1,100 @@
{
pkgs,
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 = pkgs.paneru;
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;
};
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.clion;
in
{
options.home.ide.jetbrains.clion = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.clion
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.datagrip;
in
{
options.home.ide.jetbrains.datagrip = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.datagrip
];
};
}
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.dataspell;
in
{
options.home.ide.jetbrains.dataspell = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.dataspell
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.goland;
in
{
options.home.ide.jetbrains.goland = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.goland
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.idea;
in
{
options.home.ide.jetbrains.idea = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.idea
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.phpstorm;
in
{
options.home.ide.jetbrains.phpstorm = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.phpstorm
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.pycharm;
in
{
options.home.ide.jetbrains.pycharm = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.pycharm
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.rider;
in
{
options.home.ide.jetbrains.rider = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.rider
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.rubymine;
in
{
options.home.ide.jetbrains.rubymine = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.ruby-mine
];
};
}
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.rustrover;
in
{
options.home.ide.jetbrains.rustrover = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.rust-rover
];
};
}
-22
View File
@@ -1,22 +0,0 @@
{
lib,
pkgs,
config,
...
}:
with lib;
let
cfg = config.home.ide.jetbrains.webstorm;
in
{
options.home.ide.jetbrains.webstorm = {
enable = mkEnableOption "JetBrains options";
};
config = mkIf cfg.enable {
home.packages = with pkgs.unstable; [
jetbrains.webstorm
];
};
}
+31
View File
@@ -0,0 +1,31 @@
{ pkgs, ... }:
let
package = pkgs.rustPlatform.buildRustPackage {
pname = "paneru";
version = "0.3.0";
src = pkgs.fetchFromGitHub {
owner = "karinushka";
repo = "paneru";
rev = "66c94493cc99ee7715b4beb1e5cf455ada60213a";
sha256 = "sha256-VyKzfnXfnIkyjbg1RQTDaIbMdPQjNBD5dxVL6OZQf2U=";
};
cargoHash = "sha256-nVOhtPbX7pN5K/xqv0Nlx7MZDg9ASTxfgdTy/Kagui8=";
postPatch = ''
substituteInPlace build.rs --replace-fail \
'let sdk_dir = "/Library/Developer/CommandLineTools/SDKs";' \
'let sdk_dir = "${pkgs.apple-sdk}/Platforms/MacOSX.platform/Developer/SDKs";'
'';
buildInputs = [ pkgs.apple-sdk.privateFrameworksHook ];
doCheck = false;
meta = {
platforms = [ "aarch64-darwin" ];
};
};
in
{
nixpkgs.overlays = [
(final: prev: {
paneru = package;
})
];
}