Skip to content

Commit

Permalink
add nix/nixos development enviroment and automation for easy maintenance
Browse files Browse the repository at this point in the history
  • Loading branch information
Eveeifyeve committed Jan 21, 2025
1 parent fe728a9 commit 6029160
Show file tree
Hide file tree
Showing 7 changed files with 234 additions and 0 deletions.
1 change: 1 addition & 0 deletions .envrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
use flake
24 changes: 24 additions & 0 deletions .github/workflows/nix-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Run nix checks on prs

on:
pull_request:
branches: [ "master", "rewrite/v3" ]

defaults:
run:
shell: bash

jobs:
check:
name: Check Nix
runs-on: ubuntu-latest
steps:
- name: Checkout codebase
uses: actions/checkout@v4
- name: Install nix
uses: cachix/install-nix-action@v27
with:
nix_path: nixpkgs=channel:nixos-unstable
extra_nix_config: "extra-experimental-features = nix-command flakes"
- name: Run flake check
run: nix flake check
22 changes: 22 additions & 0 deletions .github/workflows/update-nix.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: update-flake-lock
on:
workflow_dispatch: # allows manual triggering
schedule:
- cron: '0 0 * * 0' # runs weekly on Sunday at 00:00

permissions:
contents: write
pull-requests: write

jobs:
lockfile:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Update flake.lock
uses: DeterminateSystems/update-flake-lock@main
with:
pr-title: "Update flake.lock"
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,7 @@ config.toml
.etc/blocks.json

flame.svg

.direnv
result
result-*
96 changes: 96 additions & 0 deletions flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

75 changes: 75 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
flake-parts.url = "github:hercules-ci/flake-parts";
flake-compat = {
url = "github:edolstra/flake-compat";
flake = false;
};
rust-overlay = {
url = "github:oxalica/rust-overlay";
inputs.nixpkgs.follows = "nixpkgs";
};
};

outputs =
inputs@{
flake-parts,
nixpkgs,
rust-overlay,
...
}:
flake-parts.lib.mkFlake { inherit inputs; } {
systems = nixpkgs.lib.systems.flakeExposed;

perSystem =
{
pkgs,
system,
...
}:
{
formatter = nixpkgs.legacyPackages.${system}.nixfmt-rfc-style;
_module.args.pkgs = import inputs.nixpkgs {
inherit system;
overlays = [
rust-overlay.overlays.default
(self: super: {
rustToolchain = let rust = super.rust-bin;
in if builtins.pathExists ./rust-toolchain.toml then
rust.fromRustupToolchainFile ./rust-toolchain.toml
else if builtins.pathExists ./rust-toolchain then
rust.fromRustupToolchainFile ./rust-toolchain
else
rust.nightly.latest.default;
})
];
config = { };
};

# Used to check formatting for nix specificly
checks.fmt-check =
pkgs.runCommand "format-check"
{
src = ./.;
doCheck = true;
nativeBuildInputs = [
pkgs.nixfmt-rfc-style
];
}
''
nixfmt --check .
touch $out
'';

devShells.default = pkgs.mkShell {
packages = with pkgs; [
rustToolchain
pkg-config
openssl
];
};

};
};
}
12 changes: 12 additions & 0 deletions shell.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
(import (
let
lock = builtins.fromJSON (builtins.readFile ./flake.lock);
nodeName = lock.nodes.root.inputs.flake-compat;
in
fetchTarball {
url =
lock.nodes.${nodeName}.locked.url
or "https://github.com/edolstra/flake-compat/archive/${lock.nodes.${nodeName}.locked.rev}.tar.gz";
sha256 = lock.nodes.${nodeName}.locked.narHash;
}
) { src = ./.; }).shellNix

0 comments on commit 6029160

Please sign in to comment.