Skyler Grey | 1e2187f | 2023-03-03 22:45:10 +0000 | [diff] [blame] | 1 | { |
| 2 | description = "A flake to deploy and configure Clicks' NixOS server"; |
| 3 | |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 4 | # input URLs |
Skyler Grey | 915067d | 2023-12-03 13:46:53 +0000 | [diff] [blame] | 5 | inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; |
Skyler Grey | b30f5dd | 2023-09-01 21:02:44 +0000 | [diff] [blame] | 6 | inputs.nixpkgs-clicksforms.url = "github:nixos/nixpkgs/nixos-22.05"; |
Skyler Grey | 061574c | 2023-05-01 21:39:24 +0000 | [diff] [blame] | 7 | inputs.flake-utils.url = "github:numtide/flake-utils"; |
Skyler Grey | 1e2187f | 2023-03-03 22:45:10 +0000 | [diff] [blame] | 8 | inputs.deploy-rs.url = "github:serokell/deploy-rs"; |
Skyler Grey | 915067d | 2023-12-03 13:46:53 +0000 | [diff] [blame] | 9 | inputs.home-manager.url = "github:nix-community/home-manager/release-23.11"; |
Skyler Grey | a7fbaee | 2023-05-12 00:29:20 +0000 | [diff] [blame] | 10 | inputs.sops-nix.url = "github:Mic92/sops-nix"; |
Skyler Grey | a78aa67 | 2023-05-20 13:48:18 +0200 | [diff] [blame] | 11 | inputs.scalpel.url = "github:polygon/scalpel"; |
Skyler Grey | 1e2187f | 2023-03-03 22:45:10 +0000 | [diff] [blame] | 12 | |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 13 | inputs.nixpkgs-privatebin.url = "github:e1mo/nixpkgs/privatebin"; |
| 14 | inputs.nixpkgs-mongodb.url = "github:nixos/nixpkgs?rev=8dfad603247387df1df4826b8bea58efc5d012d8"; |
| 15 | |
Skyler Grey | 22428b0 | 2023-11-19 13:20:56 +0000 | [diff] [blame] | 16 | inputs.helpers.url = "git+https://git.clicks.codes/Clicks/NixHelpers"; |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 17 | |
| 18 | # follow settings |
Skyler Grey | fed0bb1 | 2023-05-01 21:42:03 +0000 | [diff] [blame] | 19 | inputs.home-manager.inputs.nixpkgs.follows = "nixpkgs"; |
Skyler Grey | fed0bb1 | 2023-05-01 21:42:03 +0000 | [diff] [blame] | 20 | |
Skyler Grey | a7fbaee | 2023-05-12 00:29:20 +0000 | [diff] [blame] | 21 | inputs.sops-nix.inputs.nixpkgs.follows = "nixpkgs"; |
| 22 | |
Skyler Grey | a78aa67 | 2023-05-20 13:48:18 +0200 | [diff] [blame] | 23 | inputs.scalpel.inputs.nixpkgs.follows = "nixpkgs"; |
| 24 | inputs.scalpel.inputs.sops-nix.follows = "sops-nix"; |
| 25 | |
Skyler Grey | c5ed69c | 2023-12-23 02:25:41 +0000 | [diff] [blame^] | 26 | inputs.gerrit-oauth = { |
| 27 | url = "https://gerrit-ci.gerritforge.com/job/plugin-oauth-bazel-master-master/lastBuild/artifact/bazel-bin/plugins/oauth/oauth.jar"; |
| 28 | flake = false; |
| 29 | }; |
| 30 | |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 31 | outputs = { self, nixpkgs, deploy-rs, home-manager, sops-nix, scalpel |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 32 | , nixpkgs-privatebin, ... }@inputs: |
Skyler Grey | 07584fb | 2023-05-01 21:37:13 +0000 | [diff] [blame] | 33 | let |
| 34 | system = "x86_64-linux"; |
| 35 | pkgs = import nixpkgs { |
| 36 | inherit system; |
| 37 | config.allowUnfree = true; |
Skyler Grey | 9fe6128 | 2023-08-20 21:52:48 +0000 | [diff] [blame] | 38 | overlays = [ |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 39 | (final: prev: { |
| 40 | inherit (nixpkgs-privatebin.legacyPackages.${system}) |
| 41 | privatebin pbcli; |
| 42 | }) |
Skyler Grey | 9fe6128 | 2023-08-20 21:52:48 +0000 | [diff] [blame] | 43 | ]; |
Skyler Grey | 07584fb | 2023-05-01 21:37:13 +0000 | [diff] [blame] | 44 | }; |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 45 | helpers = inputs.helpers.helpers { inherit pkgs nixpkgs; }; |
| 46 | drive_paths = import ./variables/drive_paths.nix; |
| 47 | |
| 48 | a1d1 = import ./modules/a1d1 { inherit self pkgs system inputs drive_paths; }; |
| 49 | a1d2 = import ./modules/a1d2 { inherit self pkgs system inputs; drive_paths = null; }; |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 50 | in rec { |
| 51 | nixosConfigurations.clicks = let |
| 52 | base = nixpkgs.lib.nixosSystem { |
| 53 | inherit system pkgs; |
Skyler Grey | 07584fb | 2023-05-01 21:37:13 +0000 | [diff] [blame] | 54 | modules = [ |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 55 | { |
| 56 | system.stateVersion = "22.11"; |
| 57 | nix.settings.experimental-features = [ "nix-command" "flakes" ]; |
Samuel Shuert | 32d3fb5 | 2023-11-22 16:25:10 -0500 | [diff] [blame] | 58 | nix.settings.trusted-users = [ "minion" "coded" ]; |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 59 | time.timeZone = "Etc/UTC"; |
| 60 | users.mutableUsers = false; |
| 61 | |
| 62 | fileSystems."/" = {}; |
| 63 | } |
| 64 | ] |
| 65 | ++ (helpers.nixFilesIn ./modules/common) |
| 66 | ++ [ |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 67 | sops-nix.nixosModules.sops |
| 68 | "${nixpkgs-privatebin}/nixos/modules/services/web-apps/privatebin.nix" |
Skyler Grey | 07584fb | 2023-05-01 21:37:13 +0000 | [diff] [blame] | 69 | ]; |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 70 | specialArgs = inputs // { |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 71 | base = null; |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 72 | inherit system; |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 73 | inherit helpers; |
| 74 | drive_paths = null; |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 75 | }; |
Skyler Grey | 4f3e606 | 2023-03-04 01:29:29 +0000 | [diff] [blame] | 76 | }; |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 77 | in base.extendModules { |
| 78 | modules = [ scalpel.nixosModules.scalpel ]; |
| 79 | specialArgs = { inherit base; }; |
| 80 | }; |
Skyler Grey | 07584fb | 2023-05-01 21:37:13 +0000 | [diff] [blame] | 81 | |
Skyler Grey | b3516c2 | 2023-05-24 19:17:11 +0200 | [diff] [blame] | 82 | nixosConfigurations.clicks-without-mongodb = |
| 83 | nixosConfigurations.clicks.extendModules { |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 84 | modules = [{ services.mongodb.enable = nixpkgs.lib.mkForce false; }]; |
Skyler Grey | b3516c2 | 2023-05-24 19:17:11 +0200 | [diff] [blame] | 85 | }; |
| 86 | |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 87 | nixosConfigurations.a1d1 = a1d1.config; |
| 88 | nixosConfigurations.a1d2 = a1d2.config; |
Skyler Grey | 07584fb | 2023-05-01 21:37:13 +0000 | [diff] [blame] | 89 | |
Samuel Shuert | f68685d | 2023-10-28 20:07:56 -0400 | [diff] [blame] | 90 | deploy.nodes.a1d1 = a1d1.deploy; |
| 91 | deploy.nodes.a1d2 = a1d2.deploy; |
Skyler Grey | 1e2187f | 2023-03-03 22:45:10 +0000 | [diff] [blame] | 92 | |
Skyler Grey | fe1740c | 2023-10-21 01:24:18 +0000 | [diff] [blame] | 93 | devShells.x86_64-linux.default = |
| 94 | pkgs.mkShell { packages = [ pkgs.deploy-rs ]; }; |
Skyler Grey | b30f5dd | 2023-09-01 21:02:44 +0000 | [diff] [blame] | 95 | |
Skyler Grey | 2ca6ccd | 2023-10-14 22:56:43 +0000 | [diff] [blame] | 96 | formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt; |
Skyler Grey | 1e2187f | 2023-03-03 22:45:10 +0000 | [diff] [blame] | 97 | }; |
Skyler Grey | 1e2187f | 2023-03-03 22:45:10 +0000 | [diff] [blame] | 98 | } |