From a4f392eda4ebdaa9582a9691325993476b36b72a Mon Sep 17 00:00:00 2001 From: Nick Date: Thu, 5 Dec 2024 02:26:48 -0600 Subject: [PATCH] feat: added haskell --- .pre-commit-config.yaml | 1 + backend/backend.cabal | 10 +++++ backend/src/Main.hs | 4 ++ flake.lock | 36 ++++++++++++----- flake.nix | 2 + frontend/src/Contact/Helpers.elm | 7 ++-- frontend/src/Cuckery/Helpers.elm | 2 +- .../Debate/Gibberish/Domains/Epistemology.elm | 10 ++--- .../Debate/Gibberish/Domains/Metaphysics.elm | 8 ++++ .../Debate/Gibberish/Domains/Normativity.elm | 4 -- .../src/Debate/Gibberish/Domains/Ontology.elm | 8 +--- .../Gibberish/Domains/PhilOfLanguage.elm | 6 ++- frontend/src/Layouts/Navbar.elm | 27 ++++++------- frontend/static/navbar/uprootnutrition.png | Bin 0 -> 36202 bytes parts/config/devshells.nix | 38 ++++++++++++++---- 15 files changed, 109 insertions(+), 54 deletions(-) create mode 120000 .pre-commit-config.yaml create mode 100755 backend/backend.cabal create mode 100755 backend/src/Main.hs create mode 100755 frontend/static/navbar/uprootnutrition.png diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 120000 index 0000000..98e393d --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1 @@ +/nix/store/a2kn134qqb4whsh5y4bikcryhka2dgl4-pre-commit-config.json \ No newline at end of file diff --git a/backend/backend.cabal b/backend/backend.cabal new file mode 100755 index 0000000..2802a8c --- /dev/null +++ b/backend/backend.cabal @@ -0,0 +1,10 @@ +cabal-version: 3.0 +name: example +version: 0.1.0.0 + +executable main + main-is: Main.hs + build-depends: + , base + default-language: Haskell2010 + hs-source-dirs: src diff --git a/backend/src/Main.hs b/backend/src/Main.hs new file mode 100755 index 0000000..98f25e4 --- /dev/null +++ b/backend/src/Main.hs @@ -0,0 +1,4 @@ +module Main where + +main :: IO () +main = putStrLn "Hello, World!" diff --git a/flake.lock b/flake.lock index 3bb6bbb..a90d44c 100755 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1730504689, - "narHash": "sha256-hgmguH29K2fvs9szpq2r3pz2/8cJd2LPS+b4tfNFCwE=", + "lastModified": 1733312601, + "narHash": "sha256-4pDvzqnegAfRkPwO3wmwBhVi/Sye1mzps0zHWYnP88c=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "506278e768c2a08bec68eb62932193e341f55c90", + "rev": "205b12d8b7cd4802fbcb8e8ef6a0f1408781a4f9", "type": "github" }, "original": { @@ -17,13 +17,28 @@ "type": "indirect" } }, + "haskell-flake": { + "locked": { + "lastModified": 1733021212, + "narHash": "sha256-rnEfkMDX94VKi07K+M5k+CvZJXDexpvXv5Hg29zZmxg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "c60351652c71ebeb5dd237f7da874412a7a96970", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1731319897, - "narHash": "sha256-PbABj4tnbWFMfBp6OcUK5iGy1QY+/Z96ZcLpooIbuEI=", + "lastModified": 1733212471, + "narHash": "sha256-M1+uCoV5igihRfcUKrr1riygbe73/dzNnzPsmaLCmpo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "dc460ec76cbff0e66e269457d7b728432263166c", + "rev": "55d15ad12a74eb7d4646254e13638ad0c4128776", "type": "github" }, "original": { @@ -35,14 +50,14 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1730504152, - "narHash": "sha256-lXvH/vOfb4aGYyvFmZK/HlsNsr/0CVWlwYvo2rxJk3s=", + "lastModified": 1733096140, + "narHash": "sha256-1qRH7uAUsyQI7R1Uwl4T+XvdNv778H0Nb5njNrqvylY=", "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" }, "original": { "type": "tarball", - "url": "https://github.com/NixOS/nixpkgs/archive/cc2f28000298e1269cea6612cd06ec9979dd5d7f.tar.gz" + "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" } }, "nixpkgs-stable": { @@ -64,6 +79,7 @@ "root": { "inputs": { "flake-parts": "flake-parts", + "haskell-flake": "haskell-flake", "nixpkgs": "nixpkgs", "nixpkgs-stable": "nixpkgs-stable" } diff --git a/flake.nix b/flake.nix index 23508b5..ffbda7b 100755 --- a/flake.nix +++ b/flake.nix @@ -3,6 +3,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-23.11"; + haskell-flake.url = "github:srid/haskell-flake"; }; outputs = inputs @ { flake-parts, @@ -14,6 +15,7 @@ flake-parts.lib.mkFlake {inherit inputs;} { imports = [ ./parts + inputs.haskell-flake.flakeModule ]; systems = [system]; perSystem = {pkgs, ...}: { diff --git a/frontend/src/Contact/Helpers.elm b/frontend/src/Contact/Helpers.elm index 930618b..d57bbe7 100755 --- a/frontend/src/Contact/Helpers.elm +++ b/frontend/src/Contact/Helpers.elm @@ -212,9 +212,8 @@ instructionBody = [ column [ width <| px 15 , alignTop - , alignRight ] - [ el [] <| text (String.fromInt (index + 1) ++ ". ") ] + [ el [ alignRight ] <| text (String.fromInt (index + 1) ++ ". ") ] , column [ spacing 10 , width fill @@ -418,11 +417,11 @@ termsAndConditions = , width fill , spacing 8 ] - [ text "\"Hello, <@191027366640877568>, I have a criticism for you." + [ text "\"Hello, <@191027366640877568>. I have a criticism for you." , row [ alignLeft ] [ paragraph [] [ text "Proposition: " - , el [ darkFormat ] <| text "specify the ecxact proposition you are addressing." + , el [ darkFormat ] <| text "specify the exact proposition you are addressing." ] ] , row [ alignLeft ] diff --git a/frontend/src/Cuckery/Helpers.elm b/frontend/src/Cuckery/Helpers.elm index ed39c5b..e95d7e4 100755 --- a/frontend/src/Cuckery/Helpers.elm +++ b/frontend/src/Cuckery/Helpers.elm @@ -58,7 +58,7 @@ cuckTitle cuck = dodgeMaker : Cuck -> Element msg dodgeMaker cuck = column - [ spacing 15 + [ spacing 10 , width fill ] <| diff --git a/frontend/src/Debate/Gibberish/Domains/Epistemology.elm b/frontend/src/Debate/Gibberish/Domains/Epistemology.elm index b8a8422..aeabd65 100755 --- a/frontend/src/Debate/Gibberish/Domains/Epistemology.elm +++ b/frontend/src/Debate/Gibberish/Domains/Epistemology.elm @@ -21,10 +21,6 @@ epistemologyGibberish = , strength = 5 , explanation = NoClue } - , { term = "Direct Reference" - , strength = 2 - , explanation = SpecificExplanation "I don't understand the term usage as it's been used and unpacked in conversation. I don't understand what it means for a word to \"point to\" an object, and I also don't understand what semantic advantage or distinction this has to a mundane, ostensibly non-direct reference to an object in speech." - } , { term = "Externalist Epistemology" , strength = 0 , explanation = SpecificExplanation "I don't take anything other than logic to be justification-giving. As such, any position that claims that justification can arrive through non-inferential means, such as mechanisms operating outside the mind, just sounds like gibberish." @@ -49,9 +45,9 @@ epistemologyGibberish = , strength = 0 , explanation = SpecificExplanation "I take a priori arguments to be arguments based on principles or axioms and not based on experience, which would seem to place a priori outside the purview of syntheticity." } - , { term = "Ultimate Grounding" - , strength = 2 - , explanation = SpecificExplanation "It's completely unclear what this theo-babble is meant to communicate. I assume it has something to do with the absence of antecedent conditions and/or irreducibility that provide some sort of \"best epistemology\" or something, but I can't be sure. It just sounds like gobbledy" + , { term = "Warrant" + , strength = 0 + , explanation = SpecificExplanation "This seems to be taken to be the thing that is justification-providing on phenomenal conservatism. I'm not sure what that thing is, but if it's non-inferential, then it's just gibberish." } ] } diff --git a/frontend/src/Debate/Gibberish/Domains/Metaphysics.elm b/frontend/src/Debate/Gibberish/Domains/Metaphysics.elm index 06adb1c..4cfa6e3 100755 --- a/frontend/src/Debate/Gibberish/Domains/Metaphysics.elm +++ b/frontend/src/Debate/Gibberish/Domains/Metaphysics.elm @@ -28,9 +28,17 @@ metaphysicsGibberish = , strength = 5 , explanation = NoClue } + , { term = "Ontological Modality" + , strength = 0 + , explanation = SpecificExplanation "Any attempt at unpacking this that I've heard has more or less cashed out into a logical modality, but it seems to be taken as distinct from logical modality. As a non-logical modality, I have no idea what it's supposed to be." + } , { term = "Subjective Idealism" , strength = 5 , explanation = NoClue } + , { term = "Ultimate Grounding" + , strength = 2 + , explanation = SpecificExplanation "It's completely unclear what this theo-babble is meant to communicate. I assume it has something to do with the absence of antecedent conditions and/or irreducibility that provide some sort of \"best epistemology\" or something, but I can't be sure. It just sounds like gobbledy" + } ] } diff --git a/frontend/src/Debate/Gibberish/Domains/Normativity.elm b/frontend/src/Debate/Gibberish/Domains/Normativity.elm index bd67ac6..f2945d6 100755 --- a/frontend/src/Debate/Gibberish/Domains/Normativity.elm +++ b/frontend/src/Debate/Gibberish/Domains/Normativity.elm @@ -20,10 +20,6 @@ normativityGibberish = , strength = 5 , explanation = SpecificExplanation "I typically don't really understand irreducibility language in philosophy. Most philosophers seem to just use it as a sort of profound-sounding placeholder for when their personal creativity for explanation runs dry. No idea what it's meant to mean here, though." } - , { term = "Moral Particles" - , strength = 0 - , explanation = SpecificExplanation "This just sounds like a hallucination, honestly." - } , { term = "Stance-Independent Normativity" , strength = 0 , explanation = SpecificExplanation "I take norms to be semantically interchangeable with preferences, and I take preferences to be stance-dependent. As such, the notion of a stance-independent norm just sounds like gobbledy." diff --git a/frontend/src/Debate/Gibberish/Domains/Ontology.elm b/frontend/src/Debate/Gibberish/Domains/Ontology.elm index b6f2f40..0e95123 100755 --- a/frontend/src/Debate/Gibberish/Domains/Ontology.elm +++ b/frontend/src/Debate/Gibberish/Domains/Ontology.elm @@ -16,13 +16,9 @@ ontologyGibberish = , strength = 0 , explanation = SpecificExplanation "If libertarian free will is meant to refer to the ability to make decisions outside the constraints of determinism, then it would seem like this concept of free will purports to break causality by assuming decisions can be made without antecedent conditions. This just sounds like gibberish to me." } - , { term = "Ontological Modality" + , { term = "Moral Particles" , strength = 0 - , explanation = SpecificExplanation "Any attempt at unpacking this that I've heard has more or less cashed out into a logical modality, but it seems to be taken as distinct from logical modality. As a non-logical modality, I have no idea what it's supposed to be." - } - , { term = "Warrant" - , strength = 0 - , explanation = SpecificExplanation "This seems to be taken to be the thing that is justification-providing on phenomenal conservative. I'm not sure what that thing is, but if it's non-inferential, then it's just gibberish." + , explanation = SpecificExplanation "This just sounds like a hallucination, honestly." } ] } diff --git a/frontend/src/Debate/Gibberish/Domains/PhilOfLanguage.elm b/frontend/src/Debate/Gibberish/Domains/PhilOfLanguage.elm index 986ceb9..c7b8a3e 100755 --- a/frontend/src/Debate/Gibberish/Domains/PhilOfLanguage.elm +++ b/frontend/src/Debate/Gibberish/Domains/PhilOfLanguage.elm @@ -12,7 +12,11 @@ philOfLanguageGibberish = { gibberishTitle = name , gibberishImage = formatName name , gibberishTerms = - [ { term = "Semantic Primitive" + [ { term = "Direct Reference" + , strength = 2 + , explanation = SpecificExplanation "I don't understand the term usage as it's been used and unpacked in conversation. I don't understand what it means for a word to \"point to\" an object, and I also don't understand what semantic advantage or distinction this has to a mundane, ostensibly non-direct reference to an object in speech." + } + , { term = "Semantic Primitive" , strength = 2 , explanation = SpecificExplanation "I typically don't really understand irreducibility language like \"primitive\" in philosophy. Most philosophers seem to just use it as a sort of profound-sounding placeholder for when their personal creativity for explanation runs dry. No idea what it's meant to mean here, though." } diff --git a/frontend/src/Layouts/Navbar.elm b/frontend/src/Layouts/Navbar.elm index 0f8f564..475bc7b 100755 --- a/frontend/src/Layouts/Navbar.elm +++ b/frontend/src/Layouts/Navbar.elm @@ -111,28 +111,27 @@ view { content, model, toContentMsg, props } = [ row (nonHighlightedTitleFormat ++ [ centerX - , spacing 10 - , padding 20 ] ) [ E.image [ spacing 2 - , E.width <| px 80 + , E.width <| px 180 , centerX ] - { src = "navbar/nutrivorelogo.png" + { src = "navbar/uprootnutrition.png" , description = "" } - , column [] - [ link [ centerX ] - { url = localhostUrl ++ pageNames.pageHome - , label = text "upRoot" - } - , link [ centerX ] - { url = localhostUrl ++ pageNames.pageHome - , label = text "Nutrition" - } - ] + + -- , column [] + -- [ link [ centerX ] + -- { url = localhostUrl ++ pageNames.pageHome + -- , label = text "upRoot" + -- } + -- , link [ centerX ] + -- { url = localhostUrl ++ pageNames.pageHome + -- , label = text "Nutrition" + -- } + -- ] ] , el [ E.width <| px 140 diff --git a/frontend/static/navbar/uprootnutrition.png b/frontend/static/navbar/uprootnutrition.png new file mode 100755 index 0000000000000000000000000000000000000000..a33a89f24c0e05fb73512c5a19a0b579fc802395 GIT binary patch literal 36202 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∋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 F1OTCoetiG{ literal 0 HcmV?d00001 diff --git a/parts/config/devshells.nix b/parts/config/devshells.nix index 3afd720..5716570 100755 --- a/parts/config/devshells.nix +++ b/parts/config/devshells.nix @@ -1,19 +1,39 @@ { pkgs, - pkgs-stable, + config, ... }: { - devShells = { - default = pkgs.mkShell { - packages = builtins.attrValues { + haskellProjects.default = { + devShell = { + enable = true; + + tools = hp: { + inherit + (hp) + cabal-fmt + haskell-language-server + ; + inherit (pkgs) alejandra + dhall + dhall-json + dhall-lsp-server + helix-gpt just + libz + ngrep nil + sops + ssh-to-age + stripe-cli + vscode-langservers-extracted + zlib ; + inherit - (pkgs-stable.elmPackages) + (pkgs.elmPackages) elm elm-format elm-land @@ -23,12 +43,16 @@ ; inherit - (pkgs.nodePackages) - "@commitlint/config-conventional" + (pkgs.nodePackages_latest) + dotenv-cli + forever + nodejs npm typescript-language-server ; }; + + hlsCheck.enable = true; }; }; }