Compare commits

..

1 commit

Author SHA1 Message Date
github-actions[bot]
b9e0ed6fe5 flake.lock: Update
Flake lock file updates:

• Updated input 'hyprland':
    'github:hyprwm/Hyprland/9b7ae25ae83b5b0d6f61fe542391301a57d31270' (2024-03-26)
  → 'github:hyprwm/Hyprland/77f26997fd00aaec958463414269fa3d8f62bb63' (2024-03-30)
• Updated input 'hyprland/hyprcursor':
    'github:hyprwm/hyprcursor/6a92473237f430399a417e1c2da9d7fcd4970086' (2024-03-21)
  → 'github:hyprwm/hyprcursor/d3876f34779cc03ee51e4aafc0d00a4f187c7544' (2024-03-26)
• Updated input 'hyprland/hyprlang':
    'github:hyprwm/hyprlang/a2f39421144d42541c057be235154ce21b76c0f6' (2024-03-20)
  → 'github:hyprwm/hyprlang/b3e430f81f3364c5dd1a3cc9995706a4799eb3fa' (2024-03-24)
• Updated input 'nixpkgs':
    'github:nixos/nixpkgs/c726225724e681b3626acc941c6f95d2b0602087' (2024-03-25)
  → 'github:nixos/nixpkgs/807c549feabce7eddbf259dbdcec9e0600a0660d' (2024-03-29)
• Updated input 'nixpkgs-wayland':
    'github:nix-community/nixpkgs-wayland/771508700b2666436887b9404aad9c1ec99a9a1a' (2024-03-26)
  → 'github:nix-community/nixpkgs-wayland/11544449e6b696e209463aae094e736368eef757' (2024-03-30)
• Updated input 'stable':
    'github:nixos/nixpkgs/56528ee42526794d413d6f244648aaee4a7b56c0' (2024-03-22)
  → 'github:nixos/nixpkgs/219951b495fc2eac67b1456824cc1ec1fd2ee659' (2024-03-28)
2024-03-31 00:39:54 +00:00
17 changed files with 69 additions and 358 deletions

View file

@ -22,7 +22,7 @@ See below for the currently maintained hosts.
<tr> <tr>
<td><img src="https://upload.wikimedia.org/wikipedia/commons/d/df/Runic_letter_algiz.svg"></td> <td><img src="https://upload.wikimedia.org/wikipedia/commons/d/df/Runic_letter_algiz.svg"></td>
<td>algiz</td> <td>algiz</td>
<td>Hetzner Cloud hosting forgejo,soft-serve & gts</td> <td>Vultr VPS hosting forgejo,soft-serve & gts</td>
</tr> </tr>
<tr> <tr>
<td><img src="https://upload.wikimedia.org/wikipedia/commons/5/57/Runic_letter_mannaz.svg"></td> <td><img src="https://upload.wikimedia.org/wikipedia/commons/5/57/Runic_letter_mannaz.svg"></td>

View file

