This repository has been archived on 2024-10-26. You can view files and clone it, but cannot push or open issues or pull requests.
staxman-old/flake.nix
2023-11-28 20:54:04 +01:00

83 lines
No EOL
2.2 KiB
Nix

{
description = "staxman";
inputs = {
flake-parts.url = "github:hercules-ci/flake-parts";
rust-overlay.url = "github:oxalica/rust-overlay";
rust-crate2nix = {
url = "github:kolloch/crate2nix";
flake = false;
};
};
outputs = inputs @ {
self,
nixpkgs,
flake-parts,
rust-overlay,
rust-crate2nix,
...
} : flake-parts.lib.mkFlake { inherit inputs; } {
systems = [
"x86_64-linux"
];
flake = with nixpkgs.lib; {
nixosModules.staxman = {
options = {
enable = mkEnableOption "staxman";
stackDir = mkOption {
type = types.path;
defaultText = "/stacks";
example = "/stacks";
description = ''
Directory containing Arion stacks
'';
};
};
config = mkIf cfg.enable {
systemd.services.staxman = {
description = "Scatting system management";
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
environment.STAX_ARION_BIN = "${getBin nixpkgs.arion}";
environment.STAX_DIR = cfg.stackDir;
serviceConfig = {
User = "root";
Group = "root";
Restart = "always";
ExecStart = "${getBin nixpkgs.staxman}/bin/staxman";
};
StateDirectory = "staxman";
StateDirectoryMode = "0750";
};
};
};
};
perSystem = { system, pkgs, ... }: let
overlays = [
(import rust-overlay)
(self: super: let
toolchain = super.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
in {
rustc = toolchain;
})
];
pkgs = import nixpkgs { inherit system overlays; };
project = let
crateTools = pkgs.callPackage "${rust-crate2nix}/tools.nix" { inherit pkgs; };
in import (crateTools.generatedCargoNix {
name = "staxman";
src = ./.;
}) {
inherit pkgs;
};
in rec {
packages = {
staxman = project.rootCrate.build;
default = packages.staxman;
};
};
};
}