Initial commit
commit
dcca5da865
|
@ -0,0 +1,7 @@
|
|||
# Nix related
|
||||
.direnv
|
||||
result
|
||||
|
||||
# Elm related
|
||||
elm-stuff
|
||||
public/main.js
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"type": "application",
|
||||
"source-directories": [
|
||||
"src"
|
||||
],
|
||||
"elm-version": "0.19.1",
|
||||
"dependencies": {
|
||||
"direct": {
|
||||
"elm/browser": "1.0.2",
|
||||
"elm/core": "1.0.5",
|
||||
"elm/html": "1.0.0"
|
||||
},
|
||||
"indirect": {
|
||||
"elm/json": "1.1.3",
|
||||
"elm/time": "1.0.0",
|
||||
"elm/url": "1.0.0",
|
||||
"elm/virtual-dom": "1.0.3"
|
||||
}
|
||||
},
|
||||
"test-dependencies": {
|
||||
"direct": {},
|
||||
"indirect": {}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1672580127,
|
||||
"narHash": "sha256-3lW3xZslREhJogoOkjeZtlBtvFMyxHku7I/9IVehhT8=",
|
||||
"owner": "NixOs",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "0874168639713f547c05947c76124f78441ea46c",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOs",
|
||||
"ref": "nixos-22.05",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs",
|
||||
"utils": "utils"
|
||||
}
|
||||
},
|
||||
"utils": {
|
||||
"locked": {
|
||||
"lastModified": 1676283394,
|
||||
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
{
|
||||
description = "Template for an Elm app defined by a Nix flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOs/nixpkgs/nixos-22.05";
|
||||
utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs, utils }:
|
||||
utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
debugMode = false;
|
||||
in
|
||||
{
|
||||
packages.elm-nix-template = pkgs.stdenv.mkDerivation {
|
||||
name = "elm-nix-template";
|
||||
version = "0.1.0";
|
||||
src = ./.;
|
||||
|
||||
buildInputs = with pkgs.elmPackages; [
|
||||
elm
|
||||
pkgs.nodePackages.uglify-js
|
||||
];
|
||||
|
||||
configurePhase = pkgs.elmPackages.fetchElmDeps {
|
||||
elmVersion = "0.19.1";
|
||||
elmPackages = import ./nix/elm-srcs.nix;
|
||||
registryDat = ./nix/registry.dat;
|
||||
};
|
||||
|
||||
buildPhase =
|
||||
if debugMode then ''
|
||||
elm make src/Main.elm --debug --output=$out/debug.js
|
||||
'' else ''
|
||||
elm make src/Main.elm --output=$out/main.js --optimize
|
||||
uglifyjs $out/main.js --compress 'pure_funcs="F2,F3,F4,F5,F6,F7,F8,F9,A2,A3,A4,A5,A6,A7,A8,A9",pure_getters,keep_fargs=false,unsafe_comps,unsafe' \
|
||||
| uglifyjs --mangle --output $out/main.min.js
|
||||
rm $out/main.js
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp public/main.css $out
|
||||
|
||||
${if debugMode then ''
|
||||
cp public/index.debug.html $out/index.html
|
||||
''
|
||||
else ''
|
||||
cp public/index.html $out
|
||||
''}
|
||||
'';
|
||||
};
|
||||
|
||||
packages.default = self.packages.${system}.elm-nix-template;
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
buildInputs = with pkgs;
|
||||
[
|
||||
elmPackages.elm
|
||||
elmPackages.nodejs
|
||||
elmPackages.elm-xref
|
||||
elmPackages.elm-test
|
||||
elmPackages.elm-live
|
||||
elmPackages.elm-json
|
||||
elmPackages.elm-review
|
||||
elmPackages.elm-format
|
||||
elmPackages.elm-upgrade
|
||||
elmPackages.elm-analyse
|
||||
elmPackages.elm-language-server
|
||||
|
||||
elm2nix
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
|
@ -0,0 +1,37 @@
|
|||
{
|
||||
|
||||
"elm/browser" = {
|
||||
sha256 = "0nagb9ajacxbbg985r4k9h0jadqpp0gp84nm94kcgbr5sf8i9x13";
|
||||
version = "1.0.2";
|
||||
};
|
||||
|
||||
"elm/core" = {
|
||||
sha256 = "19w0iisdd66ywjayyga4kv2p1v9rxzqjaxhckp8ni6n8i0fb2dvf";
|
||||
version = "1.0.5";
|
||||
};
|
||||
|
||||
"elm/html" = {
|
||||
sha256 = "1n3gpzmpqqdsldys4ipgyl1zacn0kbpc3g4v3hdpiyfjlgh8bf3k";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/json" = {
|
||||
sha256 = "0kjwrz195z84kwywaxhhlnpl3p251qlbm5iz6byd6jky2crmyqyh";
|
||||
version = "1.1.3";
|
||||
};
|
||||
|
||||
"elm/time" = {
|
||||
sha256 = "0vch7i86vn0x8b850w1p69vplll1bnbkp8s383z7pinyg94cm2z1";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/url" = {
|
||||
sha256 = "0av8x5syid40sgpl5vd7pry2rq0q4pga28b4yykn9gd9v12rs3l4";
|
||||
version = "1.0.0";
|
||||
};
|
||||
|
||||
"elm/virtual-dom" = {
|
||||
sha256 = "1yvb8px2z62xd578ag2q0r5hd1vkz9y7dfkx05355iiy1d7jwq4v";
|
||||
version = "1.0.3";
|
||||
};
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="theme-color" content="#000000">
|
||||
<title>DEBUG ENABLED - Elm App using Nix Starter Template</title>
|
||||
<link rel="stylesheet" href="main.css">
|
||||
|
||||
<script src="debug.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<noscript>
|
||||
You need to enable JavaScript to run this app.
|
||||
</noscript>
|
||||
<div id="root"></div>
|
||||
<script>var app = Elm.Main.init({ node: document.getElementById("root") });</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,23 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="theme-color" content="#000000">
|
||||
<title>Elm App using Nix Starter Template</title>
|
||||
<link rel="stylesheet" href="main.css">
|
||||
|
||||
<script src="main.min.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<noscript>
|
||||
You need to enable JavaScript to run this app.
|
||||
</noscript>
|
||||
<div id="root"></div>
|
||||
<script>var app = Elm.Main.init({ node: document.getElementById("root") });</script>
|
||||
</body>
|
||||
|
||||
</html>
|
|
@ -0,0 +1,86 @@
|
|||
html,
|
||||
body {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #fff1e5;
|
||||
font-size: 20px;
|
||||
color: #070707;
|
||||
margin: 0px;
|
||||
font-family: 'IBM Plex Sans', sans-serif;
|
||||
}
|
||||
|
||||
h1 {
|
||||
display: block;
|
||||
font-size: 2em;
|
||||
font-weight: bold;
|
||||
margin: 0em 0em 1em 0em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #070707;
|
||||
border-bottom: 1px dashed #070707;
|
||||
padding-bottom: 0px;
|
||||
text-decoration: none;
|
||||
transition: padding 0.25s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
padding-bottom: 2px;
|
||||
}
|
||||
|
||||
#hwaet {
|
||||
padding: 2em;
|
||||
max-width: 1000px;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
}
|
||||
|
||||
#controls {
|
||||
display: flex
|
||||
}
|
||||
|
||||
.control {
|
||||
margin-right: 1em;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 10em;
|
||||
font-size: 0.75em;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
|
||||
input[type="range"] {
|
||||
width: 100%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
input[type=range] {
|
||||
-webkit-appearance: none;
|
||||
}
|
||||
|
||||
input[type=range]::-webkit-slider-runnable-track {
|
||||
height: .35em;
|
||||
background: #070707;
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
input[type=range]::-webkit-slider-thumb {
|
||||
-webkit-appearance: none;
|
||||
border: none;
|
||||
height: 1.1em;
|
||||
width: 1.1em;
|
||||
border-radius: 50%;
|
||||
background: #070707;
|
||||
margin-top: -4px;
|
||||
}
|
||||
|
||||
input[type=range]:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
#footer {
|
||||
font-size: 0.8em;
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
module Main exposing (Msg(..), main, update, view)
|
||||
|
||||
import Browser
|
||||
import Html exposing (Html, button, div, text)
|
||||
import Html.Events exposing (onClick)
|
||||
|
||||
|
||||
main : Program () Int Msg
|
||||
main =
|
||||
Browser.sandbox { init = 0, update = update, view = view }
|
||||
|
||||
|
||||
type Msg
|
||||
= Increment
|
||||
| Decrement
|
||||
|
||||
|
||||
update : Msg -> number -> number
|
||||
update msg model =
|
||||
case msg of
|
||||
Increment ->
|
||||
model + 1
|
||||
|
||||
Decrement ->
|
||||
model - 1
|
||||
|
||||
|
||||
view : Int -> Html Msg
|
||||
view model =
|
||||
div []
|
||||
[ button [ onClick Decrement ] [ text "-" ]
|
||||
, div [] [ text (String.fromInt model) ]
|
||||
, button [ onClick Increment ] [ text "+" ]
|
||||
]
|
Loading…
Reference in New Issue