This repository has no description
3.4 kB
108 lines
1{ ... }:
2{
3 perSystem =
4 {
5 pkgs,
6 ...
7 }:
8 let
9 python = pkgs.python3;
10 in
11 {
12 packages.workspace-manager =
13 (pkgs.writeShellApplication {
14 name = "workspace-manager";
15 runtimeInputs = [
16 pkgs.socat
17 pkgs.jq
18 ];
19 text = builtins.readFile ./workspace-manager.sh;
20 }).overrideAttrs
21 { passthru.usage = builtins.readFile ./usage.kdl; };
22
23 packages.workspace-manager-daemon = pkgs.stdenv.mkDerivation {
24 pname = "workspace-manager-daemon";
25 version = "0.1.0";
26 src = ./.;
27 nativeBuildInputs = [
28 pkgs.makeWrapper
29 pkgs.ruff
30 python.pkgs.mypy
31 ];
32 doCheck = true;
33 checkPhase = ''
34 runHook preCheck
35 ruff check daemon.py
36 ruff format --check daemon.py
37 mypy --strict daemon.py
38 runHook postCheck
39 '';
40 installPhase = ''
41 runHook preInstall
42 mkdir -p $out/bin
43 cp daemon.py $out/bin/workspace-manager-daemon
44 chmod +x $out/bin/workspace-manager-daemon
45 wrapProgram $out/bin/workspace-manager-daemon \
46 --prefix PATH : ${python}/bin:${pkgs.sway}/bin:${pkgs.tmux}/bin
47 runHook postInstall
48 '';
49 meta.mainProgram = "workspace-manager-daemon";
50 };
51
52 # Open Firefox for the current workspace
53 packages.workspace-browser = pkgs.writeShellScriptBin "workspace-browser" ''
54 exec firefox "$@"
55 '';
56
57 # Native messaging host for the workspace-tabs Firefox extension
58 packages.workspace-tabs-native-host = pkgs.stdenv.mkDerivation {
59 pname = "workspace-tabs-native-host";
60 version = "0.1.0";
61 src = ./.;
62 nativeBuildInputs = [
63 pkgs.makeWrapper
64 pkgs.ruff
65 python.pkgs.mypy
66 ];
67 doCheck = true;
68 checkPhase = ''
69 runHook preCheck
70 ruff check workspace-tabs-host.py
71 ruff format --check workspace-tabs-host.py
72 mypy --strict workspace-tabs-host.py
73 runHook postCheck
74 '';
75 installPhase = ''
76 runHook preInstall
77 mkdir -p $out/bin $out/lib/mozilla/native-messaging-hosts
78 cp workspace-tabs-host.py $out/bin/workspace-tabs-host
79 chmod +x $out/bin/workspace-tabs-host
80 wrapProgram $out/bin/workspace-tabs-host \
81 --prefix PATH : ${python}/bin:${pkgs.sway}/bin
82
83 cat > $out/lib/mozilla/native-messaging-hosts/workspace_tabs.json <<EOF
84 {
85 "name": "workspace_tabs",
86 "description": "Native messaging host for Workspace Tabs extension",
87 "path": "$out/bin/workspace-tabs-host",
88 "type": "stdio",
89 "allowed_extensions": ["workspace-tabs@workspace-manager"]
90 }
91 EOF
92 runHook postInstall
93 '';
94 };
95
96 # Firefox extension for workspace tab management (packaged as .xpi)
97 packages.workspace-tabs-extension =
98 pkgs.runCommand "workspace-tabs-extension"
99 {
100 nativeBuildInputs = [ pkgs.zip ];
101 }
102 ''
103 mkdir -p $out
104 cd ${./firefox-extension}
105 zip -r "$out/workspace-tabs@workspace-manager.xpi" ./*
106 '';
107 };
108}