From 6c06cf9fd28d0df41cbb634645417b6a75f3d1e1 Mon Sep 17 00:00:00 2001 From: stubbfel Date: Mon, 17 Jun 2024 21:01:43 +0000 Subject: [PATCH] add flake --- .devcontainer/devcontainer.json | 16 ++++++ flake.nix | 89 +++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 .devcontainer/devcontainer.json create mode 100644 flake.nix diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..8b58a0c --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,16 @@ +{ + "name": "Alpine", + "image": "mcr.microsoft.com/devcontainers/base:alpine-3.20", + "postCreateCommand": "sudo apk add nix nix-dev nix-doc nix-manual nix-bash-completion && sudo chown -R vscode:vscode /nix && mkdir -p ~/.config/nix && echo 'experimental-features = nix-command flakes\n sandbox = false' > ~/.config/nix/nix.conf", + "customizations": { + "vscode": { + "extensions": [ + "bbenoist.Nix" + ] + } + }, + "runArgs": [ + "--userns=keep-id" + ], + "containerUser": "vscode" +} \ No newline at end of file diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a7ee86b --- /dev/null +++ b/flake.nix @@ -0,0 +1,89 @@ +{ + description = "A flake for build root"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let pkgs = nixpkgs.legacyPackages.${system}; in + { + packages = rec { + buildroot = pkgs.stdenv.mkDerivation rec { + name = "buildroot"; + version = "2024.02.3"; + src = pkgs.fetchzip { + url = "https://buildroot.org/downloads/buildroot-${version}.tar.gz"; + sha256 = "sha256-iG/6UHy0tz0YAUlkY93yH9NbVLaggBSJDBInWCw8S18="; + }; + phases = [ "unpackPhase" "installPhase" ]; + installPhase = '' + mkdir -p $out + cp -R . $out + ''; + }; + buildrootMakeCommand = pkgs.writeShellApplication { + name = "buildrootMakeCommand"; + + runtimeInputs = [ + pkgs.gnumake + pkgs.which + pkgs.pkg-config + pkgs.ncurses.dev + pkgs.rsync + pkgs.bc + pkgs.unzip + pkgs.cpio + pkgs.wget + pkgs.git + pkgs.subversion + pkgs.gnused + pkgs.perl + pkgs.flock + pkgs.bash + pkgs.gnugrep + pkgs.coreutils-full + pkgs.binutils + pkgs.gcc + pkgs.gnupatch + pkgs.gzip + pkgs.bzip2 + pkgs.gnutar + pkgs.cacert + pkgs.python3Full + pkgs.lzma + pkgs.gdbm + pkgs.readline + ]; + + text = '' + mkdir -p "$PWD/.buildroot" + BR2_DL_DIR="$PWD/.buildroot/dl" ${pkgs.gnumake}/bin/make O="$PWD/.buildroot" -C "${buildroot}" "$@" + ''; + }; + buildrootFHSEnv = (pkgs.buildFHSEnv { + name = "buildrootFHSEnv"; + targetPkgs = pkgs: ([ + pkgs.file + ]); + runScript = "${buildrootMakeCommand}/bin/buildrootMakeCommand"; + }); + default = buildrootFHSEnv; + }; + apps = rec { + buildrootMakeCommand = flake-utils.lib.mkApp { drv = self.packages.${system}.buildrootMakeCommand; }; + buildrootFHSEnv = flake-utils.lib.mkApp { drv = self.packages.${system}.buildrootFHSEnv; }; + default = buildrootFHSEnv; + }; + devShells = { + default = pkgs.mkShell { + buildInputs = [ + pkgs.nixpkgs-fmt + ]; + }; + }; + } + ); +}