Loading maintainers/maintainer-list.nix +6 −0 Original line number Diff line number Diff line Loading @@ -1421,6 +1421,12 @@ { fingerprint = "DF68 C500 4024 23CC F9C5 E6CA 3D17 C832 4696 FE70"; } ]; }; alper-han = { email = "contact@zynix.net"; github = "alper-han"; githubId = 89567766; name = "Zynix"; }; alternateved = { email = "alternateved@pm.me"; github = "alternateved"; Loading nixos/modules/module-list.nix +1 −0 Original line number Diff line number Diff line Loading @@ -558,6 +558,7 @@ ./services/desktops/blueman.nix ./services/desktops/bonsaid.nix ./services/desktops/cpupower-gui.nix ./services/desktops/crossmacro.nix ./services/desktops/dleyna.nix ./services/desktops/dunst.nix ./services/desktops/espanso.nix Loading nixos/modules/services/desktops/crossmacro.nix 0 → 100644 +119 −0 Original line number Diff line number Diff line { config, lib, pkgs, ... }: let cfg = config.services.crossmacro; in { options.services.crossmacro = { enable = lib.mkEnableOption "CrossMacro, a cross-platform mouse and keyboard macro application"; package = lib.mkPackageOption pkgs "crossmacro" { }; daemonPackage = lib.mkPackageOption pkgs "crossmacro-daemon" { }; users = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; example = [ "alice" "bob" ]; description = "List of users granted permission to use CrossMacro."; }; }; config = lib.mkIf cfg.enable { assertions = [ { assertion = cfg.users != [ ]; message = "CrossMacro: You must specify at least one user. Set `services.crossmacro.users`."; } ]; environment.systemPackages = [ cfg.package ]; hardware.uinput.enable = true; services.udev.extraRules = '' KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput" ACTION=="add|change", KERNEL=="event*", ATTRS{name}=="CrossMacro Virtual Input Device", ENV{LIBINPUT_ATTR_POINTER_ACCEL}="0" ''; environment.etc."polkit-1/actions/org.crossmacro.policy".source = "${cfg.daemonPackage}/share/polkit-1/actions/org.crossmacro.policy"; environment.etc."polkit-1/rules.d/50-crossmacro.rules".source = "${cfg.daemonPackage}/share/polkit-1/rules.d/50-crossmacro.rules"; users.groups.crossmacro = { }; users.users = lib.listToAttrs ( map (user: { name = user; value = { extraGroups = [ "crossmacro" ]; }; }) cfg.users ) // { crossmacro = { isSystemUser = true; group = "input"; extraGroups = [ "crossmacro" "uinput" ]; description = "CrossMacro Input Daemon User"; }; }; systemd.services.crossmacro = { description = "CrossMacro Input Daemon Service"; documentation = [ "https://github.com/alper-han/CrossMacro" ]; wantedBy = [ "multi-user.target" ]; after = [ "network.target" "dbus.service" "polkit.service" ]; wants = [ "dbus.service" "polkit.service" ]; path = [ pkgs.polkit ]; serviceConfig = { Type = "notify"; User = "crossmacro"; Group = "input"; ExecStart = lib.getExe cfg.daemonPackage; Restart = "always"; RestartSec = 5; RuntimeDirectory = "crossmacro"; RuntimeDirectoryMode = "0755"; CapabilityBoundingSet = [ "CAP_SYS_ADMIN" "CAP_SETUID" "CAP_SETGID" "CAP_CHOWN" "CAP_DAC_READ_SEARCH" ]; AmbientCapabilities = [ "CAP_SYS_ADMIN" "CAP_CHOWN" "CAP_DAC_READ_SEARCH" ]; }; }; }; meta.maintainers = with lib.maintainers; [ alper-han ]; } pkgs/by-name/cr/crossmacro-daemon/deps.json 0 → 100644 +218 −0 Original line number Diff line number Diff line [ { "pname": "Avalonia", "version": "11.3.11", "hash": "sha256-FSMuXVA5q5L5evwos5bIsuT81suO8FbCjEF3OvAL9p0=" } , { "pname": "Avalonia.Angle.Windows.Natives", "version": "2.1.25547.20250602", "hash": "sha256-LE/lENAHptmz6t3T/AoJwnhpda+xs7PqriNGzdcfg8M=" } , { "pname": "Avalonia.BuildServices", "version": "11.3.2", "hash": "sha256-6wx06tjSKWQOlX2czdp6Wh0nuwVapx5qf/s8Qj5we40=" } , { "pname": "Avalonia.Controls.ColorPicker", "version": "11.3.11", "hash": "sha256-Ki6O9HYbseQPV3DsvwmJ+ERimi/WmvzelNJDKP6loo0=" } , { "pname": "Avalonia.Desktop", "version": "11.3.11", "hash": "sha256-oFivO8/0rir4BwQsTeWs3bSnb7RmldwxYmI77j5pt8k=" } , { "pname": "Avalonia.Diagnostics", "version": "11.3.11", "hash": "sha256-p38+O0VDqZ8u5VOzImP21/U5wyP1BUp2UrLLc9HSfwE=" } , { "pname": "Avalonia.Fonts.Inter", "version": "11.3.11", "hash": "sha256-S0DWwcZHulVUIckiv2HM1Vbqno64c/Xt+mPhZp1tfsA=" } , { "pname": "Avalonia.FreeDesktop", "version": "11.3.11", "hash": "sha256-UE2/w9cw3YDzsw3HuhI2sTPy8reH9C71ufmHOpzvlSQ=" } , { "pname": "Avalonia.Native", "version": "11.3.11", "hash": "sha256-vw67lp/oOt+2lqdJ5PK2FY93jqPTcgZqOAXLtSXlJ8s=" } , { "pname": "Avalonia.Remote.Protocol", "version": "11.3.11", "hash": "sha256-l1f3rVygtI268llwbN0NvTDSfXwZE3CyRw8w5tbHBC4=" } , { "pname": "Avalonia.Skia", "version": "11.3.11", "hash": "sha256-89TGu50JfEVFo+QZgyOR0uOagC/xoJvqfnrHep3W/cc=" } , { "pname": "Avalonia.Themes.Fluent", "version": "11.3.11", "hash": "sha256-tiJ0xAFf0UVSH7LASPtg/7ils7+vZjw2UKBMydyUR3Q=" } , { "pname": "Avalonia.Themes.Simple", "version": "11.3.11", "hash": "sha256-AJS5Ls0tJ6PCr2mnr1PpxGWX4sII8mpe2R+VCFYRg44=" } , { "pname": "Avalonia.Win32", "version": "11.3.11", "hash": "sha256-6/NG4OrB/4YisXzJ51GPuq3uDn8oEUWyJRAqejyMCQw=" } , { "pname": "Avalonia.X11", "version": "11.3.11", "hash": "sha256-2fiQvKxU/r71UOAQgy0zwSHVCM2uG2sdEUhObd5TrQQ=" } , { "pname": "CommunityToolkit.Mvvm", "version": "8.4.0", "hash": "sha256-a0D550q+ffreU9Z+kQPdzJYPNaj1UjgyPofLzUg02ZI=" } , { "pname": "HarfBuzzSharp", "version": "8.3.1.1", "hash": "sha256-614yv6bK9ynhdUnvW4wIkgpBe2sqTh28U9cDZzdhPc0=" } , { "pname": "HarfBuzzSharp.NativeAssets.Linux", "version": "8.3.1.1", "hash": "sha256-sBbez6fc9axVcsBbIHbpQh/MM5NHlMJgSu6FyuZzVyU=" } , { "pname": "HarfBuzzSharp.NativeAssets.macOS", "version": "8.3.1.1", "hash": "sha256-hK20KbX2OpewIO5qG5gWw5Ih6GoLcIDgFOqCJIjXR/Q=" } , { "pname": "HarfBuzzSharp.NativeAssets.WebAssembly", "version": "8.3.1.1", "hash": "sha256-mLKoLqI47ZHXqTMLwP1UCm7faDptUfQukNvdq6w/xxw=" } , { "pname": "HarfBuzzSharp.NativeAssets.Win32", "version": "8.3.1.1", "hash": "sha256-Um4iwLdz9XtaDSAsthNZdev6dMiy7OBoHOrorMrMYyo=" } , { "pname": "MicroCom.Runtime", "version": "0.11.0", "hash": "sha256-VdwpP5fsclvNqJuppaOvwEwv2ofnAI5ZSz2V+UEdLF0=" } , { "pname": "Microsoft.Extensions.DependencyInjection", "version": "10.0.2", "hash": "sha256-/9UWQRAI2eoocnJWWf1ktnAx/1Gt65c16fc0Xqr9+CQ=" } , { "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", "version": "10.0.2", "hash": "sha256-UF9T13V5SQxJy2msfLmyovLmitZrjJayf8gHH+uK2eg=" } , { "pname": "Serilog", "version": "4.3.0", "hash": "sha256-jyIy4BjsyFXge3aO4GRFAdnX4/rz1MHfBkBDIpCDsTw=" } , { "pname": "Serilog.Sinks.Async", "version": "2.1.0", "hash": "sha256-LDoLpXkleD2MVPK2KBsLGRf5yqrwckBiAnYDbuIbaUM=" } , { "pname": "Serilog.Sinks.Console", "version": "6.1.1", "hash": "sha256-CfIg4Us4kSMQAn6rU2rsAeE22g6MpFiZdhoZWySpZeY=" } , { "pname": "Serilog.Sinks.File", "version": "7.0.0", "hash": "sha256-LxZYUoUPkCjIIVarJilnXnqQiMrFNJtoRilmzTNtUjo=" } , { "pname": "SkiaSharp", "version": "2.88.9", "hash": "sha256-jZ/4nVXYJtrz9SBf6sYc/s0FxS7ReIYM4kMkrhZS+24=" } , { "pname": "SkiaSharp.NativeAssets.Linux", "version": "2.88.9", "hash": "sha256-mQ/oBaqRR71WfS66mJCvcc3uKW7CNEHoPN2JilDbw/A=" } , { "pname": "SkiaSharp.NativeAssets.Linux.NoDependencies", "version": "2.88.9", "hash": "sha256-WjpcM78Q6kaW0eU5iqDR5+fGcF+06/tawWHsJRK57Es=" } , { "pname": "SkiaSharp.NativeAssets.macOS", "version": "2.88.9", "hash": "sha256-qvGuAmjXGjGKMzOPBvP9VWRVOICSGb7aNVejU0lLe/g=" } , { "pname": "SkiaSharp.NativeAssets.WebAssembly", "version": "2.88.9", "hash": "sha256-vgFL4Pdy3O1RKBp+T9N3W4nkH9yurZ0suo8u3gPmmhY=" } , { "pname": "SkiaSharp.NativeAssets.Win32", "version": "2.88.9", "hash": "sha256-kP5XM5GgwHGfNJfe4T2yO5NIZtiF71Ddp0pd1vG5V/4=" } , { "pname": "Tmds.DBus", "version": "0.23.0", "hash": "sha256-BwWQSqOOMS+Cf2fM8MIuiHey8QnGH4WvYjOn9haq5e0=" } , { "pname": "Tmds.DBus.Protocol", "version": "0.21.2", "hash": "sha256-gaK/5aAummyin6ptnhaJbnA0ih4+2xADrtrLfFbHwYI=" } ] pkgs/by-name/cr/crossmacro-daemon/package.nix 0 → 100644 +71 −0 Original line number Diff line number Diff line { lib, stdenv, buildDotnetModule, dotnetCorePackages, fetchFromGitHub, nix-update-script, autoPatchelfHook, clang, patchelf, systemd, zlib, }: buildDotnetModule rec { pname = "crossmacro-daemon"; version = "0.9.6"; src = fetchFromGitHub { owner = "alper-han"; repo = "CrossMacro"; tag = "v${version}"; hash = "sha256-6Cc1mC34l+4dUPD1LAYxlXxzNF76l4HoOmbqTdTJVk0="; }; projectFile = "src/CrossMacro.Daemon/CrossMacro.Daemon.csproj"; nugetDeps = ./deps.json; dotnet-sdk = dotnetCorePackages.sdk_10_0; dotnet-runtime = null; selfContainedBuild = true; executables = [ "CrossMacro.Daemon" ]; buildType = "Release"; nativeBuildInputs = [ autoPatchelfHook clang patchelf ]; buildInputs = [ systemd zlib ]; dotnetFlags = [ "-p:Version=${version}" ]; postInstall = '' install -Dm644 scripts/assets/org.crossmacro.policy \ $out/share/polkit-1/actions/org.crossmacro.policy install -Dm644 scripts/assets/50-crossmacro.rules \ $out/share/polkit-1/rules.d/50-crossmacro.rules '' + lib.optionalString stdenv.hostPlatform.isLinux '' patchelf --add-needed libsystemd.so.0 $out/lib/crossmacro-daemon/CrossMacro.Daemon ''; passthru.updateScript = nix-update-script { }; meta = { description = "Privileged input daemon for CrossMacro"; homepage = "https://github.com/alper-han/CrossMacro"; changelog = "https://github.com/alper-han/CrossMacro/releases/tag/v${version}"; license = lib.licenses.gpl3Plus; platforms = lib.platforms.linux; mainProgram = "CrossMacro.Daemon"; maintainers = with lib.maintainers; [ alper-han ]; }; } Loading
maintainers/maintainer-list.nix +6 −0 Original line number Diff line number Diff line Loading @@ -1421,6 +1421,12 @@ { fingerprint = "DF68 C500 4024 23CC F9C5 E6CA 3D17 C832 4696 FE70"; } ]; }; alper-han = { email = "contact@zynix.net"; github = "alper-han"; githubId = 89567766; name = "Zynix"; }; alternateved = { email = "alternateved@pm.me"; github = "alternateved"; Loading
nixos/modules/module-list.nix +1 −0 Original line number Diff line number Diff line Loading @@ -558,6 +558,7 @@ ./services/desktops/blueman.nix ./services/desktops/bonsaid.nix ./services/desktops/cpupower-gui.nix ./services/desktops/crossmacro.nix ./services/desktops/dleyna.nix ./services/desktops/dunst.nix ./services/desktops/espanso.nix Loading
nixos/modules/services/desktops/crossmacro.nix 0 → 100644 +119 −0 Original line number Diff line number Diff line { config, lib, pkgs, ... }: let cfg = config.services.crossmacro; in { options.services.crossmacro = { enable = lib.mkEnableOption "CrossMacro, a cross-platform mouse and keyboard macro application"; package = lib.mkPackageOption pkgs "crossmacro" { }; daemonPackage = lib.mkPackageOption pkgs "crossmacro-daemon" { }; users = lib.mkOption { type = lib.types.listOf lib.types.str; default = [ ]; example = [ "alice" "bob" ]; description = "List of users granted permission to use CrossMacro."; }; }; config = lib.mkIf cfg.enable { assertions = [ { assertion = cfg.users != [ ]; message = "CrossMacro: You must specify at least one user. Set `services.crossmacro.users`."; } ]; environment.systemPackages = [ cfg.package ]; hardware.uinput.enable = true; services.udev.extraRules = '' KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput" ACTION=="add|change", KERNEL=="event*", ATTRS{name}=="CrossMacro Virtual Input Device", ENV{LIBINPUT_ATTR_POINTER_ACCEL}="0" ''; environment.etc."polkit-1/actions/org.crossmacro.policy".source = "${cfg.daemonPackage}/share/polkit-1/actions/org.crossmacro.policy"; environment.etc."polkit-1/rules.d/50-crossmacro.rules".source = "${cfg.daemonPackage}/share/polkit-1/rules.d/50-crossmacro.rules"; users.groups.crossmacro = { }; users.users = lib.listToAttrs ( map (user: { name = user; value = { extraGroups = [ "crossmacro" ]; }; }) cfg.users ) // { crossmacro = { isSystemUser = true; group = "input"; extraGroups = [ "crossmacro" "uinput" ]; description = "CrossMacro Input Daemon User"; }; }; systemd.services.crossmacro = { description = "CrossMacro Input Daemon Service"; documentation = [ "https://github.com/alper-han/CrossMacro" ]; wantedBy = [ "multi-user.target" ]; after = [ "network.target" "dbus.service" "polkit.service" ]; wants = [ "dbus.service" "polkit.service" ]; path = [ pkgs.polkit ]; serviceConfig = { Type = "notify"; User = "crossmacro"; Group = "input"; ExecStart = lib.getExe cfg.daemonPackage; Restart = "always"; RestartSec = 5; RuntimeDirectory = "crossmacro"; RuntimeDirectoryMode = "0755"; CapabilityBoundingSet = [ "CAP_SYS_ADMIN" "CAP_SETUID" "CAP_SETGID" "CAP_CHOWN" "CAP_DAC_READ_SEARCH" ]; AmbientCapabilities = [ "CAP_SYS_ADMIN" "CAP_CHOWN" "CAP_DAC_READ_SEARCH" ]; }; }; }; meta.maintainers = with lib.maintainers; [ alper-han ]; }
pkgs/by-name/cr/crossmacro-daemon/deps.json 0 → 100644 +218 −0 Original line number Diff line number Diff line [ { "pname": "Avalonia", "version": "11.3.11", "hash": "sha256-FSMuXVA5q5L5evwos5bIsuT81suO8FbCjEF3OvAL9p0=" } , { "pname": "Avalonia.Angle.Windows.Natives", "version": "2.1.25547.20250602", "hash": "sha256-LE/lENAHptmz6t3T/AoJwnhpda+xs7PqriNGzdcfg8M=" } , { "pname": "Avalonia.BuildServices", "version": "11.3.2", "hash": "sha256-6wx06tjSKWQOlX2czdp6Wh0nuwVapx5qf/s8Qj5we40=" } , { "pname": "Avalonia.Controls.ColorPicker", "version": "11.3.11", "hash": "sha256-Ki6O9HYbseQPV3DsvwmJ+ERimi/WmvzelNJDKP6loo0=" } , { "pname": "Avalonia.Desktop", "version": "11.3.11", "hash": "sha256-oFivO8/0rir4BwQsTeWs3bSnb7RmldwxYmI77j5pt8k=" } , { "pname": "Avalonia.Diagnostics", "version": "11.3.11", "hash": "sha256-p38+O0VDqZ8u5VOzImP21/U5wyP1BUp2UrLLc9HSfwE=" } , { "pname": "Avalonia.Fonts.Inter", "version": "11.3.11", "hash": "sha256-S0DWwcZHulVUIckiv2HM1Vbqno64c/Xt+mPhZp1tfsA=" } , { "pname": "Avalonia.FreeDesktop", "version": "11.3.11", "hash": "sha256-UE2/w9cw3YDzsw3HuhI2sTPy8reH9C71ufmHOpzvlSQ=" } , { "pname": "Avalonia.Native", "version": "11.3.11", "hash": "sha256-vw67lp/oOt+2lqdJ5PK2FY93jqPTcgZqOAXLtSXlJ8s=" } , { "pname": "Avalonia.Remote.Protocol", "version": "11.3.11", "hash": "sha256-l1f3rVygtI268llwbN0NvTDSfXwZE3CyRw8w5tbHBC4=" } , { "pname": "Avalonia.Skia", "version": "11.3.11", "hash": "sha256-89TGu50JfEVFo+QZgyOR0uOagC/xoJvqfnrHep3W/cc=" } , { "pname": "Avalonia.Themes.Fluent", "version": "11.3.11", "hash": "sha256-tiJ0xAFf0UVSH7LASPtg/7ils7+vZjw2UKBMydyUR3Q=" } , { "pname": "Avalonia.Themes.Simple", "version": "11.3.11", "hash": "sha256-AJS5Ls0tJ6PCr2mnr1PpxGWX4sII8mpe2R+VCFYRg44=" } , { "pname": "Avalonia.Win32", "version": "11.3.11", "hash": "sha256-6/NG4OrB/4YisXzJ51GPuq3uDn8oEUWyJRAqejyMCQw=" } , { "pname": "Avalonia.X11", "version": "11.3.11", "hash": "sha256-2fiQvKxU/r71UOAQgy0zwSHVCM2uG2sdEUhObd5TrQQ=" } , { "pname": "CommunityToolkit.Mvvm", "version": "8.4.0", "hash": "sha256-a0D550q+ffreU9Z+kQPdzJYPNaj1UjgyPofLzUg02ZI=" } , { "pname": "HarfBuzzSharp", "version": "8.3.1.1", "hash": "sha256-614yv6bK9ynhdUnvW4wIkgpBe2sqTh28U9cDZzdhPc0=" } , { "pname": "HarfBuzzSharp.NativeAssets.Linux", "version": "8.3.1.1", "hash": "sha256-sBbez6fc9axVcsBbIHbpQh/MM5NHlMJgSu6FyuZzVyU=" } , { "pname": "HarfBuzzSharp.NativeAssets.macOS", "version": "8.3.1.1", "hash": "sha256-hK20KbX2OpewIO5qG5gWw5Ih6GoLcIDgFOqCJIjXR/Q=" } , { "pname": "HarfBuzzSharp.NativeAssets.WebAssembly", "version": "8.3.1.1", "hash": "sha256-mLKoLqI47ZHXqTMLwP1UCm7faDptUfQukNvdq6w/xxw=" } , { "pname": "HarfBuzzSharp.NativeAssets.Win32", "version": "8.3.1.1", "hash": "sha256-Um4iwLdz9XtaDSAsthNZdev6dMiy7OBoHOrorMrMYyo=" } , { "pname": "MicroCom.Runtime", "version": "0.11.0", "hash": "sha256-VdwpP5fsclvNqJuppaOvwEwv2ofnAI5ZSz2V+UEdLF0=" } , { "pname": "Microsoft.Extensions.DependencyInjection", "version": "10.0.2", "hash": "sha256-/9UWQRAI2eoocnJWWf1ktnAx/1Gt65c16fc0Xqr9+CQ=" } , { "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", "version": "10.0.2", "hash": "sha256-UF9T13V5SQxJy2msfLmyovLmitZrjJayf8gHH+uK2eg=" } , { "pname": "Serilog", "version": "4.3.0", "hash": "sha256-jyIy4BjsyFXge3aO4GRFAdnX4/rz1MHfBkBDIpCDsTw=" } , { "pname": "Serilog.Sinks.Async", "version": "2.1.0", "hash": "sha256-LDoLpXkleD2MVPK2KBsLGRf5yqrwckBiAnYDbuIbaUM=" } , { "pname": "Serilog.Sinks.Console", "version": "6.1.1", "hash": "sha256-CfIg4Us4kSMQAn6rU2rsAeE22g6MpFiZdhoZWySpZeY=" } , { "pname": "Serilog.Sinks.File", "version": "7.0.0", "hash": "sha256-LxZYUoUPkCjIIVarJilnXnqQiMrFNJtoRilmzTNtUjo=" } , { "pname": "SkiaSharp", "version": "2.88.9", "hash": "sha256-jZ/4nVXYJtrz9SBf6sYc/s0FxS7ReIYM4kMkrhZS+24=" } , { "pname": "SkiaSharp.NativeAssets.Linux", "version": "2.88.9", "hash": "sha256-mQ/oBaqRR71WfS66mJCvcc3uKW7CNEHoPN2JilDbw/A=" } , { "pname": "SkiaSharp.NativeAssets.Linux.NoDependencies", "version": "2.88.9", "hash": "sha256-WjpcM78Q6kaW0eU5iqDR5+fGcF+06/tawWHsJRK57Es=" } , { "pname": "SkiaSharp.NativeAssets.macOS", "version": "2.88.9", "hash": "sha256-qvGuAmjXGjGKMzOPBvP9VWRVOICSGb7aNVejU0lLe/g=" } , { "pname": "SkiaSharp.NativeAssets.WebAssembly", "version": "2.88.9", "hash": "sha256-vgFL4Pdy3O1RKBp+T9N3W4nkH9yurZ0suo8u3gPmmhY=" } , { "pname": "SkiaSharp.NativeAssets.Win32", "version": "2.88.9", "hash": "sha256-kP5XM5GgwHGfNJfe4T2yO5NIZtiF71Ddp0pd1vG5V/4=" } , { "pname": "Tmds.DBus", "version": "0.23.0", "hash": "sha256-BwWQSqOOMS+Cf2fM8MIuiHey8QnGH4WvYjOn9haq5e0=" } , { "pname": "Tmds.DBus.Protocol", "version": "0.21.2", "hash": "sha256-gaK/5aAummyin6ptnhaJbnA0ih4+2xADrtrLfFbHwYI=" } ]
pkgs/by-name/cr/crossmacro-daemon/package.nix 0 → 100644 +71 −0 Original line number Diff line number Diff line { lib, stdenv, buildDotnetModule, dotnetCorePackages, fetchFromGitHub, nix-update-script, autoPatchelfHook, clang, patchelf, systemd, zlib, }: buildDotnetModule rec { pname = "crossmacro-daemon"; version = "0.9.6"; src = fetchFromGitHub { owner = "alper-han"; repo = "CrossMacro"; tag = "v${version}"; hash = "sha256-6Cc1mC34l+4dUPD1LAYxlXxzNF76l4HoOmbqTdTJVk0="; }; projectFile = "src/CrossMacro.Daemon/CrossMacro.Daemon.csproj"; nugetDeps = ./deps.json; dotnet-sdk = dotnetCorePackages.sdk_10_0; dotnet-runtime = null; selfContainedBuild = true; executables = [ "CrossMacro.Daemon" ]; buildType = "Release"; nativeBuildInputs = [ autoPatchelfHook clang patchelf ]; buildInputs = [ systemd zlib ]; dotnetFlags = [ "-p:Version=${version}" ]; postInstall = '' install -Dm644 scripts/assets/org.crossmacro.policy \ $out/share/polkit-1/actions/org.crossmacro.policy install -Dm644 scripts/assets/50-crossmacro.rules \ $out/share/polkit-1/rules.d/50-crossmacro.rules '' + lib.optionalString stdenv.hostPlatform.isLinux '' patchelf --add-needed libsystemd.so.0 $out/lib/crossmacro-daemon/CrossMacro.Daemon ''; passthru.updateScript = nix-update-script { }; meta = { description = "Privileged input daemon for CrossMacro"; homepage = "https://github.com/alper-han/CrossMacro"; changelog = "https://github.com/alper-han/CrossMacro/releases/tag/v${version}"; license = lib.licenses.gpl3Plus; platforms = lib.platforms.linux; mainProgram = "CrossMacro.Daemon"; maintainers = with lib.maintainers; [ alper-han ]; }; }