From 5acf68fc3d40851691e19d9ac21b38a295be8d9f Mon Sep 17 00:00:00 2001 From: I-Al-Istannen Date: Mon, 6 May 2024 18:40:50 +0200 Subject: [PATCH] Add a flake.nix generating a docker image --- flake.lock | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..13716e3 --- /dev/null +++ b/flake.lock @@ -0,0 +1,48 @@ +{ + "nodes": { + "naersk": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1713520724, + "narHash": "sha256-CO8MmVDmqZX2FovL75pu5BvwhW+Vugc7Q6ze7Hj8heI=", + "owner": "nix-community", + "repo": "naersk", + "rev": "c5037590290c6c7dae2e42e7da1e247e54ed2d49", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1714906307, + "narHash": "sha256-UlRZtrCnhPFSJlDQE7M0eyhgvuuHBTe1eJ9N9AQlJQ0=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "25865a40d14b3f9cf19f19b924e2ab4069b09588", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "naersk": "naersk", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..53d8cec --- /dev/null +++ b/flake.nix @@ -0,0 +1,53 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + naersk = { + url = "github:nix-community/naersk"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, naersk }: + let + forAllSystems = nixpkgs.lib.genAttrs nixpkgs.lib.systems.flakeExposed; + in + rec { + packages = forAllSystems (system: + let + pkgs = import nixpkgs { inherit system; }; + naersk' = pkgs.callPackage naersk { }; + in + rec { + default = kit-timesheets; + kit-timesheets = naersk'.buildPackage { + root = ./.; + }; + docker = pkgs.dockerTools.buildLayeredImage { + name = "garmelon/kit-timesheets"; + tag = "latest"; + + contents = with pkgs; [ + # Makes debugging the container a bit more pleasant + busybox + # Fontconfig is needed so typst will find fonts (renders a blank + # document otherwise) + fontconfig + ]; + + config = { + Entrypoint = [ "${kit-timesheets}/bin/kit_timesheets" ]; + WorkingDir = "/tmp"; + Env = [ + # Fontconfig needs to be babysitted a bit in containers + "FONTCONFIG_FILE=${pkgs.fontconfig.out}/etc/fonts/fonts.conf" + "FONTCONFIG_PATH=${pkgs.fontconfig.out}/etc/fonts/" + # Useful for read-only containers, as fontconfig will create a + # cache there + "HOME=/tmp" + ]; + }; + }; + } + ); + }; +}