nix: initial tooling

Signed-off-by: NotAShelf <raf@notashelf.dev>
Change-Id: Ibc12bc627f65a4b1d3430bdf8b86db256a6a6964
This commit is contained in:
raf 2025-12-04 17:08:35 +03:00
commit 1189c4be94
Signed by: NotAShelf
GPG key ID: 29D95B64378DB4BF
4 changed files with 93 additions and 0 deletions

1
.envrc Normal file
View file

@ -0,0 +1 @@
use flake

27
flake.lock generated Normal file
View file

@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1763835633,
"narHash": "sha256-HzxeGVID5MChuCPESuC0dlQL1/scDKu+MmzoVBJxulM=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "050e09e091117c3d7328c7b2b7b577492c43c134",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}

24
flake.nix Normal file
View file

@ -0,0 +1,24 @@
{
inputs.nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable";
outputs = {
self,
nixpkgs,
...
}: let
systems = ["x86_64-linux" "aarch64-linux"];
forEachSystem = nixpkgs.lib.genAttrs systems;
pkgsForEach = nixpkgs.legacyPackages;
in {
packages = forEachSystem (system: {
sin = pkgsForEach.${system}.callPackage ./nix/package.nix {};
default = self.packages.${system}.sin;
});
devShells = forEachSystem (system: {
default = pkgsForEach.${system}.mkShell {
inputsFrom = [self.packages.${system}.default];
};
});
};
}

41
nix/package.nix Normal file
View file

@ -0,0 +1,41 @@
{
lib,
stdenv,
systemdSupport ? lib.meta.availableOn stdenv.hostPlatform systemd,
systemd,
}:
stdenv.mkDerivation {
pname = "sin";
version = "0.1.0";
src = let
fs = lib.fileset;
s = ../.;
in
fs.toSource {
root = s;
fileset = fs.unions [
(s + /Makefile)
(s + /main.c)
];
};
strictDeps = true;
buildInputs = lib.optionals systemdSupport [systemd];
installPhase = ''
runHook preInstall
mkdir -p $out/bin
install -Dm755 sin $out/bin/sin
runHook postInstall
'';
meta = {
description = "Keep system idle inhibited while named processes run";
license = lib.licenses.mit;
maintainers = [lib.maintainers.NotAShelf];
platforms = lib.platforms.linux;
};
}