From 6b7331427bedf0458d000ea35c39a5289c45ae19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alu=C3=ADsio=20Augusto=20Silva=20Gon=C3=A7alves?= Date: Sun, 25 Apr 2021 22:16:37 -0300 Subject: [PATCH] make-job-script: Extract systemd service script builder from Nixpkgs This can be used when you want to use `preStart`, `postStart`, or `preStop` but also need to apply one of the special executable prefixes. --- flake.nix | 1 + .../build-support/make-job-script/default.nix | 24 +++++++++++++++++++ pkgs/manifest.nix | 1 + pkgs/overlay.nix | 2 ++ 4 files changed, 28 insertions(+) create mode 100644 pkgs/build-support/make-job-script/default.nix diff --git a/flake.nix b/flake.nix index fa197f8..fcc11b0 100644 --- a/flake.nix +++ b/flake.nix @@ -26,6 +26,7 @@ # Remove packages not compatible with this system. (filterAttrs (attr: drv: drv ? meta.platforms -> builtins.elem system drv.meta.platforms)) ]); + legacyPackages = genAttrs defaultSystems (system: (import ./. { pkgs = nixpkgs.legacyPackages.${system}; })); nixosModules = mapAttrs (name: path: import path) (import ./modules); overlays = { pkgs = import ./pkgs/overlay.nix; diff --git a/pkgs/build-support/make-job-script/default.nix b/pkgs/build-support/make-job-script/default.nix new file mode 100644 index 0000000..2362439 --- /dev/null +++ b/pkgs/build-support/make-job-script/default.nix @@ -0,0 +1,24 @@ +{ lib, writeTextFile, stdenv, runtimeShell }: +let + inherit (lib) replaceChars; + + # Taken from . + makeJobScript = name: text: + let + scriptName = replaceChars [ "\\" "@" ] [ "-" "_" ] name; + out = writeTextFile { + name = "unit-script-${scriptName}"; + executable = true; + destination = "/bin/${scriptName}"; + text = '' + #!${runtimeShell} -e + ${text} + ''; + checkPhase = '' + ${stdenv.shell} -n "$out/bin/${scriptName}" + ''; + }; + in + "${out}/bin/${scriptName}"; +in +makeJobScript diff --git a/pkgs/manifest.nix b/pkgs/manifest.nix index 52efcaf..06461be 100644 --- a/pkgs/manifest.nix +++ b/pkgs/manifest.nix @@ -10,6 +10,7 @@ [ "iwgtk" ] [ "linuxPackages" "rtl8723bu" ] [ "linuxPackages_latest" "rtl8723bu" ] + [ "makeJobScript" ] [ "matrix-appservice-irc" ] [ "prometheus-bird-exporter" ] [ "python3Packages" "daemonocle" ] diff --git a/pkgs/overlay.nix b/pkgs/overlay.nix index 56408c6..31432d7 100644 --- a/pkgs/overlay.nix +++ b/pkgs/overlay.nix @@ -25,6 +25,8 @@ final: prev: linuxPackagesFor = kernel: (prev.linuxPackagesFor kernel).extend (import ./os-specific/linux/kernel-packages.nix); + makeJobScript = final.callPackage ./build-support/make-job-script { }; + matrix-appservice-irc = final.callPackage ./servers/matrix-synapse/matrix-appservice-irc { nodejs = final.nodejs-12_x; }; -- 2.38.5