From dcd1d76783ac19dd664d1817bf52e54a7ea0ac2d Mon Sep 17 00:00:00 2001 From: Daniel Patterson Date: Sat, 25 Nov 2023 01:11:59 +0000 Subject: [PATCH] Release --- flake.nix | 85 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 64 insertions(+), 21 deletions(-) diff --git a/flake.nix b/flake.nix index 5425418..2b62281 100644 --- a/flake.nix +++ b/flake.nix @@ -18,16 +18,17 @@ inherit system; }; - beamPackages = pkgs.beam.packagesWith pkgs.beam.interpreters.erlang_26; + lib = pkgs.lib; + beamPackages = pkgs.beam.packagesWith pkgs.beam.interpreters.erlang_26; - erlang = beamPackages.erlang; + erlang = beamPackages.erlang; - elixir = beamPackages.elixir_1_15; + elixir = beamPackages.elixir_1_15; - elixir-ls = beamPackages.elixir-ls.override { elixir = elixir; }; + elixir-ls = beamPackages.elixir-ls.override {elixir = elixir;}; - hex = beamPackages.hex; + hex = beamPackages.hex; rebar3 = beamPackages.rebar3; rebar = beamPackages.rebar; @@ -37,12 +38,12 @@ modules = [ { packages = [ - elixir - elixir-ls - erlang - hex - rebar - rebar3 + elixir + elixir-ls + erlang + hex + rebar + rebar3 pkgs.inotify-tools pkgs.sqlite ]; @@ -50,18 +51,60 @@ ]; }; - packages.default = beamPackages.mixRelease rec { - pname = "wish"; - version = "nightly-231124"; + packages.default = beamPackages.mixRelease rec { + pname = "wish"; + version = "nightly-231124"; - src = ./.; + src = ./.; - mixFodDeps = fetchMixDeps { - inherit src version; - pname = "mix-deps-${pname}"; - hash = lib.fakeHash; - }; - }; + postUnpack = '' + export ELIXIR_MAKE_CACHE_DIR=$TMP + ''; + + mixFodDeps = beamPackages.fetchMixDeps { + inherit src version; + pname = "mix-deps-${pname}"; + hash = "sha256-W/peopoh52iM3K068eu5gQ9dsKJTIVZ+5M6lZjP+vcE="; + }; + }; + + nixosModules.default = { + config, + lib, + pkgs, + ... + }: + with lib; let + cfg = config.wish.service; + in { + options.wish.service = { + enable = mkEnableOption "Enable the wish service."; + + environmentFile = mkOption { + type = types.path; + description = lib.mdDoc '' + Environment file as defined in {manpage}`systemd.exec(5)` passed to the service. + + This must contain at least `LIVEBOOK_PASSWORD` or + `LIVEBOOK_TOKEN_ENABLED=false`. See `livebook server --help` + for other options.''; + }; + }; + + config = mkIf cfg.enable { + systemd.services."wish" = { + wantedBy = ["multi-user.target"]; + + serviceConfig = let + pkg = self.packages.${system}.default; + in { + EnvironmentFile = cfg.environmentFile; + Restart = "on-failure"; + ExecStart = "${pkg}/bin/wish start"; + }; + }; + }; + }; } ); }