feat(nix): create a flake (#1154)

turns out i use nixos now so this will make the development process
wayyyy easier for me

you can now build linutil for nix with `nix build`, enter the dev
environment with `nix develop`, and format nix code with `nix fmt`

and if some crazy person was to use linutil on nixos, now they can with
`nix run github:ChrisTitusTech/linutil` or by adding linutil to their
flake
This commit is contained in:
adam
2025-10-23 20:47:54 +02:00
committed by GitHub
parent a674cc1dbc
commit b6ca0dc45d
5 changed files with 111 additions and 0 deletions
+1
View File
@@ -1,5 +1,6 @@
/target /target
/build /build
/result
rust/target rust/target
rust/build rust/build
/build/linutil /build/linutil
Generated
+27
View File
@@ -0,0 +1,27 @@
{
"nodes": {
"nixpkgs": {
"locked": {
"lastModified": 1760284886,
"narHash": "sha256-TK9Kr0BYBQ/1P5kAsnNQhmWWKgmZXwUQr4ZMjCzWf2c=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "cf3f5c4def3c7b5f1fc012b3d839575dbe552d43",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"nixpkgs": "nixpkgs"
}
}
},
"root": "root",
"version": 7
}
+27
View File
@@ -0,0 +1,27 @@
{
description = "Distro-agnostic toolbox designed to simplify everyday Linux tasks";
inputs.nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
outputs =
{ self, nixpkgs }:
let
systems = [
"x86_64-linux"
"aarch64-linux"
];
forAllSystems = f: nixpkgs.lib.genAttrs systems (system: f nixpkgs.legacyPackages.${system});
in
{
packages = forAllSystems (pkgs: {
default = pkgs.callPackage ./nix/default.nix { };
});
devShells = forAllSystems (pkgs: {
default = pkgs.callPackage ./nix/shell.nix { inherit pkgs; };
});
formatter = forAllSystems (pkgs: pkgs.nixfmt-tree);
};
}
+25
View File
@@ -0,0 +1,25 @@
{
lib,
rustPlatform,
}:
let
p = (lib.importTOML ../Cargo.toml).workspace.package;
pTUI = (lib.importTOML ../tui/Cargo.toml).package;
in
rustPlatform.buildRustPackage {
pname = "linutil";
inherit (p) version;
src = ../.;
cargoLock.lockFile = ../Cargo.lock;
meta = {
inherit (pTUI) description;
homepage = pTUI.documentation;
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ adamperkowski ];
mainProgram = "linutil";
};
}
+31
View File
@@ -0,0 +1,31 @@
{ pkgs }:
let
mainPkg = if builtins.pathExists ./default.nix then pkgs.callPackage ./default.nix { } else { };
pkgInputs =
with pkgs;
[
clippy
rustfmt
rust-analyzer
bash-language-server
checkbashisms
shellcheck
typos
vhs
]
++ (mainPkg.nativeBuildInputs or [ ])
++ (mainPkg.buildInputs or [ ]);
in
pkgs.mkShell {
packages = pkgInputs;
shellHook = ''
echo -ne "-----------------------------------\n "
echo -n "${toString (map (pkg: " ${pkg.name}\n") pkgInputs)}"
echo "-----------------------------------"
'';
}