From c7922e3bf2cffc5a67a55c1667431bab8eb155c9 Mon Sep 17 00:00:00 2001 From: Mohammad Rafiq Date: Sat, 28 Jun 2025 15:31:00 +0800 Subject: [PATCH] feat: add nixos module for rrv-sh website --- flake.nix | 1 + nix/modules/nixos.nix | 51 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 nix/modules/nixos.nix diff --git a/flake.nix b/flake.nix index e9e35c6..2fb6c45 100644 --- a/flake.nix +++ b/flake.nix @@ -27,5 +27,6 @@ default = pkgs.callPackage ./nix/package.nix { }; } ); + nixosModules.default = import ./nix/modules/nixos.nix; }; } diff --git a/nix/modules/nixos.nix b/nix/modules/nixos.nix new file mode 100644 index 0000000..c4e48b5 --- /dev/null +++ b/nix/modules/nixos.nix @@ -0,0 +1,51 @@ +{ + config, + lib, + pkgs, + ... +}: +let + inherit (builtins) toString; + inherit (lib) mkOption mkEnableOption mkIf; + inherit (lib.types) port str; + cfg = config.services.rrv-sh; + package = pkgs.callPackage ../package.nix { }; +in +{ + options.services.rrv-sh = { + enable = mkEnableOption ""; + port = mkOption { + type = port; + default = 2309; + }; + user = mkOption { + type = str; + default = "rrv-sh"; + }; + group = mkOption { + type = str; + default = "rrv-sh"; + }; + }; + config = mkIf cfg.enable { + users.users.rrv-sh = mkIf (cfg.user == "rrv-sh") { + inherit (cfg) group; + isSystemUser = true; + description = "rrv.sh server user"; + }; + users.groups.rrv-sh = mkIf (cfg.user == "rrv-sh") { }; + systemd.services.rrv-sh = { + description = "the rrv.sh website"; + after = [ "network.target" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + Restart = "on-failure"; + RestartSec = "5s"; + User = cfg.user; + Group = cfg.group; + ExecStart = "${pkgs.live-server}/bin/live-server -p ${toString cfg.port} ${package}"; + }; + }; + }; +}