@ -39,7 +39,7 @@
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems_2" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1710146030,
@ -55,30 +55,9 @@
"type": "github" "type": "github"
} }
}, },
"flake-utils_2": {
"inputs": {
"systems": "systems_3"
},
"locked": {
"lastModified": 1705309234,
"narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "1ef2e671c3b0c19053962c07dbda38332dcebf26",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"hyprcursor": { "hyprcursor": {
"inputs": { "inputs": {
"hyprlang": [ "hyprlang": "hyprlang",
"hyprland",
"hyprlang"
],
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
"nixpkgs" "nixpkgs"
@ -89,11 +68,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1712339458, "lastModified": 1711466786,
"narHash": "sha256-j8pv3tL2EFLGuvFoO64dHWD8YzNvD77hRb4EEx5ADgE=", "narHash": "sha256-sArxGyUBiCA1in+q6t0QqT+ZJiZ1PyBp7cNPKLmREM0=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprcursor", "repo": "hyprcursor",
"rev": "981b6617822dadc40246a6c70194d02dfc12e4c6", "rev": "d3876f34779cc03ee51e4aafc0d00a4f187c7544",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -106,20 +85,20 @@
"inputs": { "inputs": {
"hyprcursor": "hyprcursor", "hyprcursor": "hyprcursor",
"hyprland-protocols": "hyprland-protocols", "hyprland-protocols": "hyprland-protocols",
"hyprlang": "hyprlang", "hyprlang": "hyprlang_2",
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
], ],
"systems": "systems", "systems": "systems_2",
"wlroots": "wlroots", "wlroots": "wlroots",
"xdph": "xdph" "xdph": "xdph"
}, },
"locked": { "locked": {
"lastModified": 1712448441, "lastModified": 1711818062,
"narHash": "sha256-dQ+5CYpy/dbpX0hvIFBYF/FDjWal4wAYpTHfUzGoDRg=", "narHash": "sha256-YjuzqScxPOQGLxO7eswX9WDFp2K+vBFUTd+4EKEnX1A=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "Hyprland", "repo": "Hyprland",
"rev": "9f1604e4b0afec40cfa9bc095d6613a7f749b2c1", "rev": "77f26997fd00aaec958463414269fa3d8f62bb63",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -175,6 +154,29 @@
} }
}, },
"hyprlang": { "hyprlang": {
"inputs": {
"nixpkgs": [
"hyprland",
"hyprcursor",
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1709914708,
"narHash": "sha256-bR4o3mynoTa1Wi4ZTjbnsZ6iqVcPGriXp56bZh5UFTk=",
"owner": "hyprwm",
"repo": "hyprlang",
"rev": "a685493fdbeec01ca8ccdf1f3655c044a8ce2fe2",
"type": "github"
},
"original": {
"owner": "hyprwm",
"repo": "hyprlang",
"type": "github"
}
},
"hyprlang_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"hyprland", "hyprland",
@ -186,11 +188,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1711671891, "lastModified": 1711250455,
"narHash": "sha256-C/Wwsy/RLxHP1axFFl+AnwJRWfd8gxDKKoa8nt8Qk3c=", "narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=",
"owner": "hyprwm", "owner": "hyprwm",
"repo": "hyprlang", "repo": "hyprlang",
"rev": "c1402612146ba06606ebf64963a02bc1efe11e74", "rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -205,11 +207,11 @@
"nixpkgs-lib": "nixpkgs-lib" "nixpkgs-lib": "nixpkgs-lib"
}, },
"locked": { "locked": {
"lastModified": 1711886936, "lastModified": 1711282133,
"narHash": "sha256-D2WENp9GuaCostvNcQ7vElekk0V5cuMdnFZ7NfRhVrQ=", "narHash": "sha256-s6z371miAZonduv53LQzjthvNCs4R+oTbv9cRu+iyL8=",
"owner": "nix-community", "owner": "nix-community",
"repo": "lib-aggregate", "repo": "lib-aggregate",
"rev": "9c06929b83e57c18d125f1105ba6a423f24083d2", "rev": "120535dff702c551ec76a125a181d90131407264",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -268,11 +270,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1711854532, "lastModified": 1711249705,
"narHash": "sha256-JPStavwlT7TfxxiXHk6Q7sbNxtnXAIjXQJMLO0KB6M0=", "narHash": "sha256-h/NQECj6mIzF4XR6AQoSpkCnwqAM+ol4+qOdYi2ykmQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "2844b5f3ad3b478468151bd101370b9d8ef8a3a7", "rev": "34519f3bb678a5abbddf7b200ac5347263ee781b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -283,11 +285,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1712420723, "lastModified": 1711715736,
"narHash": "sha256-VnG0Eu394Ga2FCe8Q66m6OEQF8iAqjDYsjmtl+N2omk=", "narHash": "sha256-9slQ609YqT9bT/MNX9+5k5jltL9zgpn36DpFB7TkttM=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9e7f26f82acb057498335362905fde6fea4ca50a", "rev": "807c549feabce7eddbf259dbdcec9e0600a0660d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -299,11 +301,11 @@
}, },
"nixpkgs-lib": { "nixpkgs-lib": {
"locked": { "locked": {
"lastModified": 1711846064, "lastModified": 1711241261,
"narHash": "sha256-cqfX0QJNEnge3a77VnytM0Q6QZZ0DziFXt6tSCV8ZSc=", "narHash": "sha256-knrTvpl81yGFHIpm1SsLDApe0thFkw1cl3ISAMPmP/0=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs.lib", "repo": "nixpkgs.lib",
"rev": "90b1a963ff84dc532db92f678296ff2499a60a87", "rev": "b2a1eeef8c185f6bd27432b053ff09d773244cbc",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -322,11 +324,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1712439754, "lastModified": 1711786745,
"narHash": "sha256-2wRTYlTnkk35ChwnULdl3GomhgEO9PYCWxvm3Ozrj0w=", "narHash": "sha256-3vyZvKs35aVzOa+/vRenR/052aapmxRH4L3+wh+wG2E=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs-wayland", "repo": "nixpkgs-wayland",
"rev": "b4c308244d66a3737e3e56f22c9ee69a0fe17665", "rev": "11544449e6b696e209463aae094e736368eef757",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -380,17 +382,16 @@
"nixpkgs-wayland": "nixpkgs-wayland", "nixpkgs-wayland": "nixpkgs-wayland",
"pinix": "pinix", "pinix": "pinix",
"stable": "stable", "stable": "stable",
"tsm": "tsm", "tsm": "tsm"
"zig2nix": "zig2nix"
} }
}, },
"stable": { "stable": {
"locked": { "locked": {
"lastModified": 1712310679, "lastModified": 1711668574,
"narHash": "sha256-XgC/a/giEeNkhme/AV1ToipoZ/IVm1MV2ntiK4Tm+pw=", "narHash": "sha256-u1dfs0ASQIEr1icTVrsKwg2xToIpn7ZXxW3RHfHxshg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "72da83d9515b43550436891f538ff41d68eecc7f", "rev": "219951b495fc2eac67b1456824cc1ec1fd2ee659",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -417,16 +418,16 @@
}, },
"systems_2": { "systems_2": {
"locked": { "locked": {
"lastModified": 1681028828, "lastModified": 1689347949,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-systems", "owner": "nix-systems",
"repo": "default", "repo": "default-linux",
"type": "github" "type": "github"
} }
}, },
@ -540,27 +541,6 @@
"repo": "xdg-desktop-portal-hyprland", "repo": "xdg-desktop-portal-hyprland",
"type": "github" "type": "github"
} }
},
"zig2nix": {
"inputs": {
"flake-utils": "flake-utils_2",
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1712365704,
"narHash": "sha256-kihexAwySn5d5JItCwLeDgC7+TWpb+unjUJNSgqZ60A=",
"owner": "Cloudef",
"repo": "zig2nix",
"rev": "ea80980b813d67f52bb6eaa87fc1b9149259943d",
"type": "github"
},
"original": {
"owner": "Cloudef",
"repo": "zig2nix",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -22,9 +22,6 @@
nix-index-database.url = "github:nix-community/nix-index-database"; nix-index-database.url = "github:nix-community/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
zig2nix.url = "github:Cloudef/zig2nix";
zig2nix.inputs.nixpkgs.follows = "nixpkgs";
}; };
nixConfig = { nixConfig = {

View file

@ -10,7 +10,7 @@ inputs: let
#supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"]; #supportedSystems = ["x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin"];
supportedSystems = ["x86_64-linux"]; supportedSystems = ["x86_64-linux"];
in rec { in rec {
forAllSystems = f: genAttrs supportedSystems (system: f (import nixpkgs {inherit system;})); forAllSystems = f: genAttrs supportedSystems (system: f nixpkgs.legacyPackages.${system});
nixosModules = listToAttrs (findModulesList ../modules); nixosModules = listToAttrs (findModulesList ../modules);
@ -32,10 +32,9 @@ in rec {
oizysHosts = mapAttrs (name: _: mkSystem name) (readDir ../hosts); oizysHosts = mapAttrs (name: _: mkSystem name) (readDir ../hosts);
oizysPkg = forAllSystems ( oizysPkg = forAllSystems (
pkgs: rec { pkgs: rec {
oizys-zig = pkgs.callPackage ../pkgs/oizys/oizys-zig {zig2nix = inputs.zig2nix;};
oizys-nim = pkgs.callPackage ../pkgs/oizys/oizys-nim {}; oizys-nim = pkgs.callPackage ../pkgs/oizys/oizys-nim {};
oizys-rs = pkgs.callPackage ../pkgs/oizys/oizys-rs {}; oizys = pkgs.callPackage ../pkgs/oizys/oizys-rs {};
default = oizys-zig; default = oizys;
} }
); );
devShells = forAllSystems ( devShells = forAllSystems (

View file

@ -16,15 +16,8 @@ in {
inkscape inkscape
gimp gimp
zotero
libreoffice-qt libreoffice-qt
hunspell # spell check for libreoffice hunspell # spell check for libreoffice
(catppuccin-gtk.override {
accents = ["rosewater"];
variant = "mocha";
})
]; ];
}; };
} }

View file

@ -1,5 +1,4 @@
{ {
inputs,
config, config,
lib, lib,
pkgs, pkgs,
@ -7,14 +6,11 @@
}: let }: let
inherit (lib) mkIfIn; inherit (lib) mkIfIn;
cfg = config.oizys.languages; cfg = config.oizys.languages;
zig = inputs.zig2nix.outputs.packages.${pkgs.system}.zig.master.bin;
in { in {
config = mkIfIn "misc" cfg { config = mkIfIn "misc" cfg {
environment.systemPackages = with pkgs; environment.systemPackages = with pkgs; [
[ go
go rustup
rustup ];
]
++ [zig];
}; };
} }

View file

@ -25,7 +25,7 @@
nil nil
alejandra alejandra
self.packages.${pkgs.system}.default self.packages.${pkgs.system}.oizys
inputs.pinix.packages.${pkgs.system}.default inputs.pinix.packages.${pkgs.system}.default
]; ];

