mirror of
https://github.com/quantum9Innovation/suntheme.git
synced 2024-11-24 17:33:52 -08:00
Compare commits
12 commits
ab58c137c9
...
759266f9fd
Author | SHA1 | Date | |
---|---|---|---|
|
759266f9fd | ||
|
d3fb14e436 | ||
|
d99c74776d | ||
dde48b1109 | |||
da93405e5f | |||
4647657666 | |||
|
6aa64ac73b | ||
|
d81ddc5a72 | ||
|
dd63938643 | ||
ff8148649a | |||
06969ebdf7 | |||
76ef994924 |
6 changed files with 37 additions and 14 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
@ -0,0 +1 @@
|
|||
use flake
|
18
.github/workflows/main.yml
vendored
Normal file
18
.github/workflows/main.yml
vendored
Normal file
|
@ -0,0 +1,18 @@
|
|||
name: "Cache binaries"
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
jobs:
|
||||
tests:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: cachix/install-nix-action@v25
|
||||
with:
|
||||
nix_path: nixpkgs=channel:nixos-unstable
|
||||
- uses: cachix/cachix-action@v14
|
||||
with:
|
||||
name: suntheme
|
||||
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
|
||||
- run: nix build --accept-flake-config
|
||||
- run: nix develop --accept-flake-config
|
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -21,4 +21,5 @@ cabal.project.local
|
|||
cabal.project.local~
|
||||
.HTF/
|
||||
.ghc.environment.*
|
||||
result/
|
||||
result
|
||||
.direnv/
|
||||
|
|
16
README.md
16
README.md
|
@ -1,12 +1,14 @@
|
|||
# Suntheme
|
||||
|
||||
runs a script on sunrise and sunset, written in pure haskell.
|
||||
Runs a script on sunrise and sunset, written in pure Haskell
|
||||
|
||||
---
|
||||
|
||||
You may be wondering how a program written in Haskell, the purely functional
|
||||
programming language, could possibly act on the real world by running a so-called "script".
|
||||
programming language, could possibly act on the real world by running a so-called "script."
|
||||
|
||||
It's simple. We take in the entire World as an input to a pure function, the IO Monad.
|
||||
It then maps the original World to the changed World, with our desired IO actions carefully applied.
|
||||
It then maps the original World to a new (generated) World, with our desired IO actions carefully applied with mathematical precision.
|
||||
|
||||
> From the second perspective, an IO action transforms the whole world. IO actions are actually pure, because they receive a unique world as an argument and then return the changed world.
|
||||
|
||||
|
@ -14,13 +16,13 @@ See [this](https://lean-lang.org/functional_programming_in_lean/monads/io.html)
|
|||
|
||||
## Hacking on suntheme
|
||||
|
||||
It's trivially easy to get started with suntheme development thanks to [Nix](https://nixos.org/), the purely functional package manager.
|
||||
Naturally, we leverage it as our primary package manager, for both Hackage packages and development tools like language servers and the like.
|
||||
It's trivial to get started with suntheme development thanks to [Nix](https://nixos.org/), the purely functional package manager.
|
||||
Naturally, we leverage it as our primary package manager, both for Hackage and development tools like language servers and the like.
|
||||
|
||||
First, install Nix through your preferred avenue. If unsure, we recommend [the Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer).
|
||||
First, install Nix through your preferred avenue or local system administrator. If unsure, we recommend [the Determinate Nix Installer](https://github.com/DeterminateSystems/nix-installer).
|
||||
Make sure flakes and nix-command are enabled (the Determinate Installer will enable them by default).
|
||||
|
||||
Once you have `nix`, simply type
|
||||
Once you have `nix`, simply type:
|
||||
|
||||
```bash
|
||||
nix develop
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
-- requires 'at' for running a command at a certain time
|
||||
-- requires 'date' for converting unix time to human readable time
|
||||
-- run on boot and at noon and midnight
|
||||
-- don't add commands to at while this script is running (monadic purity must be preserved)
|
||||
-- don't add commands to `at` while this script is running (monadic purity must be preserved)
|
||||
|
||||
module Main where
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
description = "Flake for suntheme's development environment and builds";
|
||||
description = "Suntheme's development and build environment";
|
||||
|
||||
inputs.haskellNix.url = "github:input-output-hk/haskell.nix";
|
||||
inputs.nixpkgs.follows = "haskellNix/nixpkgs-unstable";
|
||||
|
@ -29,6 +29,9 @@
|
|||
hlint = {};
|
||||
haskell-language-server = {};
|
||||
};
|
||||
shell.buildInputs = with pkgs; [
|
||||
at
|
||||
];
|
||||
};
|
||||
})
|
||||
];
|
||||
|
@ -46,8 +49,8 @@
|
|||
});
|
||||
|
||||
nixConfig = {
|
||||
extra-substituters = ["https://cache.iog.io"];
|
||||
extra-trusted-public-keys = ["hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ="];
|
||||
extra-substituters = ["https://cache.iog.io" "https://suntheme.cachix.org"];
|
||||
extra-trusted-public-keys = ["hydra.iohk.io:f/Ea+s+dFdN+3Y/G+FDgSq+a5NEWhJGzdjvKNGv0/EQ=" "suntheme.cachix.org-1:fHjlz7YAmMUcLp3tsZis8g9wIsDS6HvECGR3uZETGRo="];
|
||||
allow-import-from-derivation = "true";
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue