aboutsummaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
authortoufic ar <contact@toufy.me>2026-05-07 02:13:21 +0300
committertoufic ar <contact@toufy.me>2026-05-07 02:13:21 +0300
commitef46ad47b5c1b6b77604f6de28e0dd342654b9e9 (patch)
tree7e6147584e2fb84600a34d39391eac78816e1feb /flake.nix
parent099f2d1979990df66be9fc03a8cd471f31f66d79 (diff)
downloadmakeshiftci-ef46ad47b5c1b6b77604f6de28e0dd342654b9e9.tar.gz
makeshiftci-ef46ad47b5c1b6b77604f6de28e0dd342654b9e9.zip
nix support
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix82
1 files changed, 82 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..661763b
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,82 @@
+{
+ description = "a makeshift CI solution";
+
+ inputs = {
+ nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
+ };
+
+ outputs = {
+ self,
+ nixpkgs,
+ }: let
+ system = "x86_64-linux";
+ pkgs = import nixpkgs {inherit system;};
+ msci = (pkgs.writeScriptBin
+ "msci" (builtins.readFile ./msci)).overrideAttrs (old: {
+ buildCommand = "${old.buildCommand}\n patchShebangs $out";
+ });
+ in {
+ packages."${system}".msci = pkgs.symlinkJoin {
+ name = "msci";
+ paths = [msci pkgs.jq pkgs.git];
+ buildInputs = [pkgs.makeWrapper];
+ postBuild = "wrapProgram $out/bin/msci --prefix PATH : $out/bin";
+ };
+ nixosModules.default = {
+ lib,
+ config,
+ ...
+ }: let
+ cfg = config.makeshiftci;
+ in {
+ options = with lib; {
+ makeshiftci = mkOption {
+ type = types.submodule {
+ options = {
+ enable = mkEnableOption "enable makeshiftci";
+ dataDir = mkOption {
+ type = types.str;
+ default = "/var/lib/makeshiftci";
+ description = "data directory of makeshiftci";
+ };
+ createUser = mkEnableOption "create a non-root user";
+ };
+ };
+ };
+ };
+ config = lib.mkIf cfg.enable {
+ environment = {
+ sessionVariables.MSCI_HOME = cfg.dataDir;
+ systemPackages = [
+ pkgs.jq
+ pkgs.git
+ self.packages."${system}".msci
+ ];
+ };
+ systemd.tmpfiles.settings."makeshiftci" = {
+ "${cfg.dataDir}" = {
+ d = {
+ user =
+ if cfg.createUser
+ then "makeshiftci"
+ else "root";
+ group =
+ if cfg.createUser
+ then "makeshiftci"
+ else "root";
+ mode = "0750";
+ };
+ };
+ };
+ services.cron.enable = true;
+ users = lib.mkIf cfg.createUser {
+ users."makeshiftci" = {
+ group = "makeshiftci";
+ home = cfg.dataDir;
+ useDefaultShell = true;
+ };
+ };
+ };
+ };
+ };
+}