Add SD image to flake

This commit is contained in:
Daniel Lovbrotte Olsen 2022-08-28 09:39:07 +02:00
parent c450c6710b
commit 39747e544b
4 changed files with 103 additions and 8 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
result/ result
result-*/ result-*

31
README.MD Normal file
View File

@ -0,0 +1,31 @@
# Dibbler
EDB-system for PVVVV
## Nix
### Hvordan kjøre
`nix run github:Prograrmvarverkstedet/dibbler`
### Bygge nytt image
For å bygge et image trenger du en builder som takler å bygge for arkitekturen du skal lage et image for.
(Eller be til gudene om at cross compile funker)
Flaket exposer en modul som autologger inn med en bruker som automatisk kjører dibbler, og setter opp et minimalistisk miljø.
Før du bygger imaget burde du endre conf.py lokalt til å inneholde instillingene dine. **NB: Denne kommer til å ligge i nix storen.**
Du kan også endre hvilken conf.py som blir brukt direkte i pakken eller i modulen.
Se eksempelet for hvordan skrot er satt opp i flake.nix
### Bygge image for skrot
Skrot har et image definert i flake.nix:
1. endre conf.py
2. `nix build .#images.skrot`
3. ???
4. non-profit

View File

@ -1 +0,0 @@
Dibbler, EDB-system for PVVVV

View File

@ -4,12 +4,22 @@
inputs.flake-utils.url = "github:numtide/flake-utils"; inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }: outputs = { self, nixpkgs, flake-utils }:
flake-utils.lib.eachDefaultSystem (system:
let pkgs = nixpkgs.legacyPackages.${system}; in
{ {
overlays.default = final: prev: {
dibbler = prev.callPackage ./nix/dibbler.nix { };
};
} //
flake-utils.lib.eachDefaultSystem (system:
let
pkgs = import nixpkgs {
inherit system;
overlays = [ self.overlays.default ];
};
in {
packages = rec { packages = rec {
dibbler = pkgs.callPackage ./nix/dibbler.nix { }; dibbler = pkgs.dibbler;
# dibblerCross = pkgs.pkgsCross.aarch64-multiplatform.callPackage ./nix/dibbler.nix { }; # dibblerCross = pkgs.pkgsCross.aarch64-multiplatform.dibbler;
default = dibbler; default = dibbler;
}; };
apps = rec { apps = rec {
@ -19,5 +29,60 @@
default = dibbler; default = dibbler;
}; };
} }
); ) //
{
nixosModules.default = { config, pkgs, ... }: let
inherit (nixpkgs.legacyPackages."x86_64-linux") lib;
cfg = config.services.dibbler;
in {
options.services.dibbler = {
package = lib.mkPackageOption pkgs "dibbler" { };
config = lib.mkOption {
default = ./conf.py;
};
};
config = {
nixpkgs.overlays = [ self.overlays.default ];
users.users.dibbler = {
group = "dibbler";
isNormalUser = true;
shell = "${cfg.package.override { conf = cfg.config; }}/bin/dibbler";
};
users.groups.dibbler = { };
services.getty.autologinUser = lib.mkForce "dibbler";
i18n.supportedLocales = ["en_US.UTF-8/UTF-8"];
documentation.info.enable = false;
documentation.man.enable = false;
programs.command-not-found.enable = false;
security.polkit.enable = lib.mkForce false;
security.audit.enable = false;
services.udisks2.enable = false;
boot.enableContainers = false;
boot.loader.grub.enable = false;
environment.noXlibs = true;
};
};
} //
{
nixosConfigurations.skrot = nixpkgs.lib.nixosSystem {
system = "aarch64-linux";
modules = [
(nixpkgs + "/nixos/modules/installer/sd-card/sd-image-aarch64.nix")
self.nixosModules.default
({...}: {
system.stateVersion = "22.05";
networking = {
hostName = "skrot";
domain = "pvv.ntnu.no";
};
})
];
};
images.skrot = self.nixosConfigurations.skrot.config.system.build.sdImage;
};
} }