From d97acea76e653ee0c69a7b0441e8c984c421256c Mon Sep 17 00:00:00 2001 From: Dan Bornside Date: Wed, 9 Mar 2022 11:54:40 -0500 Subject: [PATCH 01/16] split out side-affect-full deployment --- lib/command/src/Obelisk/Command/Deploy.hs | 29 ++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/command/src/Obelisk/Command/Deploy.hs b/lib/command/src/Obelisk/Command/Deploy.hs index 1d39ed0d8..40d5b2b59 100644 --- a/lib/command/src/Obelisk/Command/Deploy.hs +++ b/lib/command/src/Obelisk/Command/Deploy.hs @@ -182,8 +182,9 @@ deployPush deployPath builders = do let version = show . _thunkRev_commit $ _thunkPtr_rev thunkPtr let moduleFile = deployPath "module.nix" moduleFileExists <- liftIO $ doesFileExist moduleFile - configHash <- getGitHash deployPath "config" + let knownHostsPath = deployPath "backend_known_hosts" + sshOpts = sshArgs knownHostsPath (deployPath "ssh_key") False buildOutputByHost <- ifor (Map.fromSet (const ()) hosts) $ \host () -> do --TODO: What does it mean if this returns more or less than 1 line of output? [result] <- fmap lines $ nixCmd $ NixCmd_Build $ def @@ -203,14 +204,27 @@ deployPush deployPath builders = do , strArg "configHash" $ T.unpack $ T.strip (_gitHash_text configHash) ] <> [rawArg "module" ("import " <> toNixPath moduleFile) | moduleFileExists ]) & nixCmdConfig_builders .~ builders - pure result - let knownHostsPath = deployPath "backend_known_hosts" - sshOpts = sshArgs knownHostsPath (deployPath "ssh_key") False - withSpinner "Uploading closures" $ ifor_ buildOutputByHost $ \host outputPath -> do + pure (DeployBuildOutput sshOpts result) + deployPushImpl deployPath buildOutputByHost + putLog Notice $ "Deployed => " <> T.pack route + + +data DeployBuildOutput = DeployBuildOutput + { _deployBuildOutput_sshOpts :: [String] + , _deployBuildOutput_outputPath :: String + } + +deployPushImpl + :: MonadObelisk m + => FilePath -- ^ Deploy Path + -> Map.Map String DeployBuildOutput + -> m () +deployPushImpl deployPath buildOutputByHost = do + withSpinner "Uploading closures" $ ifor_ buildOutputByHost $ \host (DeployBuildOutput sshOpts outputPath) -> do callProcess' (Map.fromList [("NIX_SSHOPTS", unwords sshOpts)]) "nix-copy-closure" ["-v", "--to", "--use-substitutes", "root@" <> host, "--gzip", outputPath] - withSpinner "Uploading config" $ ifor_ buildOutputByHost $ \host _ -> do + withSpinner "Uploading config" $ ifor_ buildOutputByHost $ \host (DeployBuildOutput sshOpts _) -> do callProcessAndLogOutput (Notice, Warning) $ proc rsyncPath [ "-e " <> sshPath <> " " <> unwords sshOpts @@ -219,7 +233,7 @@ deployPush deployPath builders = do , "root@" <> host <> ":/var/lib/backend" ] --TODO: Create GC root so we're sure our closure won't go away during this time period - withSpinner "Switching to new configuration" $ ifor_ buildOutputByHost $ \host outputPath -> do + withSpinner "Switching to new configuration" $ ifor_ buildOutputByHost $ \host (DeployBuildOutput sshOpts outputPath) -> do callProcessAndLogOutput (Notice, Warning) $ proc sshPath $ sshOpts <> [ "root@" <> host @@ -235,7 +249,6 @@ deployPush deployPath builders = do gitProc deployPath ["add", "."] callProcessAndLogOutput (Debug, Error) $ gitProc deployPath ["commit", "-m", "New deployment"] - putLog Notice $ "Deployed => " <> T.pack route where callProcess' envMap cmd args = do let p = setEnvOverride (envMap <>) $ setDelegateCtlc True $ proc cmd args From 2caf02970b2363dcb958991a00fe319925b8c1fd Mon Sep 17 00:00:00 2001 From: Dan Bornside Date: Fri, 11 Mar 2022 23:47:49 -0500 Subject: [PATCH 02/16] WIP: extensible ob deploy - prepare for factored out ob deploy - expose bare nixos module - fix some args passing bugs --- default.nix | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/default.nix b/default.nix index 5b0b7ccf6..677f48ba1 100644 --- a/default.nix +++ b/default.nix @@ -226,17 +226,21 @@ in rec { static-assets = exeAssets; }; - server = { exe, hostName, adminEmail, routeHost, enableHttps, version, module ? serverModules.mkBaseEc2, redirectHosts ? [], configHash ? "" }@args: + serverModule = { exe, hostName, adminEmail, routeHost, enableHttps, version, ... }@args: {...}: { + imports = [ + ((args.module or (serverModules.mkBaseEc2)) { inherit (args) exe hostName adminEmail routeHost enableHttps version; nixosPkgs = pkgs; }) + (serverModules.mkDefaultNetworking args) + (serverModules.mkObeliskApp args) + ]; + }; + + server = args: let nixos = import (pkgs.path + /nixos); in nixos { system = "x86_64-linux"; configuration = { - imports = [ - (module { inherit exe hostName adminEmail routeHost enableHttps version; nixosPkgs = pkgs; }) - (serverModules.mkDefaultNetworking args) - (serverModules.mkObeliskApp args) - ]; + imports = [(serverModule args)]; }; }; @@ -410,6 +414,16 @@ in rec { linuxExeConfigurable = linuxExe; linuxExe = linuxExe dummyVersion; exe = serverOn mainProjectOut dummyVersion; + # the "classic flavor", as a "deployable" module + deployLinuxServerModule = {version, buildConfigs}: serverModule ({ + inherit version; + exe = linuxExe version; + } // buildConfigs); + + # the "classic flavor", as a module + linuxServerModule = args@{ hostName, adminEmail, routeHost, enableHttps, version, ...}: + serverModule ({ module = serverModules.mkBaseEc2; exe = linuxExe version; } // args); + # the "classic flavor", as a full nixos configuration server = args@{ hostName, adminEmail, routeHost, enableHttps, version, module ? serverModules.mkBaseEc2, redirectHosts ? [], configHash ? "" }: server (args // { exe = linuxExe version; }); obelisk = import (base' + "/.obelisk/impl") {}; From b9a205bf24543a6416a3b39ca9369d791d2d5681 Mon Sep 17 00:00:00 2001 From: Madeline Haraj Date: Tue, 16 Aug 2022 11:39:47 -0400 Subject: [PATCH 03/16] Fix breakage from rebase --- default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/default.nix b/default.nix index 677f48ba1..9237de02f 100644 --- a/default.nix +++ b/default.nix @@ -226,7 +226,7 @@ in rec { static-assets = exeAssets; }; - serverModule = { exe, hostName, adminEmail, routeHost, enableHttps, version, ... }@args: {...}: { + serverModule = { exe, hostName, adminEmail, routeHost, enableHttps, version, redirectHosts ? [], configHash ? "", ... }@args: {...}: { imports = [ ((args.module or (serverModules.mkBaseEc2)) { inherit (args) exe hostName adminEmail routeHost enableHttps version; nixosPkgs = pkgs; }) (serverModules.mkDefaultNetworking args) @@ -415,13 +415,13 @@ in rec { linuxExe = linuxExe dummyVersion; exe = serverOn mainProjectOut dummyVersion; # the "classic flavor", as a "deployable" module - deployLinuxServerModule = {version, buildConfigs}: serverModule ({ - inherit version; + deployLinuxServerModule = {version, buildConfigs, redirectHosts ? [], configHash ? ""}: serverModule ({ + inherit version redirectHosts configHash; exe = linuxExe version; } // buildConfigs); # the "classic flavor", as a module - linuxServerModule = args@{ hostName, adminEmail, routeHost, enableHttps, version, ...}: + linuxServerModule = args@{ hostName, adminEmail, routeHost, enableHttps, version, redirectHosts ? [], configHash ? "", ...}: serverModule ({ module = serverModules.mkBaseEc2; exe = linuxExe version; } // args); # the "classic flavor", as a full nixos configuration server = args@{ hostName, adminEmail, routeHost, enableHttps, version, module ? serverModules.mkBaseEc2, redirectHosts ? [], configHash ? "" }: From e0c5621826bc30caf53beb2d5d44fdb91ecd37bb Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Thu, 1 Sep 2022 09:50:46 -0400 Subject: [PATCH 04/16] Add pathQueryEncoder --- lib/route/src/Obelisk/Route.hs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/lib/route/src/Obelisk/Route.hs b/lib/route/src/Obelisk/Route.hs index aa350b5be..8f37ef7e4 100644 --- a/lib/route/src/Obelisk/Route.hs +++ b/lib/route/src/Obelisk/Route.hs @@ -111,6 +111,7 @@ module Obelisk.Route , obeliskRouteEncoder , obeliskRouteSegment , pageNameEncoder + , pathQueryEncoder , handleEncoder , someSumEncoder , Void1 @@ -181,6 +182,7 @@ import Data.Functor.Sum import Data.GADT.Compare import Data.GADT.Compare.TH import Data.GADT.Show +import Data.List (stripPrefix) import Data.List.NonEmpty (NonEmpty (..)) import Data.Map (Map) import qualified Data.Map as Map @@ -197,6 +199,7 @@ import Data.Text.Lens (IsText, packed, unpacked) import Data.Type.Equality import Data.Universe import Data.Universe.Some +import Network.URI (URI (..)) import Network.HTTP.Types.URI import qualified Numeric.Lens import Obelisk.Route.TH @@ -930,6 +933,34 @@ pageNameEncoder = bimap (unpackTextEncoder . prefixTextEncoder "/" . pathSegmentsTextEncoder . listToNonEmptyEncoder) (unpackTextEncoder . prefixNonemptyTextEncoder "?" . queryParametersTextEncoder . toListMapEncoder) +-- | Encode a PathQuery into a URI based on a given base URI +-- +-- WARNING: We don't deal with query or fragment components here at all. If +-- the supplied base URI has either one, they will be silently ignored in both +-- encoding and decoding. +pathQueryEncoder + :: ( Applicative check + , MonadError Text parse + ) + => URI + -> Encoder check parse PathQuery URI +pathQueryEncoder baseUri = + let -- basePath has trailing slashes removed + basePath = reverse $ dropWhile (== '/') $ reverse $ uriPath baseUri + in unsafeMkEncoder $ EncoderImpl + { _encoderImpl_encode = \(path, query) -> URI + { uriScheme = uriScheme baseUri + , uriAuthority = uriAuthority baseUri + , uriPath = basePath <> path + , uriQuery = query + , uriFragment = "" + } + , _encoderImpl_decode = \uri -> + case (uriScheme uri /= uriScheme baseUri, uriAuthority uri /= uriAuthority baseUri, Data.List.stripPrefix basePath (uriPath uri)) of + (True, True, Just remainingPath) -> pure (remainingPath, uriQuery uri) + _ -> throwError $ "pathQueryEncodering: wrong base uri; expected " <> T.pack (show baseUri) <> " got " <> T.pack (show uri) + } + -- | Handle an error in parsing, for example, in order to redirect to a 404 page. handleEncoder :: (Functor check) From 8af64fd799f6975ed68b60e92e8514b1da016bf3 Mon Sep 17 00:00:00 2001 From: Anurag Ohri Date: Fri, 2 Sep 2022 18:52:51 +0530 Subject: [PATCH 05/16] Added voidEncoder --- lib/route/src/Obelisk/Route.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/route/src/Obelisk/Route.hs b/lib/route/src/Obelisk/Route.hs index 8f37ef7e4..c46bb0462 100644 --- a/lib/route/src/Obelisk/Route.hs +++ b/lib/route/src/Obelisk/Route.hs @@ -114,6 +114,7 @@ module Obelisk.Route , pathQueryEncoder , handleEncoder , someSumEncoder + , voidEncoder , Void1 , void1Encoder , pathSegmentsTextEncoder @@ -199,6 +200,7 @@ import Data.Text.Lens (IsText, packed, unpacked) import Data.Type.Equality import Data.Universe import Data.Universe.Some +import Data.Void (Void, absurd) import Network.URI (URI (..)) import Network.HTTP.Types.URI import qualified Numeric.Lens @@ -1125,6 +1127,12 @@ someSumEncoder = Encoder $ pure $ EncoderImpl Right (Some r) -> Some (InR r) } +voidEncoder :: Encoder (Either Text) (Either Text) Void b +voidEncoder = unsafeMkEncoder $ EncoderImpl + { _encoderImpl_encode = absurd + , _encoderImpl_decode = \_ -> throwError "voidEncoder: can't decode anything" + } + data Void1 :: * -> * where {} instance UniverseSome Void1 where From e03d19a1341b72a39a6c207cbac6d9097f0c5658 Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Mon, 26 Sep 2022 23:15:54 -0400 Subject: [PATCH 06/16] Fix warnings/errors about redundant imports --- .../inject/src/Obelisk/ExecutableConfig/Inject.hs | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/executable-config/inject/src/Obelisk/ExecutableConfig/Inject.hs b/lib/executable-config/inject/src/Obelisk/ExecutableConfig/Inject.hs index bc4c1cdb0..f7f4adfbb 100644 --- a/lib/executable-config/inject/src/Obelisk/ExecutableConfig/Inject.hs +++ b/lib/executable-config/inject/src/Obelisk/ExecutableConfig/Inject.hs @@ -1,13 +1,11 @@ {-# LANGUAGE OverloadedStrings #-} module Obelisk.ExecutableConfig.Inject where -import Control.Monad (mapM_) import Control.Monad.IO.Class (MonadIO) import Data.ByteString (ByteString) import qualified Data.ByteString.Base64 as B64 import Data.Map (Map) import qualified Data.Map as Map -import Data.Semigroup ((<>)) import Data.Text (Text) import qualified Data.Text.Encoding as T import Reflex.Dom.Core hiding (value) From a25ddc067faf83a3d0ac796331b3c02fc090739a Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Tue, 27 Sep 2022 09:34:47 -0400 Subject: [PATCH 07/16] Fix build on newer ghc --- lib/frontend/src/Obelisk/Frontend.hs | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/frontend/src/Obelisk/Frontend.hs b/lib/frontend/src/Obelisk/Frontend.hs index a398c25aa..923624901 100644 --- a/lib/frontend/src/Obelisk/Frontend.hs +++ b/lib/frontend/src/Obelisk/Frontend.hs @@ -38,7 +38,6 @@ import Data.ByteString (ByteString) import Data.Foldable (for_) import Data.Map (Map) import Data.Maybe (catMaybes) -import Data.Monoid ((<>)) import Data.Text (Text) import qualified GHCJS.DOM as DOM import qualified GHCJS.DOM.Types as DOM From 4cc6d194cb47fd66ece3a76a9793eb32b01ebdab Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Sun, 9 Oct 2022 15:15:26 -0400 Subject: [PATCH 08/16] Update reflex-platform to expose-requester-internals branch --- dep/reflex-platform/github.json | 6 +++--- dep/reflex-platform/thunk.nix | 5 ++++- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/dep/reflex-platform/github.json b/dep/reflex-platform/github.json index 380959824..e27edb2ad 100644 --- a/dep/reflex-platform/github.json +++ b/dep/reflex-platform/github.json @@ -1,8 +1,8 @@ { "owner": "reflex-frp", "repo": "reflex-platform", - "branch": "release/0.9.2.0", + "branch": "expose-requester-internals", "private": false, - "rev": "123a6f487ca954fd983f6d4cd6b2a69d4c463d10", - "sha256": "16q1rq0rwi6l28fv46q8m0hvb9rxrzf574j865vaz04xy8d5p1ya" + "rev": "4133abf930dc1edb86ca29d2ce4f7eb88ef188e2", + "sha256": "0qvd1yh2v5q786km2hvckabm2iw6nap7xgv1wlh627dp50l4ngqz" } diff --git a/dep/reflex-platform/thunk.nix b/dep/reflex-platform/thunk.nix index 3d5bcbe56..20f2d28c2 100644 --- a/dep/reflex-platform/thunk.nix +++ b/dep/reflex-platform/thunk.nix @@ -2,7 +2,10 @@ let fetch = { private ? false, fetchSubmodules ? false, owner, repo, rev, sha256, ... }: if !fetchSubmodules && !private then builtins.fetchTarball { url = "https://github.com/${owner}/${repo}/archive/${rev}.tar.gz"; inherit sha256; - } else (import "/nix/store/qjg458n31xk1l6lj26c3b871d4i4is98-source" {}).fetchFromGitHub { + } else (import (builtins.fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/3aad50c30c826430b0270fcf8264c8c41b005403.tar.gz"; + sha256 = "0xwqsf08sywd23x0xvw4c4ghq0l28w2ki22h0bdn766i16z9q2gr"; +}) {}).fetchFromGitHub { inherit owner repo rev sha256 fetchSubmodules private; }; json = builtins.fromJSON (builtins.readFile ./github.json); From e87b0820aa47b7e36d4cba65b16d3e93d8683131 Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Sun, 6 Nov 2022 20:54:52 -0400 Subject: [PATCH 09/16] Update reflex-platform to switch to new jsaddle core --- dep/reflex-platform/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dep/reflex-platform/github.json b/dep/reflex-platform/github.json index e27edb2ad..caae77540 100644 --- a/dep/reflex-platform/github.json +++ b/dep/reflex-platform/github.json @@ -3,6 +3,6 @@ "repo": "reflex-platform", "branch": "expose-requester-internals", "private": false, - "rev": "4133abf930dc1edb86ca29d2ce4f7eb88ef188e2", - "sha256": "0qvd1yh2v5q786km2hvckabm2iw6nap7xgv1wlh627dp50l4ngqz" + "rev": "52bdac89bfce0ab219f4a6440495de40dd6d23e0", + "sha256": "1q47b9jpxr7p2mlh96iar5al86xhc5rcv8638zsk8gr5zk39502c" } From 5bd6056dbf7765f2750d71ef11f7babed84f433f Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Wed, 9 Nov 2022 22:36:42 -0400 Subject: [PATCH 10/16] Bump reflex-platform --- dep/reflex-platform/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dep/reflex-platform/github.json b/dep/reflex-platform/github.json index caae77540..571dcdb5b 100644 --- a/dep/reflex-platform/github.json +++ b/dep/reflex-platform/github.json @@ -3,6 +3,6 @@ "repo": "reflex-platform", "branch": "expose-requester-internals", "private": false, - "rev": "52bdac89bfce0ab219f4a6440495de40dd6d23e0", - "sha256": "1q47b9jpxr7p2mlh96iar5al86xhc5rcv8638zsk8gr5zk39502c" + "rev": "ceedab168f888b753dcc9c0c50f1e4339f8040d1", + "sha256": "1wzq0sndzmf676ivydy5gzsjw1jwm4ihcp6mfh7c28lvp3nm5rb6" } From bec022c868e460aa6b258a0dad6748d5562d36aa Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Thu, 10 Nov 2022 10:40:29 -0400 Subject: [PATCH 11/16] Bump reflex-platform --- dep/reflex-platform/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dep/reflex-platform/github.json b/dep/reflex-platform/github.json index 571dcdb5b..62f6e43de 100644 --- a/dep/reflex-platform/github.json +++ b/dep/reflex-platform/github.json @@ -3,6 +3,6 @@ "repo": "reflex-platform", "branch": "expose-requester-internals", "private": false, - "rev": "ceedab168f888b753dcc9c0c50f1e4339f8040d1", - "sha256": "1wzq0sndzmf676ivydy5gzsjw1jwm4ihcp6mfh7c28lvp3nm5rb6" + "rev": "9f06d40ace534afc7f922dda2a5743b6df3999b1", + "sha256": "0bgs8g2d485yv8mdh8n5q0i10kf4w45gkyhgz4kl9lld2xxnlh8z" } From b43f340263bb6204f9f34576f39677c46b595e47 Mon Sep 17 00:00:00 2001 From: Ryan Trinkle Date: Thu, 10 Nov 2022 15:23:33 -0400 Subject: [PATCH 12/16] Bump reflex-platform --- dep/reflex-platform/github.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dep/reflex-platform/github.json b/dep/reflex-platform/github.json index 62f6e43de..8edd311b8 100644 --- a/dep/reflex-platform/github.json +++ b/dep/reflex-platform/github.json @@ -3,6 +3,6 @@ "repo": "reflex-platform", "branch": "expose-requester-internals", "private": false, - "rev": "9f06d40ace534afc7f922dda2a5743b6df3999b1", - "sha256": "0bgs8g2d485yv8mdh8n5q0i10kf4w45gkyhgz4kl9lld2xxnlh8z" + "rev": "6617747ced318a1b66cfbae95252a79e2a387a6b", + "sha256": "04n0kp0kaijh8r6pn0sidbfscwihdi289rj1m3bjy7ybjng6xc9k" } From 34aa5915f378a0e47c5412d157d073e11825375b Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 7 Nov 2022 13:33:14 -0600 Subject: [PATCH 13/16] Fix backend issues --- default.nix | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/default.nix b/default.nix index 9237de02f..fa6a9c63a 100644 --- a/default.nix +++ b/default.nix @@ -210,21 +210,21 @@ in rec { exeFrontend = compressedJs frontend optimizationLevel externjs; exeFrontendAssets = mkAssets exeFrontend; exeAssets = mkAssets assets; - in pkgs.runCommand "serverExe" {} '' + in pkgs.runCommand "serverExe" { + backend = exeBackend; + frontend = exeFrontend; + frontend-assets = exeFrontendAssets; + static-assets = exeAssets; + } '' mkdir $out set -eux - ln -s '${exeBackend}'/bin/* $out/ - ln -s '${exeAssets}' $out/static.assets - for d in '${exeFrontendAssets}'/*/; do + ln -s '$backend'/bin/* $out/ + ln -s '$static-assets' $out/static.assets + for d in '$frontend-assets'/*/; do ln -s "$d" "$out"/"$(basename "$d").assets" done echo ${version} > $out/version - '' // { - backend = exeBackend; - frontend = exeFrontend; - frontend-assets = exeFrontendAssets; - static-assets = exeAssets; - }; + ''; serverModule = { exe, hostName, adminEmail, routeHost, enableHttps, version, redirectHosts ? [], configHash ? "", ... }@args: {...}: { imports = [ From 1af9eb43820ac670a3e50a77d84940018c07c8b4 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 7 Nov 2022 13:33:14 -0600 Subject: [PATCH 14/16] Fix backend issues --- default.nix | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/default.nix b/default.nix index 9237de02f..df599767a 100644 --- a/default.nix +++ b/default.nix @@ -210,21 +210,21 @@ in rec { exeFrontend = compressedJs frontend optimizationLevel externjs; exeFrontendAssets = mkAssets exeFrontend; exeAssets = mkAssets assets; - in pkgs.runCommand "serverExe" {} '' + in pkgs.runCommand "serverExe" { + backend = exeBackend; + frontend = exeFrontend; + frontend-assets = exeFrontendAssets; + static-assets = exeAssets; + } '' mkdir $out set -eux - ln -s '${exeBackend}'/bin/* $out/ - ln -s '${exeAssets}' $out/static.assets - for d in '${exeFrontendAssets}'/*/; do + ln -s $backend/bin/* $out/ + ln -s $static-assets $out/static.assets + for d in $frontend-assets/*/; do ln -s "$d" "$out"/"$(basename "$d").assets" done echo ${version} > $out/version - '' // { - backend = exeBackend; - frontend = exeFrontend; - frontend-assets = exeFrontendAssets; - static-assets = exeAssets; - }; + ''; serverModule = { exe, hostName, adminEmail, routeHost, enableHttps, version, redirectHosts ? [], configHash ? "", ... }@args: {...}: { imports = [ From a4385f9d7b44e487e09dcba9b1293f56edc3cff9 Mon Sep 17 00:00:00 2001 From: cidkidnix Date: Mon, 14 Nov 2022 07:41:00 -0600 Subject: [PATCH 15/16] test --- default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/default.nix b/default.nix index df599767a..b09ce48f5 100644 --- a/default.nix +++ b/default.nix @@ -213,14 +213,14 @@ in rec { in pkgs.runCommand "serverExe" { backend = exeBackend; frontend = exeFrontend; - frontend-assets = exeFrontendAssets; - static-assets = exeAssets; + frontendassets = exeFrontendAssets; + staticassets = exeAssets; } '' mkdir $out set -eux ln -s $backend/bin/* $out/ - ln -s $static-assets $out/static.assets - for d in $frontend-assets/*/; do + ln -s $staticassets $out/static.assets + for d in $frontendassets/*/; do ln -s "$d" "$out"/"$(basename "$d").assets" done echo ${version} > $out/version From acf032030766eec2399a18f53730a4dacdeafbf8 Mon Sep 17 00:00:00 2001 From: Ali Abrar Date: Wed, 11 Jan 2023 14:30:00 -0500 Subject: [PATCH 16/16] Fix exe packaging The initial change in 34aa5915 was designed to make it possible to override attributes in serverExe (see, e.g., how nix/test/bench.nix overrides the backend attribute with a profiled executable). This patch fixes some quoting and variable naming issues that crept in. --- default.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/default.nix b/default.nix index 1a6be2176..244f08eaa 100644 --- a/default.nix +++ b/default.nix @@ -217,14 +217,14 @@ in rec { in pkgs.runCommand "serverExe" { backend = exeBackend; frontend = exeFrontend; - frontend-assets = exeFrontendAssets; - static-assets = exeAssets; + frontendassets = exeFrontendAssets; + staticassets = exeAssets; } '' mkdir $out set -eux - ln -s '$backend'/bin/* $out/ - ln -s '$static-assets' $out/static.assets - for d in '$frontend-assets'/*/; do + ln -s "$backend"/bin/* $out/ + ln -s "$staticassets" $out/static.assets + for d in "$frontendassets"/*/; do ln -s "$d" "$out"/"$(basename "$d").assets" done echo ${version} > $out/version