switch from flake-utils to flake-parts
There is not so much of a difference in this project, but it means adding this project to clan is one less flake input and also more consistent with other projects in clan.
This commit is contained in:
parent
c9095421c6
commit
1315858592
2 changed files with 94 additions and 86 deletions
143
flake.nix
143
flake.nix
|
|
@ -1,80 +1,101 @@
|
|||
{
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
flake-parts.url = "github:hercules-ci/flake-parts";
|
||||
flake-parts.inputs.nixpkgs-lib.follows = "nixpkgs";
|
||||
rust-overlay = {
|
||||
url = "github:oxalica/rust-overlay";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
};
|
||||
|
||||
outputs = {self, nixpkgs, flake-utils, rust-overlay}:
|
||||
flake-utils.lib.eachDefaultSystem (system:
|
||||
let
|
||||
overlays = [ (import rust-overlay) ];
|
||||
pkgs = import nixpkgs {
|
||||
inherit system overlays;
|
||||
};
|
||||
outputs =
|
||||
inputs@{ flake-parts, ... }:
|
||||
flake-parts.lib.mkFlake { inherit inputs; } {
|
||||
systems = [
|
||||
"x86_64-linux"
|
||||
"aarch64-linux"
|
||||
];
|
||||
|
||||
buildEnvVars = {
|
||||
BIN_XDG_PERMISSION_STORE = "${pkgs.xdg-desktop-portal}/libexec/xdg-permission-store";
|
||||
BIN_XDG_DOCUMENT_PORTAL = "${pkgs.xdg-desktop-portal}/libexec/xdg-document-portal";
|
||||
BIN_VIRTIOFSD = "${pkgs.virtiofsd}/bin/virtiofsd";
|
||||
};
|
||||
perSystem =
|
||||
{
|
||||
pkgs,
|
||||
system,
|
||||
...
|
||||
}:
|
||||
let
|
||||
overlays = [ (import inputs.rust-overlay) ];
|
||||
pkgs' = import inputs.nixpkgs {
|
||||
inherit system overlays;
|
||||
};
|
||||
|
||||
rustToolchain = pkgs.pkgsBuildHost.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
rustPlatform = pkgs.makeRustPlatform {
|
||||
cargo = rustToolchain;
|
||||
rustc = rustToolchain;
|
||||
};
|
||||
rustPackage = crate:
|
||||
let cargoToml = builtins.fromTOML (builtins.readFile ./${crate}/Cargo.toml);
|
||||
in rustPlatform.buildRustPackage {
|
||||
inherit (cargoToml.package) name version;
|
||||
src = ./.;
|
||||
cargoLock.lockFile = ./Cargo.lock;
|
||||
cargoLock.outputHashes = {
|
||||
"zbus-5.9.0" = "sha256-uaHPHdmDWYy0jeKPd0/eCUupID2tswGHmEmscp6fCII=";
|
||||
"busd-0.4.0" = "sha256-hIvjt3v6AYc7URLFknXTmSc+NdxOlN/2RGXVsuoNgA4=";
|
||||
buildEnvVars = {
|
||||
BIN_XDG_PERMISSION_STORE = "${pkgs.xdg-desktop-portal}/libexec/xdg-permission-store";
|
||||
BIN_XDG_DOCUMENT_PORTAL = "${pkgs.xdg-desktop-portal}/libexec/xdg-document-portal";
|
||||
BIN_VIRTIOFSD = "${pkgs.virtiofsd}/bin/virtiofsd";
|
||||
};
|
||||
|
||||
rustToolchain = pkgs'.pkgsBuildHost.rust-bin.fromRustupToolchainFile ./rust-toolchain.toml;
|
||||
rustPlatform = pkgs'.makeRustPlatform {
|
||||
cargo = rustToolchain;
|
||||
rustc = rustToolchain;
|
||||
};
|
||||
|
||||
rustPackage =
|
||||
crate:
|
||||
let
|
||||
cargoToml = builtins.fromTOML (builtins.readFile ./${crate}/Cargo.toml);
|
||||
in
|
||||
rustPlatform.buildRustPackage {
|
||||
inherit (cargoToml.package) name version;
|
||||
src = ./.;
|
||||
cargoLock.lockFile = ./Cargo.lock;
|
||||
cargoLock.outputHashes = {
|
||||
"zbus-5.9.0" = "sha256-uaHPHdmDWYy0jeKPd0/eCUupID2tswGHmEmscp6fCII=";
|
||||
"busd-0.4.0" = "sha256-hIvjt3v6AYc7URLFknXTmSc+NdxOlN/2RGXVsuoNgA4=";
|
||||
};
|
||||
buildAndTestSubdir = crate;
|
||||
env = buildEnvVars;
|
||||
};
|
||||
buildAndTestSubdir = crate;
|
||||
in
|
||||
{
|
||||
devShells.default = pkgs'.mkShell {
|
||||
buildInputs = [ rustToolchain ];
|
||||
env = buildEnvVars;
|
||||
};
|
||||
in
|
||||
{
|
||||
devShells.default = pkgs.mkShell {
|
||||
buildInputs = [ rustToolchain ];
|
||||
env = buildEnvVars;
|
||||
|
||||
packages.sidebus-agent = rustPackage "sidebus-agent";
|
||||
packages.sidebus-broker = rustPackage "sidebus-broker";
|
||||
};
|
||||
|
||||
packages.sidebus-agent = rustPackage "sidebus-agent";
|
||||
packages.sidebus-broker = rustPackage "sidebus-broker";
|
||||
|
||||
nixosModules.sidebus-vm = { ... }: {
|
||||
environment.sessionVariables.DBUS_SESSION_BUS_ADDRESS = "unix:path=/run/sidebus.sock";
|
||||
systemd.sockets.sidebus-agent = {
|
||||
# SocketMode= is 0666 by default
|
||||
listenStreams = [ "/run/sidebus.sock" ];
|
||||
wantedBy = [ "sockets.target" ];
|
||||
documentation = [ "https://git.clan.lol/valpackett/sidebus" ];
|
||||
};
|
||||
systemd.services.sidebus-agent = {
|
||||
# TODO: confinement (can do a lot)
|
||||
serviceConfig = {
|
||||
ExecStart = "${rustPackage "sidebus-agent"}/bin/sidebus-agent";
|
||||
ImportCredential = "sidebus.*";
|
||||
flake = {
|
||||
nixosModules.sidebus-vm =
|
||||
{ ... }:
|
||||
{
|
||||
environment.sessionVariables.DBUS_SESSION_BUS_ADDRESS = "unix:path=/run/sidebus.sock";
|
||||
systemd.sockets.sidebus-agent = {
|
||||
# SocketMode= is 0666 by default
|
||||
listenStreams = [ "/run/sidebus.sock" ];
|
||||
wantedBy = [ "sockets.target" ];
|
||||
documentation = [ "https://git.clan.lol/valpackett/sidebus" ];
|
||||
};
|
||||
documentation = [ "https://git.clan.lol/valpackett/sidebus" ];
|
||||
systemd.services.sidebus-agent = {
|
||||
# TODO: confinement (can do a lot)
|
||||
serviceConfig = {
|
||||
ExecStart = throw "sidebus-vm module requires setting systemd.services.sidebus-agent.serviceConfig.ExecStart to a sidebus-agent package";
|
||||
ImportCredential = "sidebus.*";
|
||||
};
|
||||
documentation = [ "https://git.clan.lol/valpackett/sidebus" ];
|
||||
};
|
||||
systemd.mounts = [
|
||||
{
|
||||
type = "virtiofs";
|
||||
what = "vm-doc-portal";
|
||||
where = "/run/vm-doc-portal";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
systemd.mounts = [
|
||||
{
|
||||
type = "virtiofs";
|
||||
what = "vm-doc-portal";
|
||||
where = "/run/vm-doc-portal";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue