summaryrefslogtreecommitdiff
path: root/flake.nix
diff options
context:
space:
mode:
Diffstat (limited to 'flake.nix')
-rw-r--r--flake.nix242
1 files changed, 242 insertions, 0 deletions
diff --git a/flake.nix b/flake.nix
new file mode 100644
index 0000000..5f1ad07
--- /dev/null
+++ b/flake.nix
@@ -0,0 +1,242 @@
+{
+ description = "nixfiles";
+
+ # `flake.lock` generation is not computable[1], thus it is impossible to add
+ # helper functions to manage inputs.
+ #
+ # [1]: https://github.com/NixOS/nix/issues/5373
+ inputs = {
+ nixpkgs = {
+ type = "github";
+ owner = "NixOS";
+ repo = "nixpkgs";
+ ref = "nixpkgs-unstable";
+ };
+
+ nixpkgs-master = {
+ type = "github";
+ owner = "NixOS";
+ repo = "nixpkgs";
+ ref = "master";
+ };
+
+ nixpkgs-stable = {
+ type = "github";
+ owner = "NixOS";
+ repo = "nixpkgs";
+ ref = "release-22.05";
+ };
+
+ nixos-hardware = {
+ type = "github";
+ owner = "NixOS";
+ repo = "nixos-hardware";
+ ref = "master";
+ };
+
+ nur = {
+ type = "github";
+ owner = "nix-community";
+ repo = "NUR";
+ ref = "master";
+ };
+
+ home-manager = {
+ type = "github";
+ owner = "nix-community";
+ repo = "home-manager";
+ ref = "master";
+ inputs = {
+ nixpkgs.follows = "nixpkgs";
+ utils.follows = "flake-utils";
+ };
+ };
+
+ emacs-overlay = {
+ type = "github";
+ owner = "nix-community";
+ repo = "emacs-overlay";
+ ref = "master";
+ inputs = {
+ flake-utils.follows = "flake-utils";
+ nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ dns-nix = {
+ type = "github";
+ owner = "kirelagin";
+ repo = "dns.nix";
+ ref = "master";
+ inputs = {
+ flake-utils.follows = "flake-utils";
+ nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ simple-nixos-mailserver = {
+ type = "gitlab";
+ owner = "simple-nixos-mailserver";
+ repo = "nixos-mailserver";
+ ref = "master";
+ inputs = {
+ nixpkgs-22_05.follows = "nixpkgs-stable";
+ nixpkgs.follows = "nixpkgs";
+ utils.follows = "flake-utils";
+ };
+ };
+
+ alertmanager-gotify = {
+ type = "git";
+ url = "https://git.mbosch.me/ma27/alertmanager-gotify";
+ inputs = {
+ flake-utils.follows = "flake-utils";
+ nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ flake-utils = {
+ type = "github";
+ owner = "numtide";
+ repo = "flake-utils";
+ ref = "master";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ flake-registry = {
+ type = "github";
+ owner = "NixOS";
+ repo = "flake-registry";
+ ref = "master";
+ flake = false;
+ };
+
+ agenix = {
+ type = "github";
+ owner = "ryantm";
+ repo = "agenix";
+ ref = "main";
+ inputs.nixpkgs.follows = "nixpkgs";
+ };
+
+ pre-commit-hooks = {
+ type = "github";
+ owner = "cachix";
+ repo = "pre-commit-hooks.nix";
+ ref = "master";
+ inputs = {
+ flake-utils.follows = "flake-utils";
+ nixpkgs.follows = "nixpkgs";
+ };
+ };
+
+ xmonad-ng = {
+ type = "gitlab";
+ owner = "azahi";
+ repo = "xmonad-ng";
+ ref = "master";
+ # type = "path";
+ # path = "/home/azahi/src/xmonad-ng";
+ inputs = {
+ flake-utils.follows = "flake-utils";
+ nixpkgs.follows = "nixpkgs";
+ pre-commit-hooks.follows = "pre-commit-hooks";
+ };
+ };
+
+ azahi-cc = {
+ type = "gitlab";
+ owner = "azahi";
+ repo = "azahi.cc";
+ ref = "master";
+ flake = false;
+ };
+
+ nmap-vulners = {
+ type = "github";
+ owner = "vulnersCom";
+ repo = "nmap-vulners";
+ ref = "master";
+ flake = false;
+ };
+
+ nmap-vulscan = {
+ type = "github";
+ owner = "scipag";
+ repo = "vulscan";
+ ref = "master";
+ flake = false;
+ };
+ };
+
+ outputs = inputs:
+ with inputs; let
+ lib = nixpkgs.lib.extend (import ./lib);
+ in
+ flake-utils.lib.eachSystem ["x86_64-linux"]
+ (system: let
+ pkgs = import nixpkgs {
+ inherit system;
+ overlays = [self.overlays.default];
+ };
+ in {
+ packages.default = pkgs.nixfiles.override {
+ nixfilesSrc = ".";
+ };
+
+ apps.${system}.default = {
+ type = "app";
+ package = "${self.packages.${system}.nixfiles}/bin/nixfiles";
+ };
+
+ devShells.default = pkgs.mkShell {
+ inherit (self.checks.${system}.preCommit) shellHook;
+ packages = with pkgs; [
+ pyright
+ python310
+ rnix-lsp
+ ];
+ };
+
+ formatter = pkgs.alejandra;
+
+ checks.preCommit = pre-commit-hooks.lib.${system}.run {
+ src = ./.;
+ hooks = {
+ alejandra.enable = true;
+ black.enable = true;
+ flake8 = {
+ enable = true;
+ entry = "${pkgs.python310Packages.flake8}/bin/flake8";
+ types = ["file" "python"];
+ };
+ isort.enable = true;
+ prettier = {
+ enable = true;
+ types = [];
+ files = "\\.css";
+ };
+ shellcheck.enable = true;
+ shfmt.enable = true;
+ statix.enable = true;
+ };
+ };
+ })
+ // {
+ inherit lib;
+
+ nixosModules.nixfiles = import ./modules/nixfiles;
+
+ nixosConfigurations =
+ import ./configurations {inherit inputs lib;};
+
+ overlays.default = final: _: {
+ UltimMC = final.libsForQt5.callPackage ./packages/ultimmc.nix {};
+ bruh = final.callPackage ./packages/bruh.nix {};
+ mpv-autosub = final.callPackage ./packages/mpv-autosub.nix {};
+ myip = final.callPackage ./packages/myip.nix {};
+ nixfiles = final.callPackage ./packages/nixfiles.nix {};
+ throttled = final.callPackage ./packages/throttled.nix {};
+ };
+ };
+}