diff --git a/flake.lock b/flake.lock index ea69066..925dac2 100644 --- a/flake.lock +++ b/flake.lock @@ -18,23 +18,7 @@ }, "root": { "inputs": { - "nixpkgs": "nixpkgs", - "systems": "systems" - } - }, - "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index 6ce1919..35e0c42 100644 --- a/flake.nix +++ b/flake.nix @@ -1,21 +1,34 @@ { inputs.nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; - inputs.systems.url = "github:nix-systems/default-linux"; outputs = inputs: let - inherit (inputs.nixpkgs) lib legacyPackages; - forEachSystem = lib.genAttrs (import inputs.systems); + systems = [ + "x86_64-linux" + "aarch64-linux" + ]; + inherit (builtins) map listToAttrs; + forAllSystems = + f: + listToAttrs ( + map (system: { + name = system; + value = f system; + }) systems + ); in { - packages = forEachSystem ( + packages = forAllSystems ( system: let - pkgs = legacyPackages.${system}; + pkgs = inputs.nixpkgs.legacyPackages.${system}; in { - default = pkgs.callPackage ./default.nix { }; + default = pkgs.callPackage ./nix/package.nix { }; } ); + nixosModules = forAllSystems (_: { + default = import ./nix/modules/nixos.nix; + }); }; } diff --git a/nix/modules/nixos.nix b/nix/modules/nixos.nix new file mode 100644 index 0000000..f66c30b --- /dev/null +++ b/nix/modules/nixos.nix @@ -0,0 +1,45 @@ +{ + 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 { + 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}"; + }; + }; + }; +} diff --git a/default.nix b/nix/package.nix similarity index 90% rename from default.nix rename to nix/package.nix index ae22cb4..0811d98 100644 --- a/default.nix +++ b/nix/package.nix @@ -5,7 +5,7 @@ let in stdenv.mkDerivation { inherit name version; - src = ./src; + src = ../src; installPhase = '' cp -r . $out '';