From 0c16900480bed05d968a4dac8cf647ee27110501 Mon Sep 17 00:00:00 2001 From: Jonas Rabenstein Date: Tue, 21 Jan 2025 16:52:47 +0100 Subject: [PATCH] setup nixos environment --- flake.lock | 23 ++++++++++++++++++ flake.nix | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 93 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..25933b6 --- /dev/null +++ b/flake.lock @@ -0,0 +1,23 @@ +{ + "nodes": { + "nixpkgs": { + "locked": { + "lastModified": 0, + "narHash": "sha256-s40Kk/OulP3J/1JvC3VT16U4r/Xw6Qdi7SRw3LYkPWs=", + "path": "/nix/store/n67nldl8x3f44w9mvk5zvij0q1rwnsmq-source", + "type": "path" + }, + "original": { + "id": "nixpkgs", + "type": "indirect" + } + }, + "root": { + "inputs": { + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..b1db1dc --- /dev/null +++ b/flake.nix @@ -0,0 +1,70 @@ +{ + description = "boddle, in Anlehnung an bottle"; + + outputs = { self, nixpkgs }: let + module = { pkgs, lib, config, ... }: { + options.services.boddle = { + enable = lib.mkEnableOption "enable"; + # TODO: configurability + }; + + config.nixpkgs.overlays = [ self.overlay ]; + + config.systemd.services.boddle = lib.mkIf config.services.boddle.enable { + script = lib.getExe pkgs.boddle; + }; + }; + + per-system = fn: builtins.mapAttrs (_: fn) nixpkgs.legacyPackages; + + package = pkgs: pkgs.buildGoModule { + meta = { + description = "boddle, in Anlehnung an bottle"; + homepage = "https://git.fbs42.ddnss.de/forgejo/fbs42/boddle"; + name = "boddle"; + }; + pname = "boddle"; + version = "v0.0.1"; + vendorHash = "sha256-dlQ1+skfEiPVm+IWxfwPsW8jkifo4ufZlfESbf36fFY="; + src = pkgs.fetchgit { + url = "https://git.fbs42.ddnss.de/forgejo/fbs42/boddle"; + hash = "sha256-Dopo8qV+icaEof3699/Qfz4iuZMqgRodKKWDaH1d9R4="; + }; + }; + + devshell = pkgs: pkgs.mkShell { + nativeBuildInputs = with pkgs.buildPackages; [ + go + ]; + }; + + app = pkgs: { + type = "app"; + program = nixpkgs.lib.getExe (package pkgs); + }; + + in { + nixosModules = { + default = self.nixosModules.boddle; + boddle = module; + }; + + overlay = final: prev: { + boddle = package final; + }; + + packages = per-system (pkgs: { + default = package pkgs; + boddle = package pkgs; + }); + + apps = per-system (pkgs: { + default = app pkgs; + boddle = app pkgs; + }); + + devShells = per-system (pkgs: { + default = devshell pkgs; + }); + }; +}