From 73937bab603d6e7a2bfd39050a564ece6093fb87 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 14:51:04 +0200 Subject: [PATCH 01/52] split up modules (languages, directives, expressions) useful, because now we only have to touch `Magix.Languages.*` modules when implementing new languages! --- app/Main.hs | 22 ++++++-- magix.cabal | 4 +- src/Magix.hs | 16 +++++- src/Magix/Directives.hs | 47 ++++++---------- src/Magix/Expression.hs | 15 ++--- src/Magix/Languages/Bash/Directives.hs | 2 +- src/Magix/Languages/Bash/Expression.hs | 2 +- src/Magix/Languages/Common/Directives.hs | 52 ++++++++++++++++++ src/Magix/Languages/Common/Expression.hs | 27 +++++++++ src/Magix/Languages/Directives.hs | 67 +++++++++++------------ src/Magix/Languages/Expression.hs | 28 ++++------ src/Magix/Languages/Haskell/Directives.hs | 2 +- src/Magix/Languages/Haskell/Expression.hs | 2 +- src/Magix/{ => Languages}/Language.hs | 13 +---- src/Magix/Languages/Python/Directives.hs | 2 +- src/Magix/Languages/Python/Expression.hs | 2 +- 16 files changed, 183 insertions(+), 120 deletions(-) create mode 100644 src/Magix/Languages/Common/Directives.hs create mode 100644 src/Magix/Languages/Common/Expression.hs rename src/Magix/{ => Languages}/Language.hs (59%) diff --git a/app/Main.hs b/app/Main.hs index 8253ed9..3e9aab9 100644 --- a/app/Main.hs +++ b/app/Main.hs @@ -18,12 +18,22 @@ import Control.Exception (onException, throwIO) import Data.ByteString (readFile) import Data.Text (unpack) import Data.Text.Encoding (decodeUtf8') -import Magix.Build (BuildStatus (..), build, getBuildStatus, withBuildLock) -import Magix.Config (Config, getConfig) -import Magix.Directives (Directives, getDirectives) -import Magix.Expression (getNixExpression) -import Magix.Options (Options (..), Rebuild (..), Verbosity (..), getOptions) -import Magix.Run (run) +import Magix + ( BuildStatus (..), + Config, + Directives, + Options (..), + Rebuild (..), + Verbosity (..), + build, + getBuildStatus, + getConfig, + getDirectives, + getNixExpression, + getOptions, + run, + withBuildLock, + ) import System.Console.ANSI ( Color (Green, Red, White), ColorIntensity (Dull), diff --git a/magix.cabal b/magix.cabal index a5fc4c0..4260df5 100644 --- a/magix.cabal +++ b/magix.cabal @@ -61,13 +61,15 @@ library Magix.Directives Magix.Expression Magix.Hash - Magix.Language Magix.Languages.Bash.Directives Magix.Languages.Bash.Expression + Magix.Languages.Common.Directives + Magix.Languages.Common.Expression Magix.Languages.Directives Magix.Languages.Expression Magix.Languages.Haskell.Directives Magix.Languages.Haskell.Expression + Magix.Languages.Language Magix.Languages.Python.Directives Magix.Languages.Python.Expression Magix.NixpkgsPath diff --git a/src/Magix.hs b/src/Magix.hs index 549994c..dc75022 100644 --- a/src/Magix.hs +++ b/src/Magix.hs @@ -12,8 +12,11 @@ module Magix ( -- Options. Options (..), + Rebuild (..), + Verbosity (..), getOptions, -- Configuration. + Config, getConfig, -- Directives. getDirectives, @@ -23,11 +26,18 @@ module Magix BuildStatus (..), getBuildStatus, build, + withBuildLock, + -- Run. + run, + -- Languages. + Directives, ) where -import Magix.Build (BuildStatus (..), build, getBuildStatus) -import Magix.Config (getConfig) +import Magix.Build (BuildStatus (..), build, getBuildStatus, withBuildLock) +import Magix.Config (Config, getConfig) import Magix.Directives (getDirectives) import Magix.Expression (getNixExpression) -import Magix.Options (Options (..), getOptions) +import Magix.Languages.Directives (Directives) +import Magix.Options (Options (..), Rebuild (..), Verbosity (..), getOptions) +import Magix.Run (run) diff --git a/src/Magix/Directives.hs b/src/Magix/Directives.hs index f4be112..7ffc905 100644 --- a/src/Magix/Directives.hs +++ b/src/Magix/Directives.hs @@ -10,9 +10,7 @@ -- -- Creation date: Fri Oct 18 09:17:40 2024. module Magix.Directives - ( Directives (..), - getLanguage, - pShebang, + ( pShebang, pMagixDirective, pLanguageDirectives, pDirectives, @@ -20,41 +18,30 @@ module Magix.Directives ) where -import Control.Applicative (Alternative (..)) import Control.Exception (Exception) import Data.Bifunctor (Bifunctor (..)) import Data.Text (Text) -import Magix.Language (Language (..), pLanguage) -import Magix.Languages.Bash.Directives (BashDirectives, pBashDirectives) -import Magix.Languages.Directives (Parser, pDirectiveWithValue) -import Magix.Languages.Haskell.Directives (HaskellDirectives, pHaskellDirectives) -import Magix.Languages.Python.Directives (PythonDirectives, pPythonDirectives) -import Text.Megaparsec (MonadParsec (notFollowedBy, try), chunk, errorBundlePretty, parse) -import Text.Megaparsec.Char (hspace, newline, space) +import Magix.Languages.Common.Directives (Parser, pDirectiveWithValue) +import Magix.Languages.Directives (Directives, getDirectivesParser) +import Magix.Languages.Language (Language (..), getLanguageNameLowercase) +import Text.Megaparsec + ( MonadParsec (notFollowedBy), + choice, + chunk, + errorBundlePretty, + parse, + ) +import Text.Megaparsec.Char (hspace, newline, space, string) import Prelude hiding (readFile) -data Directives - = BashD !BashDirectives - | HaskellD !HaskellDirectives - | PythonD !PythonDirectives - deriving (Eq, Show) - -getDirectivesParser :: Language -> Parser Directives -getDirectivesParser l = case l of - Bash -> BashD <$> withNewline pBashDirectives - Haskell -> HaskellD <$> withNewline pHaskellDirectives - Python -> PythonD <$> withNewline pPythonDirectives - where - withNewline p = try (newline *> p) <|> mempty - -getLanguage :: Directives -> Language -getLanguage (BashD _) = Bash -getLanguage (HaskellD _) = Haskell -getLanguage (PythonD _) = Python - pShebang :: Parser Text pShebang = pDirectiveWithValue "/usr/bin/env" (chunk "magix") +pLanguage :: Parser Language +pLanguage = choice $ map pAnyLanguage [minBound .. maxBound :: Language] + where + pAnyLanguage language = language <$ string (getLanguageNameLowercase language) + pMagixDirective :: Parser Language pMagixDirective = pDirectiveWithValue "magix" pLanguage <* hspace diff --git a/src/Magix/Expression.hs b/src/Magix/Expression.hs index 0b05a68..b8b2e31 100644 --- a/src/Magix/Expression.hs +++ b/src/Magix/Expression.hs @@ -19,12 +19,10 @@ where import Data.Text (Text, replace) import Data.Text.IO (readFile) import Magix.Config (Config (..)) -import Magix.Directives (Directives (..), getLanguage) -import Magix.Language (Language (..)) -import Magix.Languages.Bash.Expression (getBashReplacements) -import Magix.Languages.Expression (Replacement, getCommonReplacements) -import Magix.Languages.Haskell.Expression (getHaskellReplacements) -import Magix.Languages.Python.Expression (getPythonReplacements) +import Magix.Languages.Common.Expression (Replacement, getCommonReplacements) +import Magix.Languages.Directives (Directives (..), getLanguage) +import Magix.Languages.Expression (getLanguageReplacements) +import Magix.Languages.Language (Language (..)) import Paths_magix (getDataFileName) import Prelude hiding (readFile) @@ -34,11 +32,6 @@ getTemplatePath language = "src/Magix/Languages/" <> show language <> "/Template getTemplate :: Language -> IO Text getTemplate language = getDataFileName (getTemplatePath language) >>= readFile -getLanguageReplacements :: Directives -> [Replacement] -getLanguageReplacements (BashD ds) = getBashReplacements ds -getLanguageReplacements (HaskellD ds) = getHaskellReplacements ds -getLanguageReplacements (PythonD ds) = getPythonReplacements ds - getReplacements :: Config -> Directives -> [Replacement] getReplacements c ds = getCommonReplacements c ++ getLanguageReplacements ds diff --git a/src/Magix/Languages/Bash/Directives.hs b/src/Magix/Languages/Bash/Directives.hs index e436bae..63f663f 100644 --- a/src/Magix/Languages/Bash/Directives.hs +++ b/src/Magix/Languages/Bash/Directives.hs @@ -16,7 +16,7 @@ module Magix.Languages.Bash.Directives where import Data.Text (Text) -import Magix.Languages.Directives +import Magix.Languages.Common.Directives ( Parser, pDirectiveWithValues, pManyDirectives, diff --git a/src/Magix/Languages/Bash/Expression.hs b/src/Magix/Languages/Bash/Expression.hs index 0cd4c83..c800a62 100644 --- a/src/Magix/Languages/Bash/Expression.hs +++ b/src/Magix/Languages/Bash/Expression.hs @@ -16,7 +16,7 @@ where import Data.Text (unwords) import Magix.Languages.Bash.Directives (BashDirectives (..)) -import Magix.Languages.Expression (Replacement) +import Magix.Languages.Common.Expression (Replacement) import Prelude hiding (unwords) getBashReplacements :: BashDirectives -> [Replacement] diff --git a/src/Magix/Languages/Common/Directives.hs b/src/Magix/Languages/Common/Directives.hs new file mode 100644 index 0000000..deec6c1 --- /dev/null +++ b/src/Magix/Languages/Common/Directives.hs @@ -0,0 +1,52 @@ +-- | +-- Module : Magix.Languages.Directives +-- Description : Common tools for parsing directives +-- Copyright : 2024 Dominik Schrempf +-- License : GPL-3.0-or-later +-- +-- Maintainer : dominik.schrempf@gmail.com +-- Stability : experimental +-- Portability : portable +-- +-- Creation date: Fri Oct 18 09:17:40 2024. +module Magix.Languages.Common.Directives + ( Parser, + pDirectiveWithValue, + pDirectiveWithValues, + pManyDirectives, + ) +where + +import Control.Applicative (Alternative (..)) +import Data.Text (Text, pack) +import Data.Void (Void) +import Text.Megaparsec + ( Parsec, + chunk, + sepEndBy, + sepEndBy1, + ) +import Text.Megaparsec.Char + ( alphaNumChar, + hspace, + newline, + punctuationChar, + symbolChar, + ) + +type Parser = Parsec Void Text + +pDirective :: Text -> Parser Text +pDirective d = chunk "#!" *> chunk d + +pValue :: Parser Text +pValue = pack <$> some (alphaNumChar <|> punctuationChar <|> symbolChar) + +pDirectiveWithValue :: Text -> Parser a -> Parser a +pDirectiveWithValue d p = pDirective d *> hspace *> p + +pDirectiveWithValues :: Text -> Parser [Text] +pDirectiveWithValues d = pDirectiveWithValue d (sepEndBy1 pValue hspace) + +pManyDirectives :: (Monoid b) => Parser b -> Parser b +pManyDirectives p = mconcat <$> sepEndBy p (hspace <* newline) diff --git a/src/Magix/Languages/Common/Expression.hs b/src/Magix/Languages/Common/Expression.hs new file mode 100644 index 0000000..45bc361 --- /dev/null +++ b/src/Magix/Languages/Common/Expression.hs @@ -0,0 +1,27 @@ +-- | +-- Module : Magix.Languages.Expression +-- Description : Common definitions related to handling Nix expressions +-- Copyright : 2025 Dominik Schrempf +-- License : GPL-3.0-or-later +-- +-- Maintainer : dominik.schrempf@gmail.com +-- Stability : experimental +-- Portability : portable +-- +-- Creation date: Fri Apr 11 06:36:34 2025. +module Magix.Languages.Common.Expression + ( Replacement, + getCommonReplacements, + ) +where + +import Data.Text (Text, pack) +import Magix.Config (Config (..)) + +type Replacement = (Text, Text) + +getCommonReplacements :: Config -> [Replacement] +getCommonReplacements c = + [ ("__SCRIPT_NAME__", pack $ scriptName c), + ("__SCRIPT_SOURCE__", pack $ scriptLinkPath c) + ] diff --git a/src/Magix/Languages/Directives.hs b/src/Magix/Languages/Directives.hs index 2b56b96..3e42a10 100644 --- a/src/Magix/Languages/Directives.hs +++ b/src/Magix/Languages/Directives.hs @@ -1,52 +1,47 @@ -- | -- Module : Magix.Languages.Directives --- Description : Common tools for parsing directives --- Copyright : 2024 Dominik Schrempf +-- Description : Language directives supported by Magix +-- Copyright : 2025 Dominik Schrempf -- License : GPL-3.0-or-later -- -- Maintainer : dominik.schrempf@gmail.com -- Stability : experimental -- Portability : portable -- --- Creation date: Fri Oct 18 09:17:40 2024. +-- Creation date: Mon Apr 22 14:10:46 2025. +-- +-- Bijective map between `Language` and `Directives`. module Magix.Languages.Directives - ( Parser, - pDirectiveWithValue, - pDirectiveWithValues, - pManyDirectives, + ( Directives (..), + getDirectivesParser, + getLanguage, ) where import Control.Applicative (Alternative (..)) -import Data.Text (Text, pack) -import Data.Void (Void) -import Text.Megaparsec - ( Parsec, - chunk, - sepEndBy, - sepEndBy1, - ) -import Text.Megaparsec.Char - ( alphaNumChar, - hspace, - newline, - punctuationChar, - symbolChar, - ) - -type Parser = Parsec Void Text - -pDirective :: Text -> Parser Text -pDirective d = chunk "#!" *> chunk d - -pValue :: Parser Text -pValue = pack <$> some (alphaNumChar <|> punctuationChar <|> symbolChar) +import Magix.Languages.Bash.Directives (BashDirectives, pBashDirectives) +import Magix.Languages.Common.Directives (Parser) +import Magix.Languages.Haskell.Directives (HaskellDirectives, pHaskellDirectives) +import Magix.Languages.Language (Language (..)) +import Magix.Languages.Python.Directives (PythonDirectives, pPythonDirectives) +import Text.Megaparsec (try) +import Text.Megaparsec.Char (newline) -pDirectiveWithValue :: Text -> Parser a -> Parser a -pDirectiveWithValue d p = pDirective d *> hspace *> p +data Directives + = BashD !BashDirectives + | HaskellD !HaskellDirectives + | PythonD !PythonDirectives + deriving (Eq, Show) -pDirectiveWithValues :: Text -> Parser [Text] -pDirectiveWithValues d = pDirectiveWithValue d (sepEndBy1 pValue hspace) +getDirectivesParser :: Language -> Parser Directives +getDirectivesParser l = case l of + Bash -> BashD <$> withNewline pBashDirectives + Haskell -> HaskellD <$> withNewline pHaskellDirectives + Python -> PythonD <$> withNewline pPythonDirectives + where + withNewline p = try (newline *> p) <|> mempty -pManyDirectives :: (Monoid b) => Parser b -> Parser b -pManyDirectives p = mconcat <$> sepEndBy p (hspace <* newline) +getLanguage :: Directives -> Language +getLanguage (BashD _) = Bash +getLanguage (HaskellD _) = Haskell +getLanguage (PythonD _) = Python diff --git a/src/Magix/Languages/Expression.hs b/src/Magix/Languages/Expression.hs index 3dbebce..03c3261 100644 --- a/src/Magix/Languages/Expression.hs +++ b/src/Magix/Languages/Expression.hs @@ -1,6 +1,6 @@ -- | -- Module : Magix.Languages.Expression --- Description : Common definitions related to handling Nix expressions +-- Description : Language expressions supported by Magix -- Copyright : 2025 Dominik Schrempf -- License : GPL-3.0-or-later -- @@ -8,20 +8,16 @@ -- Stability : experimental -- Portability : portable -- --- Creation date: Fri Apr 11 06:36:34 2025. -module Magix.Languages.Expression - ( Replacement, - getCommonReplacements, - ) -where +-- Creation date: Mon Apr 22 14:10:46 2025. +module Magix.Languages.Expression (getLanguageReplacements) where -import Data.Text (Text, pack) -import Magix.Config (Config (..)) +import Magix.Languages.Bash.Expression (getBashReplacements) +import Magix.Languages.Common.Expression (Replacement) +import Magix.Languages.Directives (Directives (BashD, HaskellD, PythonD)) +import Magix.Languages.Haskell.Expression (getHaskellReplacements) +import Magix.Languages.Python.Expression (getPythonReplacements) -type Replacement = (Text, Text) - -getCommonReplacements :: Config -> [Replacement] -getCommonReplacements c = - [ ("__SCRIPT_NAME__", pack $ scriptName c), - ("__SCRIPT_SOURCE__", pack $ scriptLinkPath c) - ] +getLanguageReplacements :: Directives -> [Replacement] +getLanguageReplacements (BashD ds) = getBashReplacements ds +getLanguageReplacements (HaskellD ds) = getHaskellReplacements ds +getLanguageReplacements (PythonD ds) = getPythonReplacements ds diff --git a/src/Magix/Languages/Haskell/Directives.hs b/src/Magix/Languages/Haskell/Directives.hs index bd35c8e..5367041 100644 --- a/src/Magix/Languages/Haskell/Directives.hs +++ b/src/Magix/Languages/Haskell/Directives.hs @@ -17,7 +17,7 @@ where import Control.Applicative (Alternative (..)) import Data.Text (Text) -import Magix.Languages.Directives +import Magix.Languages.Common.Directives ( Parser, pDirectiveWithValues, pManyDirectives, diff --git a/src/Magix/Languages/Haskell/Expression.hs b/src/Magix/Languages/Haskell/Expression.hs index 2b5644e..819a16f 100644 --- a/src/Magix/Languages/Haskell/Expression.hs +++ b/src/Magix/Languages/Haskell/Expression.hs @@ -15,7 +15,7 @@ module Magix.Languages.Haskell.Expression where import Data.Text (unwords) -import Magix.Languages.Expression (Replacement) +import Magix.Languages.Common.Expression (Replacement) import Magix.Languages.Haskell.Directives (HaskellDirectives (..)) import Prelude hiding (readFile, unwords) diff --git a/src/Magix/Language.hs b/src/Magix/Languages/Language.hs similarity index 59% rename from src/Magix/Language.hs rename to src/Magix/Languages/Language.hs index 0b53e08..69f1243 100644 --- a/src/Magix/Language.hs +++ b/src/Magix/Languages/Language.hs @@ -1,5 +1,5 @@ -- | --- Module : Magix.Language +-- Module : Magix.Languages.Language -- Description : Languages supported by Magix -- Copyright : 2025 Dominik Schrempf -- License : GPL-3.0-or-later @@ -9,25 +9,16 @@ -- Portability : portable -- -- Creation date: Mon Apr 21 14:10:46 2025. -module Magix.Language +module Magix.Languages.Language ( Language (..), getLanguageNameLowercase, - pLanguage, ) where import Data.Text (Text, pack, toLower) -import Magix.Languages.Directives (Parser) -import Text.Megaparsec (choice) -import Text.Megaparsec.Char (string) data Language = Bash | Haskell | Python deriving (Eq, Show, Ord, Enum, Bounded) getLanguageNameLowercase :: Language -> Text getLanguageNameLowercase = toLower . pack . show - -pLanguage :: Parser Language -pLanguage = choice $ map pAnyLanguage [minBound .. maxBound :: Language] - where - pAnyLanguage language = language <$ string (getLanguageNameLowercase language) diff --git a/src/Magix/Languages/Python/Directives.hs b/src/Magix/Languages/Python/Directives.hs index 26d2e9c..ffe660a 100644 --- a/src/Magix/Languages/Python/Directives.hs +++ b/src/Magix/Languages/Python/Directives.hs @@ -16,7 +16,7 @@ module Magix.Languages.Python.Directives where import Data.Text (Text) -import Magix.Languages.Directives +import Magix.Languages.Common.Directives ( Parser, pDirectiveWithValues, pManyDirectives, diff --git a/src/Magix/Languages/Python/Expression.hs b/src/Magix/Languages/Python/Expression.hs index ad25d2e..361f861 100644 --- a/src/Magix/Languages/Python/Expression.hs +++ b/src/Magix/Languages/Python/Expression.hs @@ -15,7 +15,7 @@ module Magix.Languages.Python.Expression where import Data.Text (unwords) -import Magix.Languages.Expression (Replacement) +import Magix.Languages.Common.Expression (Replacement) import Magix.Languages.Python.Directives (PythonDirectives (..)) import Prelude hiding (unwords) From 4a77b0322f9af11b34242ee72c67c0973b7b02d9 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 15:05:58 +0200 Subject: [PATCH 02/52] readme: new languages --- Readme.org | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/Readme.org b/Readme.org index 503431f..94fe36f 100644 --- a/Readme.org +++ b/Readme.org @@ -95,6 +95,12 @@ Available options: SCRIPT_ARGS Arguments passed on to the script #+end_example +* New languages +We have designed Magix so that implementing new languages is straightforward. In +particular: +- Change and add modules only within the =src/Magix/Languages/*= namespace. +- Add language-specific tests to =test/Magix/Languages/*=. + * Next steps - Property-based testing (e.g., generate arbitrary directives or even scripts). When creating arbitrary directives, one could test if the resulting From 2f249c91ee7f4ed39bf78528eecef262f019e3ec Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 15:09:37 +0200 Subject: [PATCH 03/52] changelog and some comments --- Changelog.org | 1 + src/Magix/Languages/Common/Directives.hs | 2 +- src/Magix/Languages/Common/Expression.hs | 2 +- src/Magix/Languages/Directives.hs | 2 +- src/Magix/Languages/Expression.hs | 2 +- 5 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Changelog.org b/Changelog.org index d41a1fd..a6ed2bc 100644 --- a/Changelog.org +++ b/Changelog.org @@ -1,4 +1,5 @@ * Unreleased +- Split modules so that implementing new languages becomes easier - More tests - Language data type diff --git a/src/Magix/Languages/Common/Directives.hs b/src/Magix/Languages/Common/Directives.hs index deec6c1..a8f1c2e 100644 --- a/src/Magix/Languages/Common/Directives.hs +++ b/src/Magix/Languages/Common/Directives.hs @@ -1,5 +1,5 @@ -- | --- Module : Magix.Languages.Directives +-- Module : Magix.Languages.Common.Directives -- Description : Common tools for parsing directives -- Copyright : 2024 Dominik Schrempf -- License : GPL-3.0-or-later diff --git a/src/Magix/Languages/Common/Expression.hs b/src/Magix/Languages/Common/Expression.hs index 45bc361..22522b6 100644 --- a/src/Magix/Languages/Common/Expression.hs +++ b/src/Magix/Languages/Common/Expression.hs @@ -1,5 +1,5 @@ -- | --- Module : Magix.Languages.Expression +-- Module : Magix.Languages.Common.Expression -- Description : Common definitions related to handling Nix expressions -- Copyright : 2025 Dominik Schrempf -- License : GPL-3.0-or-later diff --git a/src/Magix/Languages/Directives.hs b/src/Magix/Languages/Directives.hs index 3e42a10..5d887f4 100644 --- a/src/Magix/Languages/Directives.hs +++ b/src/Magix/Languages/Directives.hs @@ -1,6 +1,6 @@ -- | -- Module : Magix.Languages.Directives --- Description : Language directives supported by Magix +-- Description : Pooled language directives -- Copyright : 2025 Dominik Schrempf -- License : GPL-3.0-or-later -- diff --git a/src/Magix/Languages/Expression.hs b/src/Magix/Languages/Expression.hs index 03c3261..59ca2ed 100644 --- a/src/Magix/Languages/Expression.hs +++ b/src/Magix/Languages/Expression.hs @@ -1,6 +1,6 @@ -- | -- Module : Magix.Languages.Expression --- Description : Language expressions supported by Magix +-- Description : Pooled language expressions -- Copyright : 2025 Dominik Schrempf -- License : GPL-3.0-or-later -- From e5228e74899aa70e5bf732ce3dd5a8292ed7a8f2 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 15:10:20 +0200 Subject: [PATCH 04/52] test: move directives spec --- magix.cabal | 2 +- test/Magix/Languages/{ => Common}/DirectivesSpec.hs | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) rename test/Magix/Languages/{ => Common}/DirectivesSpec.hs (95%) diff --git a/magix.cabal b/magix.cabal index 4260df5..7c833a1 100644 --- a/magix.cabal +++ b/magix.cabal @@ -120,7 +120,7 @@ test-suite test-magix Magix.DirectivesSpec Magix.Languages.Bash.DirectivesSpec Magix.Languages.Bash.ExpressionSpec - Magix.Languages.DirectivesSpec + Magix.Languages.Common.DirectivesSpec Magix.Languages.Haskell.DirectivesSpec Magix.Languages.Haskell.ExpressionSpec Magix.Languages.Python.DirectivesSpec diff --git a/test/Magix/Languages/DirectivesSpec.hs b/test/Magix/Languages/Common/DirectivesSpec.hs similarity index 95% rename from test/Magix/Languages/DirectivesSpec.hs rename to test/Magix/Languages/Common/DirectivesSpec.hs index 8417fc3..7a3c021 100644 --- a/test/Magix/Languages/DirectivesSpec.hs +++ b/test/Magix/Languages/Common/DirectivesSpec.hs @@ -1,5 +1,5 @@ -- | --- Module : Magix.Languages.DirectivesSpec +-- Module : Magix.Languages.Common.DirectivesSpec -- Description : Tests for parsing common directives -- Copyright : 2024 Dominik Schrempf -- License : GPL-3.0-or-later @@ -9,7 +9,7 @@ -- Portability : portable -- -- Creation date: Fri Oct 18 09:34:01 2024. -module Magix.Languages.DirectivesSpec +module Magix.Languages.Common.DirectivesSpec ( spec, ) where From 85a77317a9fed45e58bf72ff2d2e5350687e903f Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 15:14:38 +0200 Subject: [PATCH 05/52] tests: fix tests after module-split --- test/Magix/DirectivesSpec.hs | 6 +++--- test/Magix/Languages/Bash/ExpressionSpec.hs | 2 +- test/Magix/Languages/Common/DirectivesSpec.hs | 2 +- test/Magix/Languages/Haskell/ExpressionSpec.hs | 2 +- test/Magix/Languages/Python/ExpressionSpec.hs | 2 +- test/Magix/Tools.hs | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/Magix/DirectivesSpec.hs b/test/Magix/DirectivesSpec.hs index 83a1875..b12fff6 100644 --- a/test/Magix/DirectivesSpec.hs +++ b/test/Magix/DirectivesSpec.hs @@ -17,15 +17,15 @@ where import Data.Text (Text, unlines) import Data.Text.IO (readFile) import Magix.Directives - ( Directives (..), - pDirectives, + ( pDirectives, pLanguageDirectives, pMagixDirective, pShebang, ) -import Magix.Language (Language (..), getLanguageNameLowercase) import Magix.Languages.Bash.Directives (BashDirectives (..)) +import Magix.Languages.Directives (Directives (..)) import Magix.Languages.Haskell.Directives (HaskellDirectives (..)) +import Magix.Languages.Language (Language (..), getLanguageNameLowercase) import Magix.Languages.Python.Directives (PythonDirectives (..)) import Magix.Tools (parseF, parseS) import Test.Hspec (Spec, SpecWith, describe, it, shouldBe) diff --git a/test/Magix/Languages/Bash/ExpressionSpec.hs b/test/Magix/Languages/Bash/ExpressionSpec.hs index de4caa2..12f43db 100644 --- a/test/Magix/Languages/Bash/ExpressionSpec.hs +++ b/test/Magix/Languages/Bash/ExpressionSpec.hs @@ -15,8 +15,8 @@ module Magix.Languages.Bash.ExpressionSpec where import Data.Text (Text) -import Magix.Directives (Directives (..)) import Magix.Languages.Bash.Directives (BashDirectives (..)) +import Magix.Languages.Directives (Directives (..)) import Magix.Tools (testExpression) import Test.Hspec (Spec) diff --git a/test/Magix/Languages/Common/DirectivesSpec.hs b/test/Magix/Languages/Common/DirectivesSpec.hs index 7a3c021..0740a2c 100644 --- a/test/Magix/Languages/Common/DirectivesSpec.hs +++ b/test/Magix/Languages/Common/DirectivesSpec.hs @@ -14,7 +14,7 @@ module Magix.Languages.Common.DirectivesSpec ) where -import Magix.Languages.Directives +import Magix.Languages.Common.Directives ( pDirectiveWithValue, pDirectiveWithValues, pManyDirectives, diff --git a/test/Magix/Languages/Haskell/ExpressionSpec.hs b/test/Magix/Languages/Haskell/ExpressionSpec.hs index 2813f08..d6caff5 100644 --- a/test/Magix/Languages/Haskell/ExpressionSpec.hs +++ b/test/Magix/Languages/Haskell/ExpressionSpec.hs @@ -15,7 +15,7 @@ module Magix.Languages.Haskell.ExpressionSpec where import Data.Text (Text) -import Magix.Directives (Directives (..)) +import Magix.Languages.Directives (Directives (..)) import Magix.Languages.Haskell.Directives (HaskellDirectives (..)) import Magix.Tools (testExpression) import Test.Hspec (Spec) diff --git a/test/Magix/Languages/Python/ExpressionSpec.hs b/test/Magix/Languages/Python/ExpressionSpec.hs index 66f74dd..b8852cf 100644 --- a/test/Magix/Languages/Python/ExpressionSpec.hs +++ b/test/Magix/Languages/Python/ExpressionSpec.hs @@ -15,7 +15,7 @@ module Magix.Languages.Python.ExpressionSpec where import Data.Text (Text) -import Magix.Directives (Directives (..)) +import Magix.Languages.Directives (Directives (..)) import Magix.Languages.Python.Directives (PythonDirectives (..)) import Magix.Tools (testExpression) import Test.Hspec (Spec) diff --git a/test/Magix/Tools.hs b/test/Magix/Tools.hs index ea38ad3..da5cb02 100644 --- a/test/Magix/Tools.hs +++ b/test/Magix/Tools.hs @@ -23,8 +23,8 @@ import Data.ByteString (ByteString, pack) import Data.Either (isLeft) import Data.Text (Text, isInfixOf, unwords) import Magix.Config (Config (..)) -import Magix.Directives (Directives, getLanguage) import Magix.Expression (getNixExpression, getReplacements, getTemplate) +import Magix.Languages.Directives (Directives, getLanguage) import System.Directory (createDirectory, getTemporaryDirectory) import System.FilePath (()) import System.Random.Stateful (randomIO, randomRIO) From 05285e2244595b65ee60529075c755e268fb2113 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 15:35:21 +0200 Subject: [PATCH 06/52] tests: towards unified testing for all languages --- magix.cabal | 1 + test/Magix/DirectivesSpec.hs | 52 ++++++++++------------------------- test/Magix/Languages/Tools.hs | 42 ++++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 38 deletions(-) create mode 100644 test/Magix/Languages/Tools.hs diff --git a/magix.cabal b/magix.cabal index 7c833a1..c22a765 100644 --- a/magix.cabal +++ b/magix.cabal @@ -125,6 +125,7 @@ test-suite test-magix Magix.Languages.Haskell.ExpressionSpec Magix.Languages.Python.DirectivesSpec Magix.Languages.Python.ExpressionSpec + Magix.Languages.Tools Magix.NixpkgsPathSpec Magix.Tools diff --git a/test/Magix/DirectivesSpec.hs b/test/Magix/DirectivesSpec.hs index b12fff6..f117861 100644 --- a/test/Magix/DirectivesSpec.hs +++ b/test/Magix/DirectivesSpec.hs @@ -27,37 +27,14 @@ import Magix.Languages.Directives (Directives (..)) import Magix.Languages.Haskell.Directives (HaskellDirectives (..)) import Magix.Languages.Language (Language (..), getLanguageNameLowercase) import Magix.Languages.Python.Directives (PythonDirectives (..)) +import Magix.Languages.Tools (getEmptyDirectives, getMinimalTestcase) import Magix.Tools (parseF, parseS) -import Test.Hspec (Spec, SpecWith, describe, it, shouldBe) -import Text.Megaparsec (parse) +import Test.Hspec (Spec, SpecWith, describe, it) import Prelude hiding (readFile, unlines) -fnMinimalBash :: FilePath -fnMinimalBash = "test-scripts/bash/minimal" - -readMinimalBash :: IO Text -readMinimalBash = readFile fnMinimalBash - -fnMinimalHaskell :: FilePath -fnMinimalHaskell = "test-scripts/haskell/minimal" - -readMinimalHaskell :: IO Text -readMinimalHaskell = readFile fnMinimalHaskell - -fnMinimalPython :: FilePath -fnMinimalPython = "test-scripts/python/minimal" - -readMinimalPython :: IO Text -readMinimalPython = readFile fnMinimalPython - languages :: [Language] languages = [minBound .. maxBound] -getEmptyDirectives :: Language -> Directives -getEmptyDirectives Bash = BashD mempty -getEmptyDirectives Haskell = HaskellD mempty -getEmptyDirectives Python = PythonD mempty - pEmptyLanguageDirectivesFor :: Language -> SpecWith () pEmptyLanguageDirectivesFor language = it description $ @@ -74,6 +51,13 @@ pEmptyLanguageDirectivesFor language = emptyDirectives = getEmptyDirectives language testWith directives = parseS pLanguageDirectives directives emptyDirectives +pMinimalFor :: Language -> SpecWith () +pMinimalFor language = + it "parses minimal sample scripts" $ do + let (fn, res) = getMinimalTestcase language + fo <- readFile fn + parseS pDirectives fo res + spec :: Spec spec = do describe "pShebang" $ do @@ -95,9 +79,11 @@ spec = do sequence_ [testLanguage lang | lang <- languages] it "fails on wrong Magix directives" $ do - parseF pMagixDirective "#!magic haskell" + parseF pMagixDirective "#!magic foo" parseF pMagixDirective "#!magic" + -- TODO: Forcce testing of all languages. If `bash` or any other language is + -- used somewhere, instead test for all languages. describe "pLanguageDirectives" $ do it "fails on wrong language directives" $ do parseF pLanguageDirectives "#! bar" @@ -111,7 +97,7 @@ spec = do mapM_ pEmptyLanguageDirectivesFor languages - -- Force testing of all languages. + -- TODO: Force testing of all languages. it "parses Bash language directives" $ do parseS pLanguageDirectives "#!magix bash\n#!packages bar" $ BashD (BashDirectives ["bar"]) @@ -127,17 +113,7 @@ spec = do PythonD (PythonDirectives ["requests"]) describe "pDirectives" $ do - -- Force testing of all languages. - it "parses minimal sample scripts" $ do - minimalBash <- readMinimalBash - parse pDirectives fnMinimalBash minimalBash - `shouldBe` Right (BashD (BashDirectives ["jq"])) - minimalHaskell <- readMinimalHaskell - parse pDirectives fnMinimalHaskell minimalHaskell - `shouldBe` Right (HaskellD (HaskellDirectives ["bytestring"] ["-threaded"])) - minimalPython <- readMinimalPython - parse pDirectives fnMinimalPython minimalPython - `shouldBe` Right (PythonD (PythonDirectives ["numpy"])) + mapM_ pMinimalFor languages it "parses some edge cases" $ do let spaceTest :: Text = diff --git a/test/Magix/Languages/Tools.hs b/test/Magix/Languages/Tools.hs new file mode 100644 index 0000000..35071c7 --- /dev/null +++ b/test/Magix/Languages/Tools.hs @@ -0,0 +1,42 @@ +-- | +-- Module : Magix.Languages.Tools +-- Description : Language-specific test tools +-- Copyright : 2025 Dominik Schrempf +-- License : GPL-3.0-or-later +-- +-- Maintainer : dominik.schrempf@gmail.com +-- Stability : experimental +-- Portability : portable +-- +-- Creation date: Tue Apr 22 15:19:11 2025. +module Magix.Languages.Tools + ( getEmptyDirectives, + getMinimalTestcase, + ) +where + +import Magix.Languages.Bash.Directives (BashDirectives (BashDirectives)) +import Magix.Languages.Directives (Directives (..)) +import Magix.Languages.Haskell.Directives (HaskellDirectives (HaskellDirectives)) +import Magix.Languages.Language (Language (..)) +import Magix.Languages.Python.Directives (PythonDirectives (PythonDirectives)) +import Prelude hiding (readFile) + +getEmptyDirectives :: Language -> Directives +getEmptyDirectives Bash = BashD mempty +getEmptyDirectives Haskell = HaskellD mempty +getEmptyDirectives Python = PythonD mempty + +getMinimalTestcase :: Language -> (FilePath, Directives) +getMinimalTestcase Bash = + ( "test-scripts/bash/minimal", + BashD (BashDirectives ["jq"]) + ) +getMinimalTestcase Haskell = + ( "test-scripts/haskell/minimal", + HaskellD (HaskellDirectives ["bytestring"] ["-threaded"]) + ) +getMinimalTestcase Python = + ( "test-scripts/python/minimal", + PythonD (PythonDirectives ["numpy"]) + ) From ba2de391ffbaf884ef9db11ec421a67e8d0553f7 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 22 Apr 2025 22:20:45 +0200 Subject: [PATCH 07/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3725da4..41f775f 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1744932701, - "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", + "lastModified": 1745234285, + "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", + "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", "type": "github" }, "original": { From d75bdaa452fd95e1d3b73d1a7c034cb6b8a72f3e Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Thu, 24 Apr 2025 13:10:03 +0200 Subject: [PATCH 08/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 41f775f..c68aab2 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745234285, - "narHash": "sha256-GfpyMzxwkfgRVN0cTGQSkTC0OHhEkv3Jf6Tcjm//qZ0=", + "lastModified": 1745391562, + "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c11863f1e964833214b767f4a369c6e6a7aba141", + "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", "type": "github" }, "original": { From e93f813bfb73fffbbac0789d610e90bda1f83a8a Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 26 Apr 2025 07:34:47 +0200 Subject: [PATCH 09/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index c68aab2..faa26f5 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745391562, - "narHash": "sha256-sPwcCYuiEopaafePqlG826tBhctuJsLx/mhKKM5Fmjo=", + "lastModified": 1745526057, + "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "8a2f738d9d1f1d986b5a4cd2fd2061a7127237d7", + "rev": "f771eb401a46846c1aebd20552521b233dd7e18b", "type": "github" }, "original": { From 3970b6384b8952a18328cd10ca4589c643ebe29d Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 29 Apr 2025 06:38:28 +0200 Subject: [PATCH 10/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index faa26f5..3d5472a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745526057, - "narHash": "sha256-ITSpPDwvLBZBnPRS2bUcHY3gZSwis/uTe255QgMtTLA=", + "lastModified": 1745794561, + "narHash": "sha256-T36rUZHUART00h3dW4sV5tv4MrXKT7aWjNfHiZz7OHg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f771eb401a46846c1aebd20552521b233dd7e18b", + "rev": "5461b7fa65f3ca74cef60be837fd559a8918eaa0", "type": "github" }, "original": { From 48fd1a3c988fa31fdb91e7784f2eee07756f3bbd Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 30 Apr 2025 06:07:24 +0200 Subject: [PATCH 11/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3d5472a..1f98193 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745794561, - "narHash": "sha256-T36rUZHUART00h3dW4sV5tv4MrXKT7aWjNfHiZz7OHg=", + "lastModified": 1745930157, + "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5461b7fa65f3ca74cef60be837fd559a8918eaa0", + "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", "type": "github" }, "original": { From 73d3962d833a3bd5b7c77669eae49e2104b9ef28 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Fri, 2 May 2025 06:29:06 +0200 Subject: [PATCH 12/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 1f98193..6457ad6 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1745930157, - "narHash": "sha256-y3h3NLnzRSiUkYpnfvnS669zWZLoqqI6NprtLQ+5dck=", + "lastModified": 1746064326, + "narHash": "sha256-r7IZkN9NhK/IO9/J6D9ih2P1OXb67nr5HaQ1YAte18w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "46e634be05ce9dc6d4db8e664515ba10b78151ae", + "rev": "91bf6dffa21c7709607c9fdbf9a6acb44e7a0a5d", "type": "github" }, "original": { From 762fd8f02fdb82c6670454c2b294f00dd7f040d9 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 3 May 2025 13:43:20 +0200 Subject: [PATCH 13/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 6457ad6..7f66a7c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746064326, - "narHash": "sha256-r7IZkN9NhK/IO9/J6D9ih2P1OXb67nr5HaQ1YAte18w=", + "lastModified": 1746141548, + "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "91bf6dffa21c7709607c9fdbf9a6acb44e7a0a5d", + "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", "type": "github" }, "original": { From bc75dfcfe2aa428c1bb51cf54b83cb78f65a3ddf Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 5 May 2025 06:09:59 +0200 Subject: [PATCH 14/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 7f66a7c..bb33fd6 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746141548, - "narHash": "sha256-IgBWhX7A2oJmZFIrpRuMnw5RAufVnfvOgHWgIdds+hc=", + "lastModified": 1746328495, + "narHash": "sha256-uKCfuDs7ZM3QpCE/jnfubTg459CnKnJG/LwqEVEdEiw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "f02fddb8acef29a8b32f10a335d44828d7825b78", + "rev": "979daf34c8cacebcd917d540070b52a3c2b9b16e", "type": "github" }, "original": { From 9755a9b6ab8f632399b79acf1eca317e1fdebaf1 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 6 May 2025 21:22:55 +0200 Subject: [PATCH 15/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index bb33fd6..3a9bd18 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746328495, - "narHash": "sha256-uKCfuDs7ZM3QpCE/jnfubTg459CnKnJG/LwqEVEdEiw=", + "lastModified": 1746461020, + "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "979daf34c8cacebcd917d540070b52a3c2b9b16e", + "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", "type": "github" }, "original": { From ded72407d7a62f6779f783c2ce8f33169d7e44a0 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 6 May 2025 21:52:49 +0200 Subject: [PATCH 16/52] tooling: ghc98 --- Changelog.org | 1 + flake.nix | 3 +-- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Changelog.org b/Changelog.org index a6ed2bc..7ee44eb 100644 --- a/Changelog.org +++ b/Changelog.org @@ -2,6 +2,7 @@ - Split modules so that implementing new languages becomes easier - More tests - Language data type +- Toolchain downgrade to GHC 9.8 (dropped into Nixpkgs, and so is easier to use) * Version 0.4.0.1 - Update and improve GitHub workflows (use Nix and Cachix) diff --git a/flake.nix b/flake.nix index 157ce51..fb34aba 100644 --- a/flake.nix +++ b/flake.nix @@ -15,8 +15,7 @@ theseHpkgNames = [ "magix" ]; - # NOTE: When updating GHC, do not forget to also update the CICD script. - thisGhcVersion = "ghc910"; + thisGhcVersion = "ghc98"; hOverlay = selfn: supern: { haskell = supern.haskell // { packageOverrides = From 61feda01d9a64947bfedea30f6c2e008c3430be2 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 6 May 2025 21:58:47 +0200 Subject: [PATCH 17/52] fix foldable once and for all --- src/Magix/Expression.hs | 3 ++- src/Magix/Hash.hs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Magix/Expression.hs b/src/Magix/Expression.hs index b8b2e31..8cc807a 100644 --- a/src/Magix/Expression.hs +++ b/src/Magix/Expression.hs @@ -16,6 +16,7 @@ module Magix.Expression ) where +import Data.Foldable qualified as Foldable import Data.Text (Text, replace) import Data.Text.IO (readFile) import Magix.Config (Config (..)) @@ -38,6 +39,6 @@ getReplacements c ds = getCommonReplacements c ++ getLanguageReplacements ds getNixExpression :: Config -> Directives -> IO Text getNixExpression c ds = do t <- getTemplate $ getLanguage ds - pure $ foldl' replace' t (getReplacements c ds) + pure $ Foldable.foldl' replace' t (getReplacements c ds) where replace' t (x, y) = replace x y t diff --git a/src/Magix/Hash.hs b/src/Magix/Hash.hs index dbc32dc..eaa65b7 100644 --- a/src/Magix/Hash.hs +++ b/src/Magix/Hash.hs @@ -17,6 +17,7 @@ where import Crypto.Hash.SHA256 (finalize, init, update) import Data.ByteString (ByteString, toStrict) import Data.ByteString.Builder (Builder, charUtf8, intDec, toLazyByteString) +import Data.Foldable qualified as Foldable import Data.Version (Version (versionBranch)) import Paths_magix (version) import Prelude hiding (init) @@ -27,7 +28,7 @@ toByteStringWith f = toStrict . toLazyByteString . mconcat . map f getMagixHash :: FilePath -> ByteString -> ByteString getMagixHash nixpkgsPath scriptContents = finalize $ - foldl' + Foldable.foldl' update init [ toByteStringWith charUtf8 nixpkgsPath, From 22cb3f45002c065860867acd8f12c81edef6a816 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Fri, 9 May 2025 05:31:52 +0200 Subject: [PATCH 18/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3a9bd18..e86b79c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746461020, - "narHash": "sha256-7+pG1I9jvxNlmln4YgnlW4o+w0TZX24k688mibiFDUE=", + "lastModified": 1746663147, + "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3730d8a308f94996a9ba7c7138ede69c1b9ac4ae", + "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", "type": "github" }, "original": { From b768617ee03eba9610dd978cd23d6e680e1793ff Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 12 May 2025 09:13:44 +0200 Subject: [PATCH 19/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index e86b79c..affeabc 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746663147, - "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", + "lastModified": 1746904237, + "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", + "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", "type": "github" }, "original": { From 1e3107aef2b185dcb7b826742fa9e659e68a6289 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Thu, 15 May 2025 12:57:43 +0200 Subject: [PATCH 20/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index affeabc..8b7b85f 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746904237, - "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", + "lastModified": 1747179050, + "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", + "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", "type": "github" }, "original": { From fc7d3d19a5523157aecd4de300d033429e7b87fe Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 17 May 2025 18:38:12 +0200 Subject: [PATCH 21/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 8b7b85f..bcaa61c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747179050, - "narHash": "sha256-qhFMmDkeJX9KJwr5H32f1r7Prs7XbQWtO0h3V0a0rFY=", + "lastModified": 1747327360, + "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "adaa24fbf46737f3f1b5497bf64bae750f82942e", + "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", "type": "github" }, "original": { From 596f7df8a45ccccaa003c79d70ce45e05b0cc241 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 19 May 2025 06:33:11 +0200 Subject: [PATCH 22/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index bcaa61c..bac1c51 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747327360, - "narHash": "sha256-LSmTbiq/nqZR9B2t4MRnWG7cb0KVNU70dB7RT4+wYK4=", + "lastModified": 1747542820, + "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e06158e58f3adee28b139e9c2bcfcc41f8625b46", + "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", "type": "github" }, "original": { From 8974e78233f069d8aaa34dce9def87285fa5ca28 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 21 May 2025 06:06:27 +0200 Subject: [PATCH 23/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index bac1c51..1c513ae 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747542820, - "narHash": "sha256-GaOZntlJ6gPPbbkTLjbd8BMWaDYafhuuYRNrxCGnPJw=", + "lastModified": 1747744144, + "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "292fa7d4f6519c074f0a50394dbbe69859bb6043", + "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", "type": "github" }, "original": { From 58e4447b8af3974d10a4e40fd656078e05b82276 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sun, 25 May 2025 12:47:15 +0200 Subject: [PATCH 24/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 1c513ae..63a58d0 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1747744144, - "narHash": "sha256-W7lqHp0qZiENCDwUZ5EX/lNhxjMdNapFnbErcbnP11Q=", + "lastModified": 1748026106, + "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2795c506fe8fb7b03c36ccb51f75b6df0ab2553f", + "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", "type": "github" }, "original": { From 30459c47b6e07d53ae9cc3232f48b03bafa09800 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 27 May 2025 18:11:44 +0200 Subject: [PATCH 25/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 63a58d0..d072398 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748026106, - "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", + "lastModified": 1748190013, + "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", + "rev": "62b852f6c6742134ade1abdd2a21685fd617a291", "type": "github" }, "original": { From 3fc8de420349cb30f2dff75a712b5e000d4068c8 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 28 May 2025 19:28:40 +0200 Subject: [PATCH 26/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index d072398..29b411c 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748190013, - "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=", + "lastModified": 1748370509, + "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "62b852f6c6742134ade1abdd2a21685fd617a291", + "rev": "4faa5f5321320e49a78ae7848582f684d64783e9", "type": "github" }, "original": { From bcd03a5ab9311ad3906e8346e8743b784489cf28 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 31 May 2025 16:07:03 +0200 Subject: [PATCH 27/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 29b411c..f12b903 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748370509, - "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=", + "lastModified": 1748460289, + "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4faa5f5321320e49a78ae7848582f684d64783e9", + "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", "type": "github" }, "original": { From 367f5787e144fa536535716bb683d73fbffea917 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sun, 1 Jun 2025 16:53:08 +0200 Subject: [PATCH 28/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index f12b903..887a767 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748460289, - "narHash": "sha256-7doLyJBzCllvqX4gszYtmZUToxKvMUrg45EUWaUYmBg=", + "lastModified": 1748693115, + "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "96ec055edbe5ee227f28cdbc3f1ddf1df5965102", + "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", "type": "github" }, "original": { From 3cc18c950048b97b76647edcb4a010d88d4af57a Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 4 Jun 2025 11:42:37 +0200 Subject: [PATCH 29/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 887a767..e6d920a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748693115, - "narHash": "sha256-StSrWhklmDuXT93yc3GrTlb0cKSS0agTAxMGjLKAsY8=", + "lastModified": 1748929857, + "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "910796cabe436259a29a72e8d3f5e180fc6dfacc", + "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", "type": "github" }, "original": { From de010953258313c38e5fd4f69bd3a725f81efb6c Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 7 Jun 2025 18:20:44 +0200 Subject: [PATCH 30/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index e6d920a..edbd252 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1748929857, - "narHash": "sha256-lcZQ8RhsmhsK8u7LIFsJhsLh/pzR9yZ8yqpTzyGdj+Q=", + "lastModified": 1749143949, + "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c2a03962b8e24e669fb37b7df10e7c79531ff1a4", + "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", "type": "github" }, "original": { From 0274827d672ca1c38591ca7c9294937d5c5a7c0c Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 9 Jun 2025 06:38:28 +0200 Subject: [PATCH 31/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index edbd252..e0246ab 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749143949, - "narHash": "sha256-QuUtALJpVrPnPeozlUG/y+oIMSLdptHxb3GK6cpSVhA=", + "lastModified": 1749285348, + "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d3d2d80a2191a73d1e86456a751b83aa13085d7d", + "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", "type": "github" }, "original": { From 2775edb7acb934ca9601ebbbae2c823112343518 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 16 Jun 2025 07:56:42 +0200 Subject: [PATCH 32/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index e0246ab..b238039 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749285348, - "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", + "lastModified": 1749794982, + "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", + "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", "type": "github" }, "original": { From 36298ad6be5f2b96f6991e1b765a585b0ae0d8a7 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 18 Jun 2025 08:51:18 +0200 Subject: [PATCH 33/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index b238039..673489b 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1749794982, - "narHash": "sha256-Kh9K4taXbVuaLC0IL+9HcfvxsSUx8dPB5s5weJcc9pc=", + "lastModified": 1750134718, + "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "ee930f9755f58096ac6e8ca94a1887e0534e2d81", + "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", "type": "github" }, "original": { From 49de16d45ed89bf04088a50843d5f00d4cced88c Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Fri, 20 Jun 2025 12:17:16 +0200 Subject: [PATCH 34/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 673489b..14db0eb 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750134718, - "narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", + "lastModified": 1750365781, + "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", + "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", "type": "github" }, "original": { From 8ea2ad28be0ca42bfaf2b2aaa6ec1e00a46d0986 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 23 Jun 2025 11:23:33 +0200 Subject: [PATCH 35/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 14db0eb..61dd58d 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750365781, - "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=", + "lastModified": 1750506804, + "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54", + "rev": "4206c4cb56751df534751b058295ea61357bbbaa", "type": "github" }, "original": { From ade29297dbdee7e72836516b0b15a7bb5cadfcf1 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Thu, 26 Jun 2025 08:32:31 +0200 Subject: [PATCH 36/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 61dd58d..5ca09a9 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750506804, - "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=", + "lastModified": 1750776420, + "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4206c4cb56751df534751b058295ea61357bbbaa", + "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", "type": "github" }, "original": { From c315299fc7c429c8d5901341d82af68661437352 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 28 Jun 2025 14:11:13 +0200 Subject: [PATCH 37/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 5ca09a9..c57137d 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1750776420, - "narHash": "sha256-/CG+w0o0oJ5itVklOoLbdn2dGB0wbZVOoDm4np6w09A=", + "lastModified": 1751011381, + "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30a61f056ac492e3b7cdcb69c1e6abdcf00e39cf", + "rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7", "type": "github" }, "original": { From 2e78feeaf5d921c31e0523160affdc4467d3e2bd Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 1 Jul 2025 06:18:16 +0200 Subject: [PATCH 38/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index c57137d..09a2acc 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751011381, - "narHash": "sha256-krGXKxvkBhnrSC/kGBmg5MyupUUT5R6IBCLEzx9jhMM=", + "lastModified": 1751271578, + "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "30e2e2857ba47844aa71991daa6ed1fc678bcbb7", + "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", "type": "github" }, "original": { From b57bdca0e0e0de08a48b5b830a19aa700d286757 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 7 Jul 2025 09:07:13 +0200 Subject: [PATCH 39/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 09a2acc..bd80c39 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751271578, - "narHash": "sha256-P/SQmKDu06x8yv7i0s8bvnnuJYkxVGBWLWHaU+tt4YY=", + "lastModified": 1751792365, + "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3016b4b15d13f3089db8a41ef937b13a9e33a8df", + "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", "type": "github" }, "original": { From 2d4ec6169882f6efef1dde8510b77054bf02e952 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Thu, 10 Jul 2025 07:28:02 +0200 Subject: [PATCH 40/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index bd80c39..1f73ad9 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751792365, - "narHash": "sha256-J1kI6oAj25IG4EdVlg2hQz8NZTBNYvIS0l4wpr9KcUo=", + "lastModified": 1751984180, + "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1fd8bada0b6117e6c7eb54aad5813023eed37ccb", + "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", "type": "github" }, "original": { From 5d758ea480d7c49a8c3626d5b1f2056a4be30122 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sun, 27 Jul 2025 18:49:25 +0200 Subject: [PATCH 41/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 1f73ad9..0de4ed5 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1751984180, - "narHash": "sha256-LwWRsENAZJKUdD3SpLluwDmdXY9F45ZEgCb0X+xgOL0=", + "lastModified": 1753429684, + "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "9807714d6944a957c2e036f84b0ff8caf9930bc0", + "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", "type": "github" }, "original": { From 513f89b4ef82aa602017b983c5671de6589fe673 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Mon, 28 Jul 2025 10:30:01 +0200 Subject: [PATCH 42/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 0de4ed5..ab5d8c0 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753429684, - "narHash": "sha256-9h7+4/53cSfQ/uA3pSvCaBepmZaz/dLlLVJnbQ+SJjk=", + "lastModified": 1753549186, + "narHash": "sha256-Znl7rzuxKg/Mdm6AhimcKynM7V3YeNDIcLjBuoBcmNs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "7fd36ee82c0275fb545775cc5e4d30542899511d", + "rev": "17f6bd177404d6d43017595c5264756764444ab8", "type": "github" }, "original": { From 98c8ace68e714b95828c8ff022c89c7f3fd6cb13 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 29 Jul 2025 08:41:00 +0200 Subject: [PATCH 43/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index ab5d8c0..7e9d064 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753549186, - "narHash": "sha256-Znl7rzuxKg/Mdm6AhimcKynM7V3YeNDIcLjBuoBcmNs=", + "lastModified": 1753694789, + "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "17f6bd177404d6d43017595c5264756764444ab8", + "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", "type": "github" }, "original": { From c67106e598eda910b49976b4a4eb46d48cdad25e Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Fri, 1 Aug 2025 12:58:49 +0200 Subject: [PATCH 44/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 7e9d064..5feb92a 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753694789, - "narHash": "sha256-cKgvtz6fKuK1Xr5LQW/zOUiAC0oSQoA9nOISB0pJZqM=", + "lastModified": 1753939845, + "narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc9637876d0dcc8c9e5e22986b857632effeb727", + "rev": "94def634a20494ee057c76998843c015909d6311", "type": "github" }, "original": { From 4d859e936ef7b06895668297bc6af1b579907494 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 5 Aug 2025 09:29:16 +0200 Subject: [PATCH 45/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 5feb92a..720aa25 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1753939845, - "narHash": "sha256-K2ViRJfdVGE8tpJejs8Qpvvejks1+A4GQej/lBk5y7I=", + "lastModified": 1754214453, + "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "94def634a20494ee057c76998843c015909d6311", + "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", "type": "github" }, "original": { From 0276b6a4779c85e02ac7222a97f909603986c1d5 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Fri, 8 Aug 2025 07:41:05 +0200 Subject: [PATCH 46/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 720aa25..2572c12 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1754214453, - "narHash": "sha256-Q/I2xJn/j1wpkGhWkQnm20nShYnG7TI99foDBpXm1SY=", + "lastModified": 1754498491, + "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5b09dc45f24cf32316283e62aec81ffee3c3e376", + "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", "type": "github" }, "original": { From 1337da29a296fecfee722968dc6e6f32fb7332b6 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 13 Aug 2025 16:03:38 +0200 Subject: [PATCH 47/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 2572c12..081117f 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1754498491, - "narHash": "sha256-erbiH2agUTD0Z30xcVSFcDHzkRvkRXOQ3lb887bcVrs=", + "lastModified": 1754725699, + "narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c2ae88e026f9525daf89587f3cbee584b92b6134", + "rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", "type": "github" }, "original": { From 5024f9468c0f39c656a83882bf2a9073cc4e924f Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Thu, 14 Aug 2025 05:57:11 +0200 Subject: [PATCH 48/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 081117f..fff8092 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1754725699, - "narHash": "sha256-iAcj9T/Y+3DBy2J0N+yF9XQQQ8IEb5swLFzs23CdP88=", + "lastModified": 1755027561, + "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "85dbfc7aaf52ecb755f87e577ddbe6dbbdbc1054", + "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", "type": "github" }, "original": { From 3605e3a41bccc6f6a7073c7ba91c20f4f8a2b2ed Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Sat, 16 Aug 2025 21:06:34 +0200 Subject: [PATCH 49/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index fff8092..93c55f8 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755027561, - "narHash": "sha256-IVft239Bc8p8Dtvf7UAACMG5P3ZV+3/aO28gXpGtMXI=", + "lastModified": 1755186698, + "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "005433b926e16227259a1843015b5b2b7f7d1fc3", + "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", "type": "github" }, "original": { From 6eca2e6d5ca6e39f3ebd6a520fcc69966f4b522a Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Wed, 20 Aug 2025 16:20:08 +0200 Subject: [PATCH 50/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 93c55f8..013dd56 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755186698, - "narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", + "lastModified": 1755615617, + "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", + "rev": "20075955deac2583bb12f07151c2df830ef346b4", "type": "github" }, "original": { From f937374274dfe877ef05466a1fb03280a2c59996 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Tue, 26 Aug 2025 07:08:26 +0200 Subject: [PATCH 51/52] tooling: update nix flake --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 013dd56..81cdc1f 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1755615617, - "narHash": "sha256-HMwfAJBdrr8wXAkbGhtcby1zGFvs+StOp19xNsbqdOg=", + "lastModified": 1756125398, + "narHash": "sha256-XexyKZpf46cMiO5Vbj+dWSAXOnr285GHsMch8FBoHbc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "20075955deac2583bb12f07151c2df830ef346b4", + "rev": "3b9f00d7a7bf68acd4c4abb9d43695afb04e03a5", "type": "github" }, "original": { From c9c89780d9634fc7e167c54a51e4d036155c69b8 Mon Sep 17 00:00:00 2001 From: Dominik Schrempf Date: Thu, 28 Aug 2025 06:28:25 +0200 Subject: [PATCH 52/52] version bump, changelog --- Changelog.org | 2 ++ magix.cabal | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Changelog.org b/Changelog.org index 7ee44eb..b0c48d7 100644 --- a/Changelog.org +++ b/Changelog.org @@ -1,4 +1,6 @@ * Unreleased + +* Version 0.5.0.0 - Split modules so that implementing new languages becomes easier - More tests - Language data type diff --git a/magix.cabal b/magix.cabal index c22a765..aee6585 100644 --- a/magix.cabal +++ b/magix.cabal @@ -1,6 +1,6 @@ cabal-version: 3.4 name: magix -version: 0.4.0.1 +version: 0.5.0.0 synopsis: Build, cache, and run possibly compiled scripts with dependencies using the Nix package manager