packages feed

cachix 1.7.9 → 1.8.0

raw patch · 5 files changed

+29/−9 lines, 5 files

Files

CHANGELOG.md view
@@ -5,6 +5,17 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). +## [1.8.0] - 2025-07-11++### Added++- daemon: the path to the daemon's socket can be configured with the `CACHIX_DAEMON_SOCKET` environment variable @joshuaspence++### Changed++- daemon: the permissions on the daemon's socket file are now set to 666 @joshuaspence+- deps: build with GHC 9.8+ ## [1.7.9] - 2025-06-02  ### Fixed
cachix.cabal view
@@ -1,6 +1,6 @@ cabal-version:      2.2 name:               cachix-version:            1.7.9+version:            1.8.0 synopsis:   Command-line client for Nix binary cache hosting https://cachix.org 
src/Cachix/Daemon.hs view
@@ -40,6 +40,7 @@ import Network.Socket qualified as Socket import Network.Socket.ByteString qualified as Socket.BS import Protolude hiding (bracket)+import System.Environment (lookupEnv) import System.IO.Error (isResourceVanishedError) import System.Posix.Process (getProcessID) import System.Posix.Signals qualified as Signal@@ -73,7 +74,10 @@   daemonEventLoop <- EventLoop.new   daemonPid <- getProcessID -  daemonSocketPath <- maybe getSocketPath pure (Options.daemonSocketPath daemonOptions)+  envSocket <- fmap toS <$> lookupEnv "CACHIX_DAEMON_SOCKET"+  let cmdSocket = Options.daemonSocketPath daemonOptions+  daemonSocketPath <- maybe getSocketPath pure (envSocket <|> cmdSocket)+   daemonSocketThread <- newEmptyMVar   daemonClients <- SocketStore.newSocketStore 
src/Cachix/Daemon/Client.hs view
@@ -15,6 +15,7 @@ import Network.Socket.ByteString qualified as Socket.BS import Network.Socket.ByteString.Lazy qualified as Socket.LBS import Protolude+import System.Environment (lookupEnv) import System.IO.Error (isResourceVanishedError)  data SocketError@@ -130,7 +131,8 @@  withDaemonConn :: Maybe FilePath -> (Socket.Socket -> IO a) -> IO a withDaemonConn optionalSocketPath f = do-  socketPath <- maybe getSocketPath pure optionalSocketPath+  envSocketPath <- lookupEnv "CACHIX_DAEMON_SOCKET"+  socketPath <- maybe getSocketPath pure (envSocketPath <|> optionalSocketPath)   bracket (open socketPath `onException` failedToConnectTo socketPath) Socket.close f   where     open socketPath = do
src/Cachix/Daemon/Listen.hs view
@@ -41,6 +41,7 @@ import System.Environment qualified as System import System.FilePath ((</>)) import System.IO.Error (isDoesNotExistError, isResourceVanishedError)+import System.Posix.Files (setFileMode)  -- TODO: reconcile with Client data ListenError@@ -59,11 +60,13 @@   EventLoop DaemonEvent a ->   FilePath ->   m ()-listen eventloop daemonSocketPath = forever $ do-  E.bracketOnError (openSocket daemonSocketPath) closeSocket $ \sock -> do-    liftIO $ Socket.listen sock Socket.maxListenQueue-    (conn, _peerAddr) <- liftIO $ Socket.accept sock-    EventLoop.send eventloop (AddSocketClient conn)+listen eventloop daemonSocketPath = do+  sock <- openSocket daemonSocketPath+  E.bracket (pure sock) closeSocket $ \sock' -> do+    liftIO $ Socket.listen sock' Socket.maxListenQueue+    forever $ do+      (conn, _peerAddr) <- liftIO $ Socket.accept sock'+      EventLoop.send eventloop (AddSocketClient conn)  -- | Handle incoming messages from a client. --@@ -148,7 +151,7 @@   deleteSocketFileIfExists socketFilePath   sock <- Socket.socket Socket.AF_UNIX Socket.Stream Socket.defaultProtocol   Socket.bind sock $ Socket.SockAddrUnix socketFilePath-  -- setFileMode socketFilePath socketFileMode+  setFileMode socketFilePath 0o666   return sock   where     deleteSocketFileIfExists path =