Setup Scala
This commit is contained in:
parent
8dec7591dd
commit
13a8e74189
37 changed files with 290 additions and 187 deletions
1
.envrc
Normal file
1
.envrc
Normal file
|
|
@ -0,0 +1 @@
|
|||
use flake
|
||||
10
.gitignore
vendored
10
.gitignore
vendored
|
|
@ -1,8 +1,4 @@
|
|||
_build/
|
||||
_opam/
|
||||
inputs/
|
||||
.sl/
|
||||
.git/
|
||||
.DS_Store
|
||||
.envrc
|
||||
.bsp
|
||||
.direnv
|
||||
.metals
|
||||
.scala-build
|
||||
|
|
|
|||
2
.scalafmt.conf
Normal file
2
.scalafmt.conf
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
version = "3.7.14"
|
||||
runner.dialect = scala3
|
||||
136
flake.lock
generated
136
flake.lock
generated
|
|
@ -1,21 +1,5 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
|
|
@ -34,44 +18,13 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mirage-opam-overlays": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1661959605,
|
||||
"narHash": "sha256-CPTuhYML3F4J58flfp3ZbMNhkRkVFKmBEYBZY5tnQwA=",
|
||||
"owner": "dune-universe",
|
||||
"repo": "mirage-opam-overlays",
|
||||
"rev": "05f1c1823d891ce4d8adab91f5db3ac51d86dc0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dune-universe",
|
||||
"repo": "mirage-opam-overlays",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1682362401,
|
||||
"narHash": "sha256-/UMUHtF2CyYNl4b60Z2y4wwTTdIWGKhj9H301EDcT9M=",
|
||||
"lastModified": 1701253981,
|
||||
"narHash": "sha256-ztaDIyZ7HrTAfEEUt9AtTDNoCYxUdSd6NrRHaYOIxtk=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "884ac294018409e0d1adc0cae185439a44bd6b0b",
|
||||
"rev": "e92039b55bcd58469325ded85d4f58dd5a4eaf58",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
|
@ -81,91 +34,10 @@
|
|||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"mirage-opam-overlays": "mirage-opam-overlays",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"opam-overlays": "opam-overlays",
|
||||
"opam-repository": "opam-repository",
|
||||
"opam2json": "opam2json"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701258858,
|
||||
"narHash": "sha256-5v5PFrIz2DdR5zRTez+J7prGUOHFHwM5RsmLspOGoms=",
|
||||
"owner": "tweag",
|
||||
"repo": "opam-nix",
|
||||
"rev": "a547ed060d2409c20902bd5f8a2465adca1bdf4f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "opam-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-overlays": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1654162756,
|
||||
"narHash": "sha256-RV68fUK+O3zTx61iiHIoS0LvIk0E4voMp+0SwRg6G6c=",
|
||||
"owner": "dune-universe",
|
||||
"repo": "opam-overlays",
|
||||
"rev": "c8f6ef0fc5272f254df4a971a47de7848cc1c8a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dune-universe",
|
||||
"repo": "opam-overlays",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-repository": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695894792,
|
||||
"narHash": "sha256-7Llico807vq14AkqAaDIWogC50xLxU38nuNEH06YNPE=",
|
||||
"owner": "ocaml",
|
||||
"repo": "opam-repository",
|
||||
"rev": "33fcf32f269ee5af70b31e27442397a0cdaf28b2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ocaml",
|
||||
"repo": "opam-repository",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam2json": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"opam-nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1671540003,
|
||||
"narHash": "sha256-5pXfbUfpVABtKbii6aaI2EdAZTjHJ2QntEf0QD2O5AM=",
|
||||
"owner": "tweag",
|
||||
"repo": "opam2json",
|
||||
"rev": "819d291ea95e271b0e6027679de6abb4d4f7f680",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "opam2json",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"opam-nix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"opam-nix": "opam-nix"
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
|
|
|
|||
59
flake.nix
59
flake.nix
|
|
@ -1,57 +1,20 @@
|
|||
{
|
||||
inputs = {
|
||||
opam-nix.url = "github:tweag/opam-nix";
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
nixpkgs.follows = "opam-nix/nixpkgs";
|
||||
};
|
||||
outputs = { self, flake-utils, opam-nix, nixpkgs }@inputs:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
|
||||
outputs = { self, nixpkgs, flake-utils, ... }:
|
||||
flake-utils.lib.eachDefaultSystem (
|
||||
system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
on = opam-nix.lib.${system};
|
||||
localPackagesQuery = builtins.mapAttrs (_: pkgs.lib.last)
|
||||
(on.listRepo (on.makeOpamRepo ./.));
|
||||
devPackagesQuery = {
|
||||
# You can add "development" packages here. They will get added to the devShell automatically.
|
||||
ocaml-lsp-server = "*";
|
||||
ocamlformat = "*";
|
||||
utop = "*";
|
||||
dune-release = "*";
|
||||
};
|
||||
query = devPackagesQuery // {
|
||||
## You can force versions of certain packages here, e.g:
|
||||
## - force the ocaml compiler to be taken from opam-repository:
|
||||
ocaml-base-compiler = "*";
|
||||
## - or force the compiler to be taken from nixpkgs and be a certain version:
|
||||
# ocaml-system = "4.14.0";
|
||||
## - or force ocamlfind to be a certain version:
|
||||
# ocamlfind = "1.9.2";
|
||||
};
|
||||
scope = on.buildDuneProject { } "tanenbaum" ./. query;
|
||||
overlay = final: prev:
|
||||
|
||||
in
|
||||
{
|
||||
# You can add overrides here
|
||||
devShell = pkgs.mkShell {
|
||||
buildInputs = [ pkgs.scala-cli ];
|
||||
};
|
||||
scope' = scope.overrideScope' overlay;
|
||||
# Packages from devPackagesQuery
|
||||
devPackages = builtins.attrValues
|
||||
(pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope');
|
||||
# Packages in this workspace
|
||||
packages =
|
||||
pkgs.lib.getAttrs (builtins.attrNames localPackagesQuery) scope';
|
||||
in {
|
||||
legacyPackages = scope';
|
||||
|
||||
inherit packages;
|
||||
|
||||
## If you want to have a "default" package which will be built with just `nix build`, do this instead of `inherit packages;`:
|
||||
# packages = packages // { default = packages.<your default package>; };
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
inputsFrom = builtins.attrValues packages;
|
||||
buildInputs = devPackages ++ [
|
||||
# You can add packages from nixpkgs here
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
|
|
|||
1
input/day01
Normal file
1
input/day01
Normal file
|
|
@ -0,0 +1 @@
|
|||
OK
|
||||
8
ocaml/.gitignore
vendored
Normal file
8
ocaml/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
_build/
|
||||
_opam/
|
||||
inputs/
|
||||
.sl/
|
||||
.git/
|
||||
.DS_Store
|
||||
.envrc
|
||||
.direnv
|
||||
189
ocaml/flake.lock
generated
Normal file
189
ocaml/flake.lock
generated
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-compat": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1627913399,
|
||||
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "edolstra",
|
||||
"repo": "flake-compat",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1694529238,
|
||||
"narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "ff7b65b44d01cf9ba6a71320833626af21126384",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"flake-utils_2": {
|
||||
"locked": {
|
||||
"lastModified": 1638122382,
|
||||
"narHash": "sha256-sQzZzAbvKEqN9s0bzWuYmRaA03v40gaJ4+iL1LXjaeI=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "74f7e4319258e287b0f9cb95426c9853b282730b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"mirage-opam-overlays": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1661959605,
|
||||
"narHash": "sha256-CPTuhYML3F4J58flfp3ZbMNhkRkVFKmBEYBZY5tnQwA=",
|
||||
"owner": "dune-universe",
|
||||
"repo": "mirage-opam-overlays",
|
||||
"rev": "05f1c1823d891ce4d8adab91f5db3ac51d86dc0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dune-universe",
|
||||
"repo": "mirage-opam-overlays",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1682362401,
|
||||
"narHash": "sha256-/UMUHtF2CyYNl4b60Z2y4wwTTdIWGKhj9H301EDcT9M=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "884ac294018409e0d1adc0cae185439a44bd6b0b",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-nix": {
|
||||
"inputs": {
|
||||
"flake-compat": "flake-compat",
|
||||
"flake-utils": "flake-utils_2",
|
||||
"mirage-opam-overlays": "mirage-opam-overlays",
|
||||
"nixpkgs": "nixpkgs",
|
||||
"opam-overlays": "opam-overlays",
|
||||
"opam-repository": "opam-repository",
|
||||
"opam2json": "opam2json"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1701258858,
|
||||
"narHash": "sha256-5v5PFrIz2DdR5zRTez+J7prGUOHFHwM5RsmLspOGoms=",
|
||||
"owner": "tweag",
|
||||
"repo": "opam-nix",
|
||||
"rev": "a547ed060d2409c20902bd5f8a2465adca1bdf4f",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "opam-nix",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-overlays": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1654162756,
|
||||
"narHash": "sha256-RV68fUK+O3zTx61iiHIoS0LvIk0E4voMp+0SwRg6G6c=",
|
||||
"owner": "dune-universe",
|
||||
"repo": "opam-overlays",
|
||||
"rev": "c8f6ef0fc5272f254df4a971a47de7848cc1c8a4",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "dune-universe",
|
||||
"repo": "opam-overlays",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam-repository": {
|
||||
"flake": false,
|
||||
"locked": {
|
||||
"lastModified": 1695894792,
|
||||
"narHash": "sha256-7Llico807vq14AkqAaDIWogC50xLxU38nuNEH06YNPE=",
|
||||
"owner": "ocaml",
|
||||
"repo": "opam-repository",
|
||||
"rev": "33fcf32f269ee5af70b31e27442397a0cdaf28b2",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "ocaml",
|
||||
"repo": "opam-repository",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"opam2json": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"opam-nix",
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1671540003,
|
||||
"narHash": "sha256-5pXfbUfpVABtKbii6aaI2EdAZTjHJ2QntEf0QD2O5AM=",
|
||||
"owner": "tweag",
|
||||
"repo": "opam2json",
|
||||
"rev": "819d291ea95e271b0e6027679de6abb4d4f7f680",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "tweag",
|
||||
"repo": "opam2json",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": [
|
||||
"opam-nix",
|
||||
"nixpkgs"
|
||||
],
|
||||
"opam-nix": "opam-nix"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
57
ocaml/flake.nix
Normal file
57
ocaml/flake.nix
Normal file
|
|
@ -0,0 +1,57 @@
|
|||
{
|
||||
inputs = {
|
||||
opam-nix.url = "github:tweag/opam-nix";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
nixpkgs.follows = "opam-nix/nixpkgs";
|
||||
};
|
||||
outputs = { self, flake-utils, opam-nix, nixpkgs }@inputs:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
on = opam-nix.lib.${system};
|
||||
localPackagesQuery = builtins.mapAttrs (_: pkgs.lib.last)
|
||||
(on.listRepo (on.makeOpamRepo ./.));
|
||||
devPackagesQuery = {
|
||||
# You can add "development" packages here. They will get added to the devShell automatically.
|
||||
ocaml-lsp-server = "*";
|
||||
ocamlformat = "*";
|
||||
utop = "*";
|
||||
dune-release = "*";
|
||||
};
|
||||
query = devPackagesQuery // {
|
||||
## You can force versions of certain packages here, e.g:
|
||||
## - force the ocaml compiler to be taken from opam-repository:
|
||||
ocaml-base-compiler = "*";
|
||||
## - or force the compiler to be taken from nixpkgs and be a certain version:
|
||||
# ocaml-system = "4.14.0";
|
||||
## - or force ocamlfind to be a certain version:
|
||||
# ocamlfind = "1.9.2";
|
||||
};
|
||||
scope = on.buildDuneProject { } "tanenbaum" ./. query;
|
||||
overlay = final: prev:
|
||||
{
|
||||
# You can add overrides here
|
||||
};
|
||||
scope' = scope.overrideScope' overlay;
|
||||
# Packages from devPackagesQuery
|
||||
devPackages = builtins.attrValues
|
||||
(pkgs.lib.getAttrs (builtins.attrNames devPackagesQuery) scope');
|
||||
# Packages in this workspace
|
||||
packages =
|
||||
pkgs.lib.getAttrs (builtins.attrNames localPackagesQuery) scope';
|
||||
in {
|
||||
legacyPackages = scope';
|
||||
|
||||
inherit packages;
|
||||
|
||||
## If you want to have a "default" package which will be built with just `nix build`, do this instead of `inherit packages;`:
|
||||
# packages = packages // { default = packages.<your default package>; };
|
||||
|
||||
devShells.default = pkgs.mkShell {
|
||||
inputsFrom = builtins.attrValues packages;
|
||||
buildInputs = devPackages ++ [
|
||||
# You can add packages from nixpkgs here
|
||||
];
|
||||
};
|
||||
});
|
||||
}
|
||||
|
Before Width: | Height: | Size: 507 KiB After Width: | Height: | Size: 507 KiB |
2
project.scala
Normal file
2
project.scala
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
//> using scala 3.3.1
|
||||
//> using option -Wunused:all
|
||||
7
src/aoc.scala
Normal file
7
src/aoc.scala
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
package aoc
|
||||
|
||||
import scala.io.Source
|
||||
import scala.util.Using
|
||||
|
||||
def loadInput(dayNumber: String) =
|
||||
Using.resource(Source.fromFile(s"input/day$dayNumber"))(_.mkString)
|
||||
5
src/day01.scala
Normal file
5
src/day01.scala
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
package aoc
|
||||
package day01
|
||||
|
||||
@main def part1: Unit =
|
||||
println(loadInput("01"))
|
||||
Loading…
Add table
Add a link
Reference in a new issue