Smos is available via a default build without any programming involved. If you are looking to customise smos without writing any code, please see the respective guide
Your own smos
Smos is not a program as much as it is a library to write your own version of smos. (This is a lot like the way Xmonad does things.)
Set up a Haskell project
To customise Smos within Haskell for yourself, you will need to set up your own little Haskell project. You can do this with either stack or with Nix. In this tutorial we will use stack, because I assume that if you want to use Nix, you know what you are doing and you will be able to figure it out.
To get started, have
stack setup a new project:
stack new my-smos cd my-smos
Getting the smos dependency
Next, you need to make sure that
stack knows where to find
By the time you read this, the relevant packages may already be on stackage so this step may not be necessary, but to make sure that this guide gives reproducible results, we add get the sources directly:
To make that happen, copy the "extra-deps" section of Smos'
stack.yaml to your
smos to the project dependencies in
library: source-dirs: src dependencies: - smos
Compile the project with this extra dependency:
Remaking the default smos
src/Lib.hs, replace the contents by this:
module Lib ( someFunc ) where import Smos import Smos.Default someFunc :: IO () someFunc = smos defaultConfig
Compile this with
Now you should be able to run
stack exec my-smos-exe.
Now you can start customising the configuration that you pass to the
smos function to your heart's content.
If you are unsure where to start, you can have a look at the default configuration.
smos function will also deal with flags, environment variables and configuration files. If you want to make your customisations without these features, you can use