Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9d5b2ac88f | |||
| 51564ed7fa | |||
| 3c7f439ba6 | |||
| 5c12d64623 | |||
| 5087b872b7 | |||
| aa201c643f | |||
| ff5897a40c | |||
| 7172641ab4 | |||
| d7d164291d | |||
| db62676282 | |||
| c4dc6ed971 | |||
| f59831b946 | |||
| 49fa5d7f63 | |||
| 29c012a492 | |||
| d7b203ad6c | |||
| b27b06ec06 | |||
| d7f781bb84 | |||
| 29b11bee5a | |||
| 8b2fd7b95e | |||
| 1720c2c8b0 | |||
| f0630c4a63 | |||
| 1e336db1a9 | |||
| 92b7216c0b |
15
.editorconfig
Normal file
15
.editorconfig
Normal file
@ -0,0 +1,15 @@
|
||||
# EditorConfig is awesome: https://EditorConfig.org
|
||||
|
||||
# top-most EditorConfig file
|
||||
root = true
|
||||
|
||||
# Unix-style newlines with a newline ending every file
|
||||
[*]
|
||||
end_of_line = lf
|
||||
insert_final_newline = true
|
||||
|
||||
# nix files
|
||||
[*.nix]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@ -0,0 +1,2 @@
|
||||
result
|
||||
|
||||
51
Makefile
Normal file
51
Makefile
Normal file
@ -0,0 +1,51 @@
|
||||
####
|
||||
# Target definitions
|
||||
####
|
||||
|
||||
# Disable echoing of target recipe commands
|
||||
# Comment this for debugging
|
||||
.SILENT:
|
||||
|
||||
# Run target recipes in one shell invocation
|
||||
.ONESHELL:
|
||||
|
||||
# Since all targets are phony, all targets should be listed here
|
||||
# One target per line
|
||||
.PHONY: boot-vm-cli \
|
||||
boot-vm-gui \
|
||||
build-vm \
|
||||
clean \
|
||||
format-nix-files \
|
||||
help
|
||||
|
||||
help: ## Show this help message
|
||||
egrep -h '\s##\s' $(MAKEFILE_LIST) \
|
||||
| sort \
|
||||
| awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
|
||||
format-nix-files: ## Format nix files using the nixpkgs-fmt tool
|
||||
find . -name "*.nix" -exec nixpkgs-fmt {} \;
|
||||
|
||||
clean: ## Clean build artifacts and shutdown running virtual machines
|
||||
rm result > /dev/null 2>&1
|
||||
rm nixos.qcow2 > /dev/null 2>&1
|
||||
pkill qemu
|
||||
exit 0
|
||||
|
||||
build-vm: clean ## Build virtual machine for testing
|
||||
nix build ".#nixosConfigurations.vm.config.system.build.vm"
|
||||
|
||||
boot-vm-cli: ## Run virtual machine in current terminal
|
||||
QEMU_KERNEL_PARAMS=console=ttyS0 \
|
||||
QEMU_NET_OPTS=hostfwd=tcp::8080-:80 \
|
||||
QEMU_OPTS=-nographic \
|
||||
./result/bin/run-nixos-vm
|
||||
reset
|
||||
|
||||
boot-vm-gui: ## Run virtual machine in QEMU window
|
||||
QEMU_KERNEL_PARAMS=console=ttyS0 \
|
||||
QEMU_NET_OPTS=hostfwd=tcp::8080-:80 \
|
||||
./result/bin/run-nixos-vm
|
||||
reset
|
||||
|
||||
20
flake.lock
generated
20
flake.lock
generated
@ -78,11 +78,11 @@
|
||||
"nixpkgs-regression": "nixpkgs-regression"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1735677698,
|
||||
"narHash": "sha256-L0G5igB2xXUQwKhU5aRfRtrhDJfJ3PkOUcvXnQM2+kI=",
|
||||
"lastModified": 1756415448,
|
||||
"narHash": "sha256-eHMAXHdP9RGwQkAC+/ealzq5VPp/A5vkGXf6tBoGkTo=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nix",
|
||||
"rev": "4f3960ea260f95a36a204d0d57d60ead66c3b194",
|
||||
"rev": "47cae1f72bd1217623ca549f1743798c83accb78",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
@ -92,16 +92,16 @@
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1734359947,
|
||||
"narHash": "sha256-1Noao/H+N8nFB4Beoy8fgwrcOQLVm9o4zKW1ODaqK9E=",
|
||||
"lastModified": 1756178832,
|
||||
"narHash": "sha256-O2CIn7HjZwEGqBrwu9EU76zlmA5dbmna7jL1XUmAId8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "48d12d5e70ee91fe8481378e540433a7303dbf6a",
|
||||
"rev": "d98ce345cdab58477ca61855540999c86577d19d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "release-24.11",
|
||||
"ref": "nixos-25.05-small",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
@ -140,11 +140,11 @@
|
||||
},
|
||||
"nixpkgs_2": {
|
||||
"locked": {
|
||||
"lastModified": 1735531152,
|
||||
"narHash": "sha256-As8I+ebItDKtboWgDXYZSIjGlKeqiLBvjxsQHUmAf1Q=",
|
||||
"lastModified": 1751274312,
|
||||
"narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "3ffbbdbac0566a0977da3d2657b89cbcfe9a173b",
|
||||
"rev": "50ab793786d9de88ee30ec4e4c24fb4236fc2674",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
45
flake.nix
45
flake.nix
@ -1,28 +1,35 @@
|
||||
{
|
||||
description = "Invoice Ninja desktop package.";
|
||||
|
||||
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-24.11";
|
||||
|
||||
outputs =
|
||||
{ self, nixpkgs, nix, }:
|
||||
let
|
||||
systems = [ "x86_64-linux" ];
|
||||
forEachSystem = nixpkgs.lib.genAttrs systems;
|
||||
let
|
||||
systems = [ "x86_64-linux" ];
|
||||
forEachSystem = nixpkgs.lib.genAttrs systems;
|
||||
|
||||
overlayList = [ self.overlays.default ];
|
||||
overlayList = [ self.overlays.default ];
|
||||
|
||||
pkgsBySystem = forEachSystem (
|
||||
system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
overlays = overlayList;
|
||||
}
|
||||
);
|
||||
in
|
||||
rec {
|
||||
overlays.default = final: prev: { invoice-ninja-desktop = final.callPackage ./package.nix { }; };
|
||||
pkgsBySystem = forEachSystem (
|
||||
system:
|
||||
import nixpkgs {
|
||||
inherit system;
|
||||
overlays = overlayList;
|
||||
}
|
||||
);
|
||||
in
|
||||
rec {
|
||||
nixosConfigurations.vm = nixpkgs.lib.nixosSystem {
|
||||
system = "x86_64-linux";
|
||||
modules = [ ./vm ];
|
||||
};
|
||||
|
||||
packages = forEachSystem (system: {
|
||||
invoice-ninja-desktop = pkgsBySystem.${system}.invoice-ninja-desktop;
|
||||
default = pkgsBySystem.${system}.invoice-ninja-desktop;
|
||||
});
|
||||
};
|
||||
overlays.default = final: prev: { invoiceninja-desktop = final.callPackage ./package.nix { }; };
|
||||
|
||||
packages = forEachSystem (system: {
|
||||
invoiceninja-desktop = pkgsBySystem.${system}.invoiceninja-desktop;
|
||||
default = pkgsBySystem.${system}.invoiceninja-desktop;
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
39
package.nix
39
package.nix
@ -1,6 +1,26 @@
|
||||
{ lib, fetchFromGitHub, flutter319 }:
|
||||
{ lib
|
||||
, makeDesktopItem
|
||||
, copyDesktopItems
|
||||
, wrapGAppsHook3
|
||||
, fetchFromGitHub
|
||||
, flutter
|
||||
}:
|
||||
|
||||
let
|
||||
desktopFile = makeDesktopItem rec {
|
||||
name = "Invoice Ninja";
|
||||
desktopName = name;
|
||||
exec = "invoiceninja";
|
||||
icon = "invoiceninja";
|
||||
startupWMClass = "invoiceninja";
|
||||
categories = [ "Office" ];
|
||||
terminal = false;
|
||||
extraConfig = {
|
||||
X-MultipleArgs = "false";
|
||||
};
|
||||
};
|
||||
|
||||
in flutter.buildFlutterApplication rec {
|
||||
version = "5.0.172";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
@ -10,10 +30,7 @@ let
|
||||
hash = "sha256-yYGGmF0XiixDi/OuLdlKwN685BUsxcIFzIqXkJi4KMs=";
|
||||
};
|
||||
|
||||
in flutter319.buildFlutterApplication {
|
||||
inherit version src;
|
||||
|
||||
pname = "invoice-ninja-desktop";
|
||||
pname = "invoiceninja-desktop";
|
||||
|
||||
targetFlutterPlatform = "linux";
|
||||
|
||||
@ -29,10 +46,22 @@ in flutter319.buildFlutterApplication {
|
||||
super_text_layout = "sha256-SGWTs2zHObYAC8J/LdtdmoDtI/EQZr0fJoYMpGcyGWE=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
copyDesktopItems
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
postUnpack = ''
|
||||
mv $sourceRoot/lib/.env.dart.example $sourceRoot/lib/.env.dart
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/icons
|
||||
mv $out/app/invoiceninja-desktop/data/flutter_assets/assets/images/icon.png $out/share/icons/invoiceninja.png
|
||||
'';
|
||||
|
||||
desktopItems = [ desktopFile ];
|
||||
|
||||
meta = {
|
||||
description = "Invoice Ninja desktop client";
|
||||
homepage = "https://github.com/invoiceninja/admin-portal";
|
||||
|
||||
38
vm/default.nix
Normal file
38
vm/default.nix
Normal file
@ -0,0 +1,38 @@
|
||||
{ modulesPath, pkgs, ... }:
|
||||
|
||||
let
|
||||
invoiceninja-desktop = pkgs.callPackage ../package.nix { };
|
||||
|
||||
in {
|
||||
imports = [
|
||||
(modulesPath + "/profiles/qemu-guest.nix")
|
||||
];
|
||||
|
||||
system.stateVersion = "24.11";
|
||||
|
||||
networking.firewall.enable = false;
|
||||
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
services = {
|
||||
resolved.enable = true;
|
||||
|
||||
xserver = {
|
||||
enable = true;
|
||||
displayManager.lightdm.enable = true;
|
||||
windowManager.openbox.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.users.test = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "wheel" ];
|
||||
initialPassword = "test";
|
||||
};
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.ungoogled-chromium
|
||||
invoiceninja-desktop
|
||||
];
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user