View file

@ -15,7 +15,6 @@ mkOizysModule config "chrome" {
"oemmndcbldboiebfnladdacbdfmadadm" # pdf viewer "oemmndcbldboiebfnladdacbdfmadadm" # pdf viewer
"clngdbkpkpeebahjckkjfobafhncgmne" # stylus "clngdbkpkpeebahjckkjfobafhncgmne" # stylus
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin
"ekhagklcjbdpajgpjgmbionohlpdbjgc" # zotero connector
]; ];
}; };

View file

@ -1,7 +1,6 @@
{ {
installShellFiles, installShellFiles,
rustPlatform, rustPlatform,
nix-output-monitor,
}: }:
rustPlatform.buildRustPackage { rustPlatform.buildRustPackage {
pname = "oizys"; pname = "oizys";
@ -12,7 +11,6 @@ rustPlatform.buildRustPackage {
}; };
nativeBuildInputs = [installShellFiles]; nativeBuildInputs = [installShellFiles];
buildInputs = [nix-output-monitor];
postInstall = '' postInstall = ''
installShellCompletion --cmd oizys \ installShellCompletion --cmd oizys \

View file

@ -1,13 +0,0 @@
# Created by https://www.toptal.com/developers/gitignore/api/zig
# Edit at https://www.toptal.com/developers/gitignore?templates=zig
### zig ###
# Zig programming language
zig-cache/
zig-out/
build/
build-*/
docgen_tmp/
# End of https://www.toptal.com/developers/gitignore/api/zig

View file

@ -1,36 +0,0 @@
const std = @import("std");
pub fn build(b: *std.Build) void {
// b.release_mode = .safe;
const target = b.standardTargetOptions(.{});
const optimize = b.standardOptimizeOption(.{});
const exe = b.addExecutable(.{
.name = "oizys",
.root_source_file = .{ .path = "src/main.zig" },
.target = target,
.optimize = optimize,
});
exe.root_module.addImport("yazap", b.dependency("yazap", .{ .target = target }).module("yazap"));
b.installArtifact(exe);
const run_cmd = b.addRunArtifact(exe);
run_cmd.step.dependOn(b.getInstallStep());
if (b.args) |args| {
run_cmd.addArgs(args);
}
const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step);
// I haven't written any...
// const exe_unit_tests = b.addTest(.{
// .root_source_file = .{ .path = "src/main.zig" },
// .target = target,
// .optimize = optimize,
// });
//
// const run_exe_unit_tests = b.addRunArtifact(exe_unit_tests);
// const test_step = b.step("test", "Run unit tests");
// test_step.dependOn(&run_exe_unit_tests.step);
//
}

