add flake
This commit is contained in:
16
.devcontainer/devcontainer.json
Normal file
16
.devcontainer/devcontainer.json
Normal file
@@ -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"
|
||||
}
|
||||
89
flake.nix
Normal file
89
flake.nix
Normal file
@@ -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
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user