Skip to content

Commit 241adbc

Browse files
committed
55 - Refactor to use same Atom setup implementation on all Linux distributions
1 parent ec15308 commit 241adbc

File tree

2 files changed

+38
-7
lines changed

2 files changed

+38
-7
lines changed

src/OS/Common.hs

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ getExistingNixConfigurations = map fst <$> filterM
4747
(\(_, filePath) -> doesFileExist' filePath)
4848
nixConfigurationPaths
4949

50-
getNixConfigurationPath :: NixConfiguration -> Text
50+
getNixConfigurationPath :: NixConfiguration -> IO FilePath
5151
getNixConfigurationPath nixConfiguration =
52-
DT.pack $ snd $ RU.fromJust $ find ((==nixConfiguration).fst) nixConfigurationPaths
52+
toFullFilePath $ snd $ RU.fromJust $ find ((==nixConfiguration).fst) nixConfigurationPaths
5353

5454
nixConfigurationPaths :: [(NixConfiguration, FilePath)]
5555
nixConfigurationPaths =

src/OS/Linux.hs

+36-5
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import Data.Text.IO ( readFile
1313
import Miso.Effect
1414
import Miso.String ( toMisoString
1515
, MisoString)
16+
import NeatInterpolation
1617
import Prelude hiding (readFile, writeFile)
1718

1819
import Types
@@ -24,7 +25,9 @@ configure :: Model -> Sink Action -> IO ()
2425
configure m sink = do
2526
let run = view runConfigure m
2627
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 <$>
2831
[ ("GHC", "haskell.compiler.ghc865")
2932
, ("cabal-install", "haskellPackages.cabal-install")
3033
, ("Atom", "atom")
@@ -64,10 +67,38 @@ configureNix run sink = do
6467
nixChannelsFilePath <- toFullFilePath "~/.nix-channels"
6568
writeFile nixChannelsFilePath "nixpkgs https://nixos.org/channels/nixos-20.03")
6669

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
71102
oldConfigurationNixText <- liftIO $ readFile configurationNixFilePath
72103

73104
-- FIXME vvv requires Nix parsing using HNIX

0 commit comments

Comments
 (0)