@@ -13,6 +13,7 @@ import Data.Text.IO ( readFile
13
13
import Miso.Effect
14
14
import Miso.String ( toMisoString
15
15
, MisoString )
16
+ import NeatInterpolation
16
17
import Prelude hiding (readFile , writeFile )
17
18
18
19
import Types
@@ -24,7 +25,9 @@ configure :: Model -> Sink Action -> IO ()
24
25
configure m sink = do
25
26
let run = view runConfigure m
26
27
configureNix run sink
27
- mapM_ (configureNixPackage run sink) $ uncurry ExtensionInfo <$>
28
+ nixConfiguration <- getOptimalNixConfiguration
29
+ configureNixConfiguration nixConfiguration run sink
30
+ mapM_ (configureNixPackage nixConfiguration run sink) $ uncurry ExtensionInfo <$>
28
31
[ (" GHC" , " haskell.compiler.ghc865" )
29
32
, (" cabal-install" , " haskellPackages.cabal-install" )
30
33
, (" Atom" , " atom" )
@@ -64,10 +67,38 @@ configureNix run sink = do
64
67
nixChannelsFilePath <- toFullFilePath " ~/.nix-channels"
65
68
writeFile nixChannelsFilePath " nixpkgs https://nixos.org/channels/nixos-20.03" )
66
69
67
- configureNixPackage :: Bool -> Sink Action -> ExtensionInfo -> IO ()
68
- configureNixPackage run sink (ExtensionInfo name package) = do
69
- nixConfiguration <- getOptimalNixConfiguration
70
- configurationNixFilePath <- toFullFilePath $ unpack $ getNixConfigurationPath nixConfiguration
70
+ configureNixConfiguration :: NixConfiguration -> Bool -> Sink Action -> IO ()
71
+ configureNixConfiguration NixOS _ _ = return ()
72
+ configureNixConfiguration User run sink = do
73
+ configurationNixFilePath <- getNixConfigurationPath User
74
+ configExists <- doesFileExist' configurationNixFilePath
75
+ unless configExists
76
+ $ logStep (" Writing default user configuration" ) sink
77
+ $ when run $ writeFile configurationNixFilePath configNixContent
78
+
79
+ configNixContent :: Text
80
+ configNixContent =
81
+ [text |
82
+ with import <nixpkgs> {};
83
+
84
+ {
85
+ allowUnfree = true;
86
+
87
+ packageOverrides = pkgs: rec {
88
+ all = pkgs.buildEnv {
89
+ name = "all";
90
+
91
+ paths = [
92
+
93
+ ];
94
+ };
95
+ };
96
+ }
97
+ |]
98
+
99
+ configureNixPackage :: NixConfiguration -> Bool -> Sink Action -> ExtensionInfo -> IO ()
100
+ configureNixPackage nixConfiguration run sink (ExtensionInfo name package) = do
101
+ configurationNixFilePath <- getNixConfigurationPath nixConfiguration
71
102
oldConfigurationNixText <- liftIO $ readFile configurationNixFilePath
72
103
73
104
-- FIXME vvv requires Nix parsing using HNIX
0 commit comments