View file

@ -1,11 +0,0 @@
.{
.name = "oizys-zig",
.version = "0.0.0",
.dependencies = .{
.yazap = .{
.url = "git+https://github.com/prajwalch/yazap.git#341750ff62e3102da4a7f8233920aebace1fc337",
.hash = "1220fa71798c994044a987cbde6e73af76bfc402117a61971ccf48f4af4b7154e8d3",
},
},
.paths = .{""},
}

View file

@ -1,7 +0,0 @@
{
"1220fa71798c994044a987cbde6e73af76bfc402117a61971ccf48f4af4b7154e8d3": {
"name": "yazap",
"url": "git+https://github.com/prajwalch/yazap.git#341750ff62e3102da4a7f8233920aebace1fc337",
"hash": "sha256-nNhFpay+xk0Ix3GAT1fZ2q/bD9AAx7Xkl4X7QxlzK0M="
}
}

View file

@ -1,13 +0,0 @@
{
pkgs,
zig2nix,
lib,
...
}:
(zig2nix.outputs.zig-env.${pkgs.system} {
zig = zig2nix.outputs.packages.${pkgs.system}.zig.master.bin;
})
.package {
name = "oizys";
src = lib.cleanSource ./.;
}

View file

@ -1,35 +0,0 @@
const Cli = @This();
const std = @import("std");
const yazap = @import("yazap");
const App = yazap.App;
const Arg = yazap.Arg;
const Allocator = std.mem.Allocator;
app: App,
pub fn init(allocator: Allocator) !Cli {
var app = App.init(allocator, "oizys", "nix begat oizys");
const oizys = app.rootCommand();
var cmd_dry = app.createCommand("dry", "poor man's nix flake check");
var cmd_build = app.createCommand("build", "build nixos (w/nix build)");
var cmd_cache = app.createCommand("cache", "build and push to cachix");
var cmd_output = app.createCommand("output", "show system flake output path");
var cmd_boot = app.createCommand("boot", "nixos rebuild boot");
var cmd_switch = app.createCommand("switch", "nixos rebuild switch");
const commands = .{ &cmd_dry, &cmd_build, &cmd_cache, &cmd_output, &cmd_switch, &cmd_boot };
try cmd_cache.addArg(Arg.singleValueOption("name", 'n', "name of cachix cache"));
inline for (commands) |subcmd| {
try subcmd.addArg(Arg.singleValueOption("flake", 'f', "path to flake"));
try subcmd.addArg(Arg.singleValueOption("host", null, "hostname (default: current host)"));
try subcmd.addArg(Arg.booleanOption("no-pinix", null, "don't use pinix"));
try oizys.addSubcommand(subcmd.*);
}
return Cli{ .app = app };
}
pub fn deinit(self: *Cli) void {
self.app.deinit();
}

