95 lines
2.2 KiB
Nix
95 lines
2.2 KiB
Nix
{
|
|
description = "A very basic flake";
|
|
|
|
inputs = {
|
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.05";
|
|
|
|
flake-utils.url = "github:numtide/flake-utils";
|
|
|
|
attic.url = "github:zhaofengli/attic";
|
|
};
|
|
|
|
outputs = { self, nixpkgs, flake-utils, attic }: flake-utils.lib.eachDefaultSystem (system:
|
|
let
|
|
pkgs = import nixpkgs {
|
|
inherit system;
|
|
overlays = [
|
|
attic.overlays.default
|
|
];
|
|
};
|
|
|
|
gitReallyMinimal = (
|
|
pkgs.git.override {
|
|
perlSupport = false;
|
|
pythonSupport = false;
|
|
withManual = false;
|
|
withpcre2 = false;
|
|
}
|
|
).overrideAttrs (
|
|
_: {
|
|
# installCheck is broken when perl is disabled
|
|
doInstallCheck = false;
|
|
}
|
|
);
|
|
in
|
|
{
|
|
packages.default = pkgs.dockerTools.buildImageWithNixDb {
|
|
name = "docker-attic-nix";
|
|
tag = "latest";
|
|
|
|
copyToRoot = [
|
|
./root
|
|
|
|
gitReallyMinimal
|
|
|
|
(pkgs.writeTextFile {
|
|
name = "nix.conf";
|
|
destination = "/etc/nix/nix.conf";
|
|
text = ''
|
|
accept-flake-config = true
|
|
experimental-features = nix-command flakes
|
|
'';
|
|
})
|
|
] ++ (builtins.attrValues {
|
|
inherit (pkgs)
|
|
coreutils
|
|
bashInteractive
|
|
nix
|
|
cacert
|
|
gnutar
|
|
gzip
|
|
openssh
|
|
xz
|
|
nodejs
|
|
iana-etc
|
|
attic-client;
|
|
});
|
|
|
|
extraCommands = ''
|
|
# for /usr/bin/env
|
|
mkdir usr
|
|
ln -s ../bin usr/bin
|
|
|
|
# make sure /tmp exists
|
|
mkdir -m 1777 tmp
|
|
|
|
# need a HOME
|
|
mkdir -vp root
|
|
'';
|
|
|
|
config = {
|
|
Cmd = [ "/bin/bash" ];
|
|
Env = [
|
|
"ENV=/etc/profile.d/nix.sh"
|
|
"BASH_ENV=/etc/profile.d/nix.sh"
|
|
"NIX_BUILD_SHELL=/bin/bash"
|
|
"NIX_PATH=nixpkgs=${./fake_nixpkgs}"
|
|
"PAGER=cat"
|
|
"PATH=/root/.nix-profile/bin:/nix/var/nix/profiles/per-user/root/profile/bin:/usr/bin:/bin"
|
|
"SSL_CERT_FILE=${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"
|
|
"USER=root"
|
|
];
|
|
};
|
|
};
|
|
});
|
|
}
|