cachix 1.7.9 → 1.8.0
raw patch · 5 files changed
+29/−9 lines, 5 files
Files
- CHANGELOG.md +11/−0
- cachix.cabal +1/−1
- src/Cachix/Daemon.hs +5/−1
- src/Cachix/Daemon/Client.hs +3/−1
- src/Cachix/Daemon/Listen.hs +9/−6
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 =