about summary refs log tree commit diff
path: root/nixos/modules/programs
diff options
context:
space:
mode:
authorAtemu <atemu.main@gmail.com>2024-04-05 01:46:09 +0200
committerGitHub <noreply@github.com>2024-04-05 01:46:09 +0200
commit86485bebac06ae466369b93fce9f92198895ccfc (patch)
treedf0ea30d51d755bdb8e318ffa0b428741a0f0fb6 /nixos/modules/programs
parent6fae3c600101d1435977e01753727624fe3e77e0 (diff)
parentf1019f971971bdf392ac5eb59a3a6854309a1007 (diff)
Merge pull request #295452 from jopejoe1/appimage
nixos/appimage: init
Diffstat (limited to 'nixos/modules/programs')
-rw-r--r--nixos/modules/programs/appimage.nix33
1 files changed, 33 insertions, 0 deletions
diff --git a/nixos/modules/programs/appimage.nix b/nixos/modules/programs/appimage.nix
new file mode 100644
index 0000000000000..0011c2ff578dc
--- /dev/null
+++ b/nixos/modules/programs/appimage.nix
@@ -0,0 +1,33 @@
+{ lib, config, pkgs, ... }:
+
+let
+  cfg = config.programs.appimage;
+in
+
+{
+  options.programs.appimage = {
+    enable = lib.mkEnableOption "appimage-run wrapper script for executing appimages on NixOS";
+    binfmt = lib.mkEnableOption "binfmt registration to run appimages via appimage-run seamlessly";
+    package = lib.mkPackageOption pkgs "appimage-run" {
+      example = ''
+        pkgs.appimage-run.override {
+          extraPkgs = pkgs: [ pkgs.ffmpeg pkgs.imagemagick ];
+        }
+      '';
+    };
+  };
+
+  config = lib.mkIf cfg.enable {
+    boot.binfmt.registrations.appimage = lib.mkIf cfg.binfmt {
+      wrapInterpreterInShell = false;
+      interpreter = lib.getExe cfg.package;
+      recognitionType = "magic";
+      offset = 0;
+      mask = ''\xff\xff\xff\xff\x00\x00\x00\x00\xff\xff\xff'';
+      magicOrExtension = ''\x7fELF....AI\x02'';
+    };
+    environment.systemPackages = [ cfg.package ];
+  };
+
+  meta.maintainers = with lib.maintainers; [ jopejoe1 atemu ];
+}