diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6ba9cff --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.pre-commit-config.yaml +.direnv diff --git a/README.md b/README.md new file mode 100644 index 0000000..0797f59 --- /dev/null +++ b/README.md @@ -0,0 +1,29 @@ +[Installation](#installation) + +# 🍵 nixos-extra-modules + +This repository contains extra modules for nixos that are very opinionated and mainly +useful to me and my colleagues. + +## Installation + +To use the extra modules, you will have to add this project to your `flake.nix`, +and import the provided main NixOS module in your hosts. Afterwards the new options +will be available. + +```nix +{ + inputs.extra-modules.url = "github:oddlama/extra-modules"; + + outputs = { self, nixpkgs, agenix, agenix-rekey }: { + # Example system configuration + nixosConfigurations.yourhostname = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./configuration.nix + agenix.nixosModules.default + extra-modules.nixosModules.default + ]; + }; + } +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..b076c63 --- /dev/null +++ b/flake.lock @@ -0,0 +1,178 @@ +{ + "nodes": { + "devshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems" + }, + "locked": { + "lastModified": 1701787589, + "narHash": "sha256-ce+oQR4Zq9VOsLoh9bZT8Ip9PaMLcjjBUHVPzW5d7Cw=", + "owner": "numtide", + "repo": "devshell", + "rev": "44ddedcbcfc2d52a76b64fb6122f209881bd3e1e", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "devshell", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1673956053, + "narHash": "sha256-4gtG9iQuiKITOjNQQeQIpoIB6b16fm+504Ch3sNKLd8=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "35bb57c0c8d8b62bbfd284272c928ceb64ddbde9", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems_2" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1660459072, + "narHash": "sha256-8DFJjXG8zqoONA1vXtgeKXy68KdJL5UaXR8NtVMUbx8=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "a20de23b925fd8264fd7fad6454652e142fd7f73", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1703013332, + "narHash": "sha256-+tFNwMvlXLbJZXiMHqYq77z/RfmpfpiI3yjL6o/Zo9M=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "54aac082a4d9bb5bbc5c4e899603abfb76a3f6d6", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1685801374, + "narHash": "sha256-otaSUoFEMM+LjBI1XL/xGB5ao6IwnZOXc47qhIgJe8U=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "c37ca420157f4abc31e26f436c1145f8951ff373", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-23.05", + "repo": "nixpkgs", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "flake-utils": [ + "flake-utils" + ], + "gitignore": "gitignore", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable" + }, + "locked": { + "lastModified": 1702456155, + "narHash": "sha256-I2XhXGAecdGlqi6hPWYT83AQtMgL+aa3ulA85RAEgOk=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "007a45d064c1c32d04e1b8a0de5ef00984c419bc", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "devshell": "devshell", + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs", + "pre-commit-hooks": "pre-commit-hooks" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "systems_2": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..d3022ad --- /dev/null +++ b/flake.nix @@ -0,0 +1,70 @@ +{ + inputs = { + devshell = { + url = "github:numtide/devshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + flake-utils.url = "github:numtide/flake-utils"; + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + pre-commit-hooks = { + url = "github:cachix/pre-commit-hooks.nix"; + inputs.nixpkgs.follows = "nixpkgs"; + inputs.flake-utils.follows = "flake-utils"; + }; + }; + + description = "Extra modules that nobody needs."; + outputs = { + self, + nixpkgs, + flake-utils, + devshell, + pre-commit-hooks, + ... + }: + { + nixosModules.extra-modules = import ./modules nixpkgs; + nixosModules.default = self.nixosModules.extra-modules; + } + // flake-utils.lib.eachDefaultSystem (system: rec { + pkgs = import nixpkgs { + inherit system; + overlays = [ + devshell.overlays.default + ]; + }; + + # `nix flake check` + checks.pre-commit-hooks = pre-commit-hooks.lib.${system}.run { + src = nixpkgs.lib.cleanSource ./.; + hooks = { + alejandra.enable = true; + deadnix.enable = true; + statix.enable = true; + }; + }; + + # `nix develop` + devShells.default = pkgs.devshell.mkShell { + name = "extra-modules"; + commands = with pkgs; [ + { + package = alejandra; + help = "Format nix code"; + } + { + package = statix; + help = "Lint nix code"; + } + { + package = deadnix; + help = "Find unused expressions in nix code"; + } + ]; + + devshell.startup.pre-commit.text = self.checks.${system}.pre-commit-hooks.shellHook; + }; + }); +} diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1 @@ +{} diff --git a/statix.toml b/statix.toml new file mode 100644 index 0000000..31a2a5b --- /dev/null +++ b/statix.toml @@ -0,0 +1,3 @@ +disabled = [ + "repeated_keys" +]