blob: 722899cc2f5fc0cf3567c6d769a01cf409d05316 [file] [log] [blame]
Skyler Grey1e2187f2023-03-03 22:45:10 +00001{
2 description = "A flake to deploy and configure Clicks' NixOS server";
3
Samuel Shuertf68685d2023-10-28 20:07:56 -04004 # input URLs
Skyler Grey915067d2023-12-03 13:46:53 +00005 inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11";
Skyler Greyb30f5dd2023-09-01 21:02:44 +00006 inputs.nixpkgs-clicksforms.url = "github:nixos/nixpkgs/nixos-22.05";
Skyler Grey061574c2023-05-01 21:39:24 +00007 inputs.flake-utils.url = "github:numtide/flake-utils";
Skyler Grey1e2187f2023-03-03 22:45:10 +00008 inputs.deploy-rs.url = "github:serokell/deploy-rs";
Skyler Grey915067d2023-12-03 13:46:53 +00009 inputs.home-manager.url = "github:nix-community/home-manager/release-23.11";
Skyler Greya7fbaee2023-05-12 00:29:20 +000010 inputs.sops-nix.url = "github:Mic92/sops-nix";
Skyler Greya78aa672023-05-20 13:48:18 +020011 inputs.scalpel.url = "github:polygon/scalpel";
Skyler Grey1e2187f2023-03-03 22:45:10 +000012
Samuel Shuertf68685d2023-10-28 20:07:56 -040013 inputs.nixpkgs-privatebin.url = "github:e1mo/nixpkgs/privatebin";
14 inputs.nixpkgs-mongodb.url = "github:nixos/nixpkgs?rev=8dfad603247387df1df4826b8bea58efc5d012d8";
15
Skyler Grey22428b02023-11-19 13:20:56 +000016 inputs.helpers.url = "git+https://git.clicks.codes/Clicks/NixHelpers";
Samuel Shuertf68685d2023-10-28 20:07:56 -040017
18 # follow settings
Skyler Greyfed0bb12023-05-01 21:42:03 +000019 inputs.home-manager.inputs.nixpkgs.follows = "nixpkgs";
Skyler Greyfed0bb12023-05-01 21:42:03 +000020
Skyler Greya7fbaee2023-05-12 00:29:20 +000021 inputs.sops-nix.inputs.nixpkgs.follows = "nixpkgs";
22
Skyler Greya78aa672023-05-20 13:48:18 +020023 inputs.scalpel.inputs.nixpkgs.follows = "nixpkgs";
24 inputs.scalpel.inputs.sops-nix.follows = "sops-nix";
25
Skyler Greyc5ed69c2023-12-23 02:25:41 +000026 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 Greyfe1740c2023-10-21 01:24:18 +000031 outputs = { self, nixpkgs, deploy-rs, home-manager, sops-nix, scalpel
Samuel Shuertf68685d2023-10-28 20:07:56 -040032 , nixpkgs-privatebin, ... }@inputs:
Skyler Grey07584fb2023-05-01 21:37:13 +000033 let
34 system = "x86_64-linux";
35 pkgs = import nixpkgs {
36 inherit system;
37 config.allowUnfree = true;
Skyler Grey9fe61282023-08-20 21:52:48 +000038 overlays = [
Skyler Greyfe1740c2023-10-21 01:24:18 +000039 (final: prev: {
40 inherit (nixpkgs-privatebin.legacyPackages.${system})
41 privatebin pbcli;
42 })
Skyler Grey9fe61282023-08-20 21:52:48 +000043 ];
Skyler Grey07584fb2023-05-01 21:37:13 +000044 };
Samuel Shuertf68685d2023-10-28 20:07:56 -040045 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 Greyfe1740c2023-10-21 01:24:18 +000050 in rec {
51 nixosConfigurations.clicks = let
52 base = nixpkgs.lib.nixosSystem {
53 inherit system pkgs;
Skyler Grey07584fb2023-05-01 21:37:13 +000054 modules = [
Samuel Shuertf68685d2023-10-28 20:07:56 -040055 {
56 system.stateVersion = "22.11";
57 nix.settings.experimental-features = [ "nix-command" "flakes" ];
Samuel Shuert32d3fb52023-11-22 16:25:10 -050058 nix.settings.trusted-users = [ "minion" "coded" ];
Samuel Shuertf68685d2023-10-28 20:07:56 -040059 time.timeZone = "Etc/UTC";
60 users.mutableUsers = false;
61
62 fileSystems."/" = {};
63 }
64 ]
65 ++ (helpers.nixFilesIn ./modules/common)
66 ++ [
Skyler Greyfe1740c2023-10-21 01:24:18 +000067 sops-nix.nixosModules.sops
68 "${nixpkgs-privatebin}/nixos/modules/services/web-apps/privatebin.nix"
Skyler Grey07584fb2023-05-01 21:37:13 +000069 ];
Samuel Shuertf68685d2023-10-28 20:07:56 -040070 specialArgs = inputs // {
Skyler Greyfe1740c2023-10-21 01:24:18 +000071 base = null;
Skyler Greyfe1740c2023-10-21 01:24:18 +000072 inherit system;
Samuel Shuertf68685d2023-10-28 20:07:56 -040073 inherit helpers;
74 drive_paths = null;
Skyler Greyfe1740c2023-10-21 01:24:18 +000075 };
Skyler Grey4f3e6062023-03-04 01:29:29 +000076 };
Skyler Greyfe1740c2023-10-21 01:24:18 +000077 in base.extendModules {
78 modules = [ scalpel.nixosModules.scalpel ];
79 specialArgs = { inherit base; };
80 };
Skyler Grey07584fb2023-05-01 21:37:13 +000081
Skyler Greyb3516c22023-05-24 19:17:11 +020082 nixosConfigurations.clicks-without-mongodb =
83 nixosConfigurations.clicks.extendModules {
Skyler Greyfe1740c2023-10-21 01:24:18 +000084 modules = [{ services.mongodb.enable = nixpkgs.lib.mkForce false; }];
Skyler Greyb3516c22023-05-24 19:17:11 +020085 };
86
Samuel Shuertf68685d2023-10-28 20:07:56 -040087 nixosConfigurations.a1d1 = a1d1.config;
88 nixosConfigurations.a1d2 = a1d2.config;
Skyler Grey07584fb2023-05-01 21:37:13 +000089
Samuel Shuertf68685d2023-10-28 20:07:56 -040090 deploy.nodes.a1d1 = a1d1.deploy;
91 deploy.nodes.a1d2 = a1d2.deploy;
Skyler Grey1e2187f2023-03-03 22:45:10 +000092
Skyler Greyfe1740c2023-10-21 01:24:18 +000093 devShells.x86_64-linux.default =
94 pkgs.mkShell { packages = [ pkgs.deploy-rs ]; };
Skyler Greyb30f5dd2023-09-01 21:02:44 +000095
Skyler Grey2ca6ccd2023-10-14 22:56:43 +000096 formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt;
Skyler Grey1e2187f2023-03-03 22:45:10 +000097 };
Skyler Grey1e2187f2023-03-03 22:45:10 +000098}