mirror of
https://github.com/daylinmorgan/oizys.git
synced 2025-01-14 09:57:33 -06:00
Compare commits
12 commits
b9e0ed6fe5
...
5b04c0519e
Author | SHA1 | Date | |
---|---|---|---|
|
5b04c0519e | ||
360cb79ea1 | |||
3547ecd3c5 | |||
a403d14110 | |||
3c29db51ed | |||
3bed7b455b | |||
2e630e6d6c | |||
461c7c393a | |||
5c0e1cb3ac | |||
2c278b0501 | |||
e46eaa3bf8 | |||
f2d03f976c |
17 changed files with 358 additions and 69 deletions
|
@ -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>Vultr VPS hosting forgejo,soft-serve & gts</td>
|
<td>Hetzner Cloud 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>
|
||||||
|
|
140
flake.lock
140
flake.lock
|
@ -39,7 +39,7 @@
|
||||||
},
|
},
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems_3"
|
"systems": "systems_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710146030,
|
"lastModified": 1710146030,
|
||||||
|
@ -55,9 +55,30 @@
|
||||||
"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"
|
||||||
|
@ -68,11 +89,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711035742,
|
"lastModified": 1712339458,
|
||||||
"narHash": "sha256-5vvhCSUGG9TA2G1eIRgokuYizhRnZu0ZbcU1MXfHsUE=",
|
"narHash": "sha256-j8pv3tL2EFLGuvFoO64dHWD8YzNvD77hRb4EEx5ADgE=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprcursor",
|
"repo": "hyprcursor",
|
||||||
"rev": "6a92473237f430399a417e1c2da9d7fcd4970086",
|
"rev": "981b6617822dadc40246a6c70194d02dfc12e4c6",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -85,20 +106,20 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"hyprcursor": "hyprcursor",
|
"hyprcursor": "hyprcursor",
|
||||||
"hyprland-protocols": "hyprland-protocols",
|
"hyprland-protocols": "hyprland-protocols",
|
||||||
"hyprlang": "hyprlang_2",
|
"hyprlang": "hyprlang",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_2",
|
"systems": "systems",
|
||||||
"wlroots": "wlroots",
|
"wlroots": "wlroots",
|
||||||
"xdph": "xdph"
|
"xdph": "xdph"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711460334,
|
"lastModified": 1712448441,
|
||||||
"narHash": "sha256-YUnZ+qy4ScRIWpb4/ejSv0fHewIGNHnVSLp0FN6elyY=",
|
"narHash": "sha256-dQ+5CYpy/dbpX0hvIFBYF/FDjWal4wAYpTHfUzGoDRg=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "Hyprland",
|
"repo": "Hyprland",
|
||||||
"rev": "9b7ae25ae83b5b0d6f61fe542391301a57d31270",
|
"rev": "9f1604e4b0afec40cfa9bc095d6613a7f749b2c1",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -154,29 +175,6 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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",
|
||||||
|
@ -188,11 +186,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1710960526,
|
"lastModified": 1711671891,
|
||||||
"narHash": "sha256-tt0UgVKWeLQ+tFzvqrm4uAZbzONwdGshpfiLHAQ1P2c=",
|
"narHash": "sha256-C/Wwsy/RLxHP1axFFl+AnwJRWfd8gxDKKoa8nt8Qk3c=",
|
||||||
"owner": "hyprwm",
|
"owner": "hyprwm",
|
||||||
"repo": "hyprlang",
|
"repo": "hyprlang",
|
||||||
"rev": "a2f39421144d42541c057be235154ce21b76c0f6",
|
"rev": "c1402612146ba06606ebf64963a02bc1efe11e74",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -207,11 +205,11 @@
|
||||||
"nixpkgs-lib": "nixpkgs-lib"
|
"nixpkgs-lib": "nixpkgs-lib"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711282133,
|
"lastModified": 1711886936,
|
||||||
"narHash": "sha256-s6z371miAZonduv53LQzjthvNCs4R+oTbv9cRu+iyL8=",
|
"narHash": "sha256-D2WENp9GuaCostvNcQ7vElekk0V5cuMdnFZ7NfRhVrQ=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "lib-aggregate",
|
"repo": "lib-aggregate",
|
||||||
"rev": "120535dff702c551ec76a125a181d90131407264",
|
"rev": "9c06929b83e57c18d125f1105ba6a423f24083d2",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -270,11 +268,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711249705,
|
"lastModified": 1711854532,
|
||||||
"narHash": "sha256-h/NQECj6mIzF4XR6AQoSpkCnwqAM+ol4+qOdYi2ykmQ=",
|
"narHash": "sha256-JPStavwlT7TfxxiXHk6Q7sbNxtnXAIjXQJMLO0KB6M0=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nix-index-database",
|
"repo": "nix-index-database",
|
||||||
"rev": "34519f3bb678a5abbddf7b200ac5347263ee781b",
|
"rev": "2844b5f3ad3b478468151bd101370b9d8ef8a3a7",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -285,11 +283,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711370797,
|
"lastModified": 1712420723,
|
||||||
"narHash": "sha256-2xu0jVSjuKhN97dqc4bVtvEH52Rwh6+uyI1XCnzoUyI=",
|
"narHash": "sha256-VnG0Eu394Ga2FCe8Q66m6OEQF8iAqjDYsjmtl+N2omk=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "c726225724e681b3626acc941c6f95d2b0602087",
|
"rev": "9e7f26f82acb057498335362905fde6fea4ca50a",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -301,11 +299,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-lib": {
|
"nixpkgs-lib": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711241261,
|
"lastModified": 1711846064,
|
||||||
"narHash": "sha256-knrTvpl81yGFHIpm1SsLDApe0thFkw1cl3ISAMPmP/0=",
|
"narHash": "sha256-cqfX0QJNEnge3a77VnytM0Q6QZZ0DziFXt6tSCV8ZSc=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs.lib",
|
"repo": "nixpkgs.lib",
|
||||||
"rev": "b2a1eeef8c185f6bd27432b053ff09d773244cbc",
|
"rev": "90b1a963ff84dc532db92f678296ff2499a60a87",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -324,11 +322,11 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1711451641,
|
"lastModified": 1712439754,
|
||||||
"narHash": "sha256-PK29HGNEu/5m0j8WW1W7yNvd0QumauTtzmPHLR2mnUo=",
|
"narHash": "sha256-2wRTYlTnkk35ChwnULdl3GomhgEO9PYCWxvm3Ozrj0w=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "nixpkgs-wayland",
|
"repo": "nixpkgs-wayland",
|
||||||
"rev": "771508700b2666436887b9404aad9c1ec99a9a1a",
|
"rev": "b4c308244d66a3737e3e56f22c9ee69a0fe17665",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -382,16 +380,17 @@
|
||||||
"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": 1711124224,
|
"lastModified": 1712310679,
|
||||||
"narHash": "sha256-l0zlN/3CiodvWDtfBOVxeTwYSRz93muVbXWSpaMjXxM=",
|
"narHash": "sha256-XgC/a/giEeNkhme/AV1ToipoZ/IVm1MV2ntiK4Tm+pw=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "56528ee42526794d413d6f244648aaee4a7b56c0",
|
"rev": "72da83d9515b43550436891f538ff41d68eecc7f",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -418,16 +417,16 @@
|
||||||
},
|
},
|
||||||
"systems_2": {
|
"systems_2": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347949,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default-linux",
|
"repo": "default",
|
||||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default-linux",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -541,6 +540,27 @@
|
||||||
"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",
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
|
|
||||||
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 = {
|
||||||
|
|
|
@ -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 nixpkgs.legacyPackages.${system});
|
forAllSystems = f: genAttrs supportedSystems (system: f (import nixpkgs {inherit system;}));
|
||||||
|
|
||||||
nixosModules = listToAttrs (findModulesList ../modules);
|
nixosModules = listToAttrs (findModulesList ../modules);
|
||||||
|
|
||||||
|
@ -32,9 +32,10 @@ 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 = pkgs.callPackage ../pkgs/oizys/oizys-rs {};
|
oizys-rs = pkgs.callPackage ../pkgs/oizys/oizys-rs {};
|
||||||
default = oizys;
|
default = oizys-zig;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
|
|
|
@ -16,8 +16,15 @@ 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";
|
||||||
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
inputs,
|
||||||
config,
|
config,
|
||||||
lib,
|
lib,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
@ -6,11 +7,14 @@
|
||||||
}: 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
|
[
|
||||||
rustup
|
go
|
||||||
];
|
rustup
|
||||||
|
]
|
||||||
|
++ [zig];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
nil
|
nil
|
||||||
alejandra
|
alejandra
|
||||||
|
|
||||||
self.packages.${pkgs.system}.oizys
|
self.packages.${pkgs.system}.default
|
||||||
inputs.pinix.packages.${pkgs.system}.default
|
inputs.pinix.packages.${pkgs.system}.default
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ mkOizysModule config "chrome" {
|
||||||
"oemmndcbldboiebfnladdacbdfmadadm" # pdf viewer
|
"oemmndcbldboiebfnladdacbdfmadadm" # pdf viewer
|
||||||
"clngdbkpkpeebahjckkjfobafhncgmne" # stylus
|
"clngdbkpkpeebahjckkjfobafhncgmne" # stylus
|
||||||
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin
|
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin
|
||||||
|
"ekhagklcjbdpajgpjgmbionohlpdbjgc" # zotero connector
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{
|
{
|
||||||
installShellFiles,
|
installShellFiles,
|
||||||
rustPlatform,
|
rustPlatform,
|
||||||
|
nix-output-monitor,
|
||||||
}:
|
}:
|
||||||
rustPlatform.buildRustPackage {
|
rustPlatform.buildRustPackage {
|
||||||
pname = "oizys";
|
pname = "oizys";
|
||||||
|
@ -11,6 +12,7 @@ rustPlatform.buildRustPackage {
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [installShellFiles];
|
nativeBuildInputs = [installShellFiles];
|
||||||
|
buildInputs = [nix-output-monitor];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
installShellCompletion --cmd oizys \
|
installShellCompletion --cmd oizys \
|
||||||
|
|
13
pkgs/oizys/oizys-zig/.gitignore
vendored
Normal file
13
pkgs/oizys/oizys-zig/.gitignore
vendored
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
# 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
|
36
pkgs/oizys/oizys-zig/build.zig
Normal file
36
pkgs/oizys/oizys-zig/build.zig
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
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);
|
||||||
|
//
|
||||||
|
}
|
11
pkgs/oizys/oizys-zig/build.zig.zon
Normal file
11
pkgs/oizys/oizys-zig/build.zig.zon
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
.{
|
||||||
|
.name = "oizys-zig",
|
||||||
|
.version = "0.0.0",
|
||||||
|
.dependencies = .{
|
||||||
|
.yazap = .{
|
||||||
|
.url = "git+https://github.com/prajwalch/yazap.git#341750ff62e3102da4a7f8233920aebace1fc337",
|
||||||
|
.hash = "1220fa71798c994044a987cbde6e73af76bfc402117a61971ccf48f4af4b7154e8d3",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
.paths = .{""},
|
||||||
|
}
|
7
pkgs/oizys/oizys-zig/build.zig.zon2json-lock
Normal file
7
pkgs/oizys/oizys-zig/build.zig.zon2json-lock
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"1220fa71798c994044a987cbde6e73af76bfc402117a61971ccf48f4af4b7154e8d3": {
|
||||||
|
"name": "yazap",
|
||||||
|
"url": "git+https://github.com/prajwalch/yazap.git#341750ff62e3102da4a7f8233920aebace1fc337",
|
||||||
|
"hash": "sha256-nNhFpay+xk0Ix3GAT1fZ2q/bD9AAx7Xkl4X7QxlzK0M="
|
||||||
|
}
|
||||||
|
}
|
13
pkgs/oizys/oizys-zig/default.nix
Normal file
13
pkgs/oizys/oizys-zig/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
zig2nix,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
(zig2nix.outputs.zig-env.${pkgs.system} {
|
||||||
|
zig = zig2nix.outputs.packages.${pkgs.system}.zig.master.bin;
|
||||||
|
})
|
||||||
|
.package {
|
||||||
|
name = "oizys";
|
||||||
|
src = lib.cleanSource ./.;
|
||||||
|
}
|
35
pkgs/oizys/oizys-zig/src/Cli.zig
Normal file
35
pkgs/oizys/oizys-zig/src/Cli.zig
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
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();
|
||||||
|
}
|
114
pkgs/oizys/oizys-zig/src/Oizys.zig
Normal file
114
pkgs/oizys/oizys-zig/src/Oizys.zig
Normal file
|
@ -0,0 +1,114 @@
|
||||||
|
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();
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
22
pkgs/oizys/oizys-zig/src/main.zig
Normal file
22
pkgs/oizys/oizys-zig/src/main.zig
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
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();
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in a new issue