mirror of
https://github.com/feschber/lan-mouse.git
synced 2026-04-04 23:11:29 +03:00
* feat: add nix support(#80) * chore: nix flake update * update actions
This commit is contained in:
40
nix/README.md
Normal file
40
nix/README.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Nix Flake Usage
|
||||
|
||||
## run
|
||||
|
||||
```bash
|
||||
nix run github:feschber/lan-mouse
|
||||
|
||||
# with params
|
||||
nix run github:feschber/lan-mouse -- --help
|
||||
|
||||
```
|
||||
|
||||
## home-manager module
|
||||
|
||||
add input
|
||||
|
||||
```nix
|
||||
inputs = {
|
||||
lan-mouse.url = "github:feschber/lan-mouse";
|
||||
}
|
||||
```
|
||||
|
||||
enable lan-mouse
|
||||
|
||||
``` nix
|
||||
{
|
||||
inputs,
|
||||
...
|
||||
}: {
|
||||
# add the home manager module
|
||||
imports = [inputs.lan-mouse.homeManagerModules.default];
|
||||
|
||||
programs.lan-mouse = {
|
||||
enable = true;
|
||||
# systemd = false;
|
||||
# package = inputs.lan-mouse.packages.${pkgs.stdenv.hostPlatform.system}.default
|
||||
};
|
||||
}
|
||||
|
||||
```
|
||||
46
nix/default.nix
Normal file
46
nix/default.nix
Normal file
@@ -0,0 +1,46 @@
|
||||
{
|
||||
rustPlatform,
|
||||
lib,
|
||||
pkgs,
|
||||
}:
|
||||
rustPlatform.buildRustPackage {
|
||||
pname = "lan-mouse";
|
||||
version = "0.6.0";
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
pkg-config
|
||||
cmake
|
||||
buildPackages.gtk4
|
||||
];
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
xorg.libX11
|
||||
gtk4
|
||||
libadwaita
|
||||
xorg.libXtst
|
||||
];
|
||||
|
||||
src = builtins.path {
|
||||
name = "lan-mouse";
|
||||
path = lib.cleanSource ../.;
|
||||
};
|
||||
|
||||
cargoLock.lockFile = ../Cargo.lock;
|
||||
|
||||
cargoLock.outputHashes = {
|
||||
"reis-0.1.0" = "sha256-sRZqm6QdmgqfkTjEENV8erQd+0RL5z1+qjdmY18W3bA=";
|
||||
};
|
||||
|
||||
# Set Environment Variables
|
||||
RUST_BACKTRACE = "full";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Lan Mouse is a mouse and keyboard sharing software";
|
||||
longDescription = ''
|
||||
Lan Mouse is a mouse and keyboard sharing software similar to universal-control on Apple devices. It allows for using multiple pcs with a single set of mouse and keyboard. This is also known as a Software KVM switch.
|
||||
The primary target is Wayland on Linux but Windows and MacOS and Linux on Xorg have partial support as well (see below for more details).
|
||||
'';
|
||||
mainProgram = "lan-mouse";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
50
nix/hm-module.nix
Normal file
50
nix/hm-module.nix
Normal file
@@ -0,0 +1,50 @@
|
||||
self: {
|
||||
config,
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
with lib; let
|
||||
cfg = config.programs.lan-mouse;
|
||||
defaultPackage = self.packages.${pkgs.stdenv.hostPlatform.system}.default;
|
||||
in {
|
||||
options.programs.lan-mouse = with types; {
|
||||
enable = mkEnableOption "Whether or not to enable lan-mouse.";
|
||||
package = mkOption {
|
||||
type = with types; nullOr package;
|
||||
default = defaultPackage;
|
||||
defaultText = literalExpression "inputs.lan-mouse.packages.${pkgs.stdenv.hostPlatform.system}.default";
|
||||
description = ''
|
||||
The lan-mouse package to use.
|
||||
|
||||
By default, this option will use the `packages.default` as exposed by this flake.
|
||||
'';
|
||||
};
|
||||
systemd = mkOption {
|
||||
type = types.bool;
|
||||
default = pkgs.stdenv.isLinux;
|
||||
description = "Whether to enable to systemd service for lan-mouse.";
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
systemd.user.services.lan-mouse = lib.mkIf cfg.systemd {
|
||||
Unit = {
|
||||
Description = "Systemd service for Lan Mouse";
|
||||
Requires = ["graphical-session.target"];
|
||||
};
|
||||
Service = {
|
||||
Type = "simple";
|
||||
ExecStart = "${cfg.package}/bin/lan-mouse --daemon";
|
||||
};
|
||||
Install.WantedBy = [
|
||||
(lib.mkIf config.wayland.windowManager.hyprland.systemd.enable "hyprland-session.target")
|
||||
(lib.mkIf config.wayland.windowManager.sway.systemd.enable "sway-session.target")
|
||||
];
|
||||
};
|
||||
|
||||
home.packages = [
|
||||
cfg.package
|
||||
];
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user