{ description = "Coder Templates"; outputs = { self, nixpkgs, flake-parts, systems, ... } @ inputs: flake-parts.lib.mkFlake {inherit inputs;} { imports = [ inputs.devenv.flakeModule inputs.nix-gitlab-ci.flakeModule ]; systems = import systems; flake = { }; perSystem = { config, self', inputs', pkgs, system, ... }: { _module.args.pkgs = import nixpkgs { inherit system; config.allowUnfree = true; }; formatter = pkgs.alejandra; devenv.shells.default = { imports = [ inputs.nix-devtools.devenvModule ]; packages = [ pkgs.opentofu pkgs.coder ]; pre-commit.hooks = { alejandra.enable = true; }; task = { enable = true; alias = ","; tasks = { "build" = { requires.vars = ["TEMPLATE"]; cmds = [ "nix build .#{{ .TEMPLATE }}" "install result {{ .TEMPLATE }}/template.tf.json" ]; }; "validate" = { desc = "Validate the resulting terraform files"; deps = ["build"]; requires.vars = ["TEMPLATE"]; dir = "{{ .TEMPLATE }}"; cmds = [ "${pkgs.opentofu}/bin/tofu init" "${pkgs.opentofu}/bin/tofu validate" ]; }; "upload-to-coder" = { desc = "Uploads the specified template to coder"; deps = ["build" "validate"]; requires.vars = ["TEMPLATE"]; dir = "{{ .TEMPLATE }}"; interactive = true; cmd = ''${pkgs.coder}/bin/coder templates push "{{ .TEMPLATE }}"''; }; }; }; }; packages = { nix-coder-image = pkgs.callPackage ./image.nix {}; nix-kubernetes = inputs.terranix.lib.terranixConfiguration { inherit system; modules = [./nix-kubernetes]; }; }; }; }; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; flake-parts.url = "github:hercules-ci/flake-parts"; systems.url = "github:nix-systems/default"; devenv.url = "github:cachix/devenv"; nix-gitlab-ci = { url = "gitlab:TECHNOFAB/nix-gitlab-ci"; inputs.nixpkgs.follows = "nixpkgs"; inputs.devenv.follows = "devenv"; inputs.systems.follows = "systems"; }; nix-devtools = { url = "gitlab:TECHNOFAB/nix-devtools"; inputs.nixpkgs.follows = "nixpkgs"; inputs.devenv.follows = "devenv"; inputs.systems.follows = "systems"; }; terranix.url = "github:terranix/terranix"; }; }