From ae259fa0a2e40e93806f5c031b61b990cd16c6a4 Mon Sep 17 00:00:00 2001 From: Sridhar Ratnakumar Date: Thu, 4 Sep 2025 21:05:59 -0400 Subject: [PATCH] pureintent: vira! --- configurations/nixos/pureintent/default.nix | 1 + flake.lock | 411 +++++++++++++++++++- flake.nix | 1 + modules/nixos/linux/vira.nix | 8 +- 4 files changed, 415 insertions(+), 6 deletions(-) diff --git a/configurations/nixos/pureintent/default.nix b/configurations/nixos/pureintent/default.nix index 10fb341..e050260 100644 --- a/configurations/nixos/pureintent/default.nix +++ b/configurations/nixos/pureintent/default.nix @@ -11,6 +11,7 @@ in self.nixosModules.default ./configuration.nix ./home-media.nix + (self + /modules/nixos/linux/vira.nix) (self + /modules/nixos/linux/eternal-terminal.nix) (self + /modules/nixos/shared/github-runner.nix) ]; diff --git a/flake.lock b/flake.lock index b7509bc..8632767 100644 --- a/flake.lock +++ b/flake.lock @@ -36,6 +36,29 @@ "type": "github" } }, + "co-log-effectful": { + "inputs": { + "devshell": "devshell", + "flake-parts": "flake-parts_5", + "haskell-flake": "haskell-flake", + "nixpkgs": "nixpkgs_7", + "pre-commit-hooks-nix": "pre-commit-hooks-nix", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1738358259, + "narHash": "sha256-V+JiNh+GY4OC+uEp4AeX6wYMzsj5JJAqnrraXn1T8kg=", + "owner": "eldritch-cookie", + "repo": "co-log-effectful", + "rev": "be451264f0637804368fba1751ed7bc8606eefc6", + "type": "github" + }, + "original": { + "owner": "eldritch-cookie", + "repo": "co-log-effectful", + "type": "github" + } + }, "crane": { "locked": { "lastModified": 1736566337, @@ -89,6 +112,28 @@ "type": "github" } }, + "devshell": { + "inputs": { + "nixpkgs": [ + "vira", + "co-log-effectful", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1735644329, + "narHash": "sha256-tO3HrHriyLvipc4xr+Ewtdlo7wM1OjXNjlWRgmM7peY=", + "owner": "numtide", + "repo": "devshell", + "rev": "f7795ede5b02664b57035b3b757876703e2c3eac", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, "disko": { "inputs": { "nixpkgs": [ @@ -163,6 +208,22 @@ "type": "github" } }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, "flake-parts": { "inputs": { "nixpkgs-lib": "nixpkgs-lib" @@ -241,6 +302,49 @@ "type": "github" } }, + "flake-parts_5": { + "inputs": { + "nixpkgs-lib": [ + "vira", + "co-log-effectful", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1736143030, + "narHash": "sha256-+hu54pAoLDEZT9pjHlqL9DNzWz0NbUn8NEAHP7PQPzU=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b905f6fc23a9051a6e1b741e1438dbfc0634c6de", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_6": { + "inputs": { + "nixpkgs-lib": [ + "vira", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1756770412, + "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "4524271976b625a4a605beefd893f270620fd751", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-utils": { "inputs": { "systems": "systems_3" @@ -295,6 +399,21 @@ "type": "github" } }, + "fourmolu-nix": { + "locked": { + "lastModified": 1707266073, + "narHash": "sha256-tCFzZQJicDdYjnuJiNK4hiiRAH7c2wQzMhOCdUMbVKE=", + "owner": "jedimahdi", + "repo": "fourmolu-nix", + "rev": "717f5a91b0d7b97b1be7ecc3a0fd42d37ffe1c9b", + "type": "github" + }, + "original": { + "owner": "jedimahdi", + "repo": "fourmolu-nix", + "type": "github" + } + }, "git-hooks": { "flake": false, "locked": { @@ -327,6 +446,23 @@ "type": "github" } }, + "git-hooks_3": { + "flake": false, + "locked": { + "lastModified": 1748731770, + "narHash": "sha256-++eAISyF3JzxbTBg3RnjVtB1Sgh1K5cTTDT2giG916Y=", + "owner": "bmrips", + "repo": "git-hooks.nix", + "rev": "6007ee9515d68f90df845e831456a646725a7288", + "type": "github" + }, + "original": { + "owner": "bmrips", + "ref": "typos-improvements", + "repo": "git-hooks.nix", + "type": "github" + } + }, "github-nix-ci": { "locked": { "lastModified": 1728494632, @@ -342,6 +478,59 @@ "type": "github" } }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "vira", + "co-log-effectful", + "pre-commit-hooks-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "haskell-flake": { + "locked": { + "lastModified": 1737903979, + "narHash": "sha256-NL9+FkAzmU/zVy7EQUj13s/+FjX2Mcz6ID7dW1j32Xg=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "3bc6fe9793bf1239a335f9439f0be66c964df1a3", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, + "haskell-flake_2": { + "locked": { + "lastModified": 1756607542, + "narHash": "sha256-+99fEAk0HwjYgIW2tEOs7ayBDxnU9NAM5E29ZxgyX40=", + "owner": "srid", + "repo": "haskell-flake", + "rev": "73e3891fb135c679a1c30fae4b101e5b41b8ca61", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "haskell-flake", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -383,6 +572,39 @@ "type": "github" } }, + "htmx": { + "flake": false, + "locked": { + "lastModified": 1730661957, + "narHash": "sha256-ce3CVJVmY5240qyEt2W0Q3HUeMAKP6IQwxtIO+zDzAs=", + "owner": "JonathanLorimer", + "repo": "htmx", + "rev": "a9592b2627a75f522cd710d6bcfb7670a4a587dd", + "type": "github" + }, + "original": { + "owner": "JonathanLorimer", + "repo": "htmx", + "type": "github" + } + }, + "htmx-extensions": { + "flake": false, + "locked": { + "lastModified": 1740062719, + "narHash": "sha256-KW8ahQdu1pevghnKNL+Idie2o6TtKlUqwES2kpmqOVs=", + "owner": "juspay", + "repo": "htmx-extensions", + "rev": "0f7b0b569651c259af0fa81d78530f0f540d709b", + "type": "github" + }, + "original": { + "owner": "juspay", + "ref": "sse-unload", + "repo": "htmx-extensions", + "type": "github" + } + }, "inspect": { "flake": false, "locked": { @@ -581,6 +803,21 @@ "type": "github" } }, + "nixos-unified_2": { + "locked": { + "lastModified": 1754753812, + "narHash": "sha256-sYZLY+hsaMzz3gsYdwHA7conki3H8zSl43YH2xWnKBc=", + "owner": "srid", + "repo": "nixos-unified", + "rev": "4a5e3c33c6177237a27902d3fa4d845448d48e2b", + "type": "github" + }, + "original": { + "owner": "srid", + "repo": "nixos-unified", + "type": "github" + } + }, "nixos-vscode-server": { "inputs": { "flake-utils": "flake-utils", @@ -616,6 +853,22 @@ "type": "github" } }, + "nixpkgs-25-05": { + "locked": { + "lastModified": 1756999638, + "narHash": "sha256-R9wNXA8KT71zo/GeMdVgB3KoHj11h4eHa7woTLXMQVw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e7b7aee12245de9127b3af86ae049cccd490d7cb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "release-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-lib": { "locked": { "lastModified": 1725233747, @@ -734,6 +987,38 @@ "type": "github" } }, + "nixpkgs_7": { + "locked": { + "lastModified": 1738264807, + "narHash": "sha256-6x6WLFwoLdR3w3FYtCnLye2Xe32SqsL7Zf0jpa5wJMM=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "93f6e8d16bc5653505d0165ccec7b667690f7071", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "haskell-updates", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_8": { + "locked": { + "lastModified": 1756696532, + "narHash": "sha256-6FWagzm0b7I/IGigOv9pr6LL7NQ86mextfE8g8Q6HBg=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "58dcbf1ec551914c3756c267b8b9c8c86baa1b2f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nixvim": { "inputs": { "flake-parts": "flake-parts_2", @@ -831,6 +1116,45 @@ "type": "github" } }, + "pre-commit-hooks-nix": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "vira", + "co-log-effectful", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1737465171, + "narHash": "sha256-R10v2hoJRLq8jcL4syVFag7nIGE7m13qO48wRIukWNg=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "9364dc02281ce2d37a1f55b6e51f7c0f65a75f17", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "process-compose-flake": { + "locked": { + "lastModified": 1749418557, + "narHash": "sha256-wJHHckWz4Gvj8HXtM5WVJzSKXAEPvskQANVoRiu2w1w=", + "owner": "Platonic-Systems", + "repo": "process-compose-flake", + "rev": "91dcc48a6298e47e2441ec76df711f4e38eab94e", + "type": "github" + }, + "original": { + "owner": "Platonic-Systems", + "repo": "process-compose-flake", + "type": "github" + } + }, "root": { "inputs": { "agenix": "agenix", @@ -851,7 +1175,8 @@ "nuenv": "nuenv", "omnix": "omnix", "try": "try", - "vertex": "vertex" + "vertex": "vertex", + "vira": "vira" } }, "rust-flake": { @@ -921,6 +1246,22 @@ "type": "github" } }, + "servant-event-stream": { + "flake": false, + "locked": { + "lastModified": 1755782458, + "narHash": "sha256-odwdQHMQjwo3np2BH9rNoKLpkdkkInocSbzv/naTH/U=", + "owner": "bflyblue", + "repo": "servant-event-stream", + "rev": "4bd039405c864076407a2b4f1ffe99e29496e942", + "type": "github" + }, + "original": { + "owner": "bflyblue", + "repo": "servant-event-stream", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -1026,6 +1367,44 @@ "type": "github" } }, + "tabler-icons-hs": { + "flake": false, + "locked": { + "lastModified": 1756335210, + "narHash": "sha256-NVOfzoJ792fE6NOlmkbOVRBaEInyujA3dl8sEiydUbg=", + "owner": "juspay", + "repo": "tabler-icons-hs", + "rev": "405c85321d4a9de87f0cea218aa75c5fe5969116", + "type": "github" + }, + "original": { + "owner": "juspay", + "repo": "tabler-icons-hs", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "vira", + "co-log-effectful", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1738070913, + "narHash": "sha256-j6jC12vCFsTGDmY2u1H12lMr62fnclNjuCtAdF1a4Nk=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "bebf27d00f7d10ba75332a0541ac43676985dea3", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "true": { "locked": { "lastModified": 1657739253, @@ -1082,6 +1461,36 @@ "repo": "vertex", "type": "github" } + }, + "vira": { + "inputs": { + "co-log-effectful": "co-log-effectful", + "flake-parts": "flake-parts_6", + "fourmolu-nix": "fourmolu-nix", + "git-hooks": "git-hooks_3", + "haskell-flake": "haskell-flake_2", + "htmx": "htmx", + "htmx-extensions": "htmx-extensions", + "nixos-unified": "nixos-unified_2", + "nixpkgs": "nixpkgs_8", + "nixpkgs-25-05": "nixpkgs-25-05", + "process-compose-flake": "process-compose-flake", + "servant-event-stream": "servant-event-stream", + "tabler-icons-hs": "tabler-icons-hs" + }, + "locked": { + "lastModified": 1757034328, + "narHash": "sha256-7pnWkaUaXMRnqZh9X53yo3iIttDmVVu+kvOuFsM84zE=", + "owner": "juspay", + "repo": "vira", + "rev": "fecf73e240cb9661eb4ad745fc731a957197ca6f", + "type": "github" + }, + "original": { + "owner": "juspay", + "repo": "vira", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index cef1826..a91a29e 100644 --- a/flake.nix +++ b/flake.nix @@ -30,6 +30,7 @@ flake-parts.follows = "flake-parts"; }; try.url = "github:tobi/try"; + vira.url = "github:juspay/vira"; # Neovim nixvim.url = "github:nix-community/nixvim"; diff --git a/modules/nixos/linux/vira.nix b/modules/nixos/linux/vira.nix index e99456e..a173565 100644 --- a/modules/nixos/linux/vira.nix +++ b/modules/nixos/linux/vira.nix @@ -10,14 +10,12 @@ in services.vira = { enable = true; - - # Basic configuration hostname = "0.0.0.0"; port = 5001; - https = false; - stateDirectory = "/var/lib/vira"; + https = true; + stateDir = "/var/lib/vira"; + openFirewall = true; package = inputs.vira.packages.${pkgs.system}.default; }; - networking.firewall.allowedTCPPorts = [ 5001 ]; }