View file

@ -1,114 +0,0 @@
const Oizys = @This();
const std = @import("std");
const ArgMatches = @import("yazap").ArgMatches;
const Allocator = std.mem.Allocator;
allocator: Allocator,
flake: []const u8,
host: []const u8,
cache_name: []const u8,
output: []const u8,
cmd: OizysCmd,
no_pinix: bool,
debug: bool = false,
pub const OizysCmd = enum {
dry,
@"switch",
boot,
cache,
output,
build,
};
pub fn init(allocator: std.mem.Allocator, matches: *const ArgMatches) !Oizys {
const cmd = matches.subcommand.?.name;
const flags = matches.subcommandMatches(cmd).?;
const host = flags.getSingleValue("host") orelse try Oizys.getDefaultHostName(allocator);
const flake = flags.getSingleValue("flake") orelse try Oizys.getDefaultFlake(allocator);
return Oizys{
.allocator = allocator,
.host = host,
.flake = flake,
.output = try std.fmt.allocPrint(allocator, "{s}#nixosConfigurations.{s}.config.system.build.toplevel", .{ flake, host }),
.cmd = std.meta.stringToEnum(OizysCmd, cmd).?,
.cache_name = flags.getSingleValue("cache") orelse "daylin",
.no_pinix = flags.containsArg("no-pinix"),
};
}
pub fn deinit(self: *Oizys) void {
self.allocator.free(self.flake);
self.allocator.free(self.host);
self.allocator.free(self.output);
}
pub fn nix(self: *Oizys) []const u8 {
return if (self.no_pinix) "nix" else "pix";
}
pub fn nixos_rebuild(self: *Oizys) []const u8 {
return if (self.no_pinix) "nixos-rebuild" else "pixos-rebuild";
}
pub fn getDefaultHostName(allocator: Allocator) ![]const u8 {
var name_buffer: [std.posix.HOST_NAME_MAX]u8 = undefined;
const hostname = try std.posix.gethostname(&name_buffer);
return std.fmt.allocPrint(allocator, "{s}", .{hostname});
}
pub fn getDefaultFlake(allocator: Allocator) ![]const u8 {
return std.process.getEnvVarOwned(allocator, "OIZYS_DIR") catch {
const homedir = try std.process.getEnvVarOwned(allocator, "HOME");
defer allocator.free(homedir);
return try std.fmt.allocPrint(allocator, "{s}/oizys", .{homedir});
};
}
pub fn getOutputPath(self: *Oizys) ![]const u8 {
return std.fmt.allocPrint(self.allocator, "{s}#nixosConfigurations.{s}.config.system.build.toplevel", .{ self.flake, self.host });
}
pub const NixCmd = enum { Nix, NixosRebuild };
pub fn runNixCmd(self: *Oizys, cmd: NixCmd, argv: []const []const u8) !void {
var args = std.ArrayList([]const u8).init(self.allocator);
defer args.deinit();
switch (cmd) {
NixCmd.Nix => try args.append(self.nix()),
NixCmd.NixosRebuild => try args.appendSlice(&.{ "sudo", self.nixos_rebuild() }),
}
try args.appendSlice(argv);
var p = std.ChildProcess.init(args.items, self.allocator);
_ = try p.spawnAndWait();
}
pub fn cache(self: *Oizys) !void {
var p = std.ChildProcess.init(&.{ "cachix", "watch-exec", self.cache_name, "--verbose", "--", "nix", "build", self.flake, "--print-build-logs", "--accept-flake-config" }, self.allocator);
_ = try p.spawnAndWait();
}
pub fn run(self: *Oizys) !void {
switch (self.cmd) {
.@"switch" => {
try self.runNixCmd(NixCmd.NixosRebuild, &.{ "switch", "--flake", self.flake });
},
.boot => {
try self.runNixCmd(NixCmd.NixosRebuild, &.{ "boot", "--flake", self.flake });
},
.dry => {
try self.runNixCmd(NixCmd.Nix, &.{ "build", self.output, "--dry-run" });
},
.build => {
try self.runNixCmd(NixCmd.Nix, &.{ "build", self.output });
},
.output => {
std.debug.print("{s}", .{self.output});
},
.cache => {
try self.cache();
},
}
}

View file

@ -1,22 +0,0 @@
const std = @import("std");
const Oizys = @import("Oizys.zig");
const Cli = @import("Cli.zig");
pub fn main() !void {
// memory management isn't hard :P
var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
defer arena.deinit();
const allocator = arena.allocator();
var cli = try Cli.init(allocator);
const matches = try cli.app.parseProcess();
if (!matches.containsArgs()) {
try cli.app.displayHelp();
return;
}
var oizys = try Oizys.init(allocator, matches);
try oizys.run();
}