Archived
Add Nix flake for declarative installation
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
This commit is contained in:
@@ -63,3 +63,29 @@ jobs:
|
||||
dist/*.AppImage
|
||||
dist/*.deb
|
||||
dist/*.rpm
|
||||
|
||||
- name: Update flake.nix hashes
|
||||
env:
|
||||
VERSION: ${{ steps.bump.outputs.version }}
|
||||
run: |
|
||||
X86_HASH=$(sha256sum dist/linear-linux-${VERSION}-x86_64.AppImage | awk '{print $1}')
|
||||
ARM_HASH=$(sha256sum dist/linear-linux-${VERSION}-arm64.AppImage | awk '{print $1}')
|
||||
|
||||
X86_SRI="sha256-$(echo -n "$X86_HASH" | python3 -c "import sys,base64,binascii; print(base64.b64encode(binascii.unhexlify(sys.stdin.read())).decode())")"
|
||||
ARM_SRI="sha256-$(echo -n "$ARM_HASH" | python3 -c "import sys,base64,binascii; print(base64.b64encode(binascii.unhexlify(sys.stdin.read())).decode())")"
|
||||
|
||||
sed -i "s|version = \".*\";|version = \"${VERSION}\";|" flake.nix
|
||||
sed -i "s|hash = \"sha256-.*\"; # x86_64|hash = \"${X86_SRI}\"; # x86_64|" flake.nix
|
||||
sed -i "s|hash = \"sha256-.*\"; # aarch64|hash = \"${ARM_SRI}\"; # aarch64|" flake.nix
|
||||
|
||||
- name: Commit flake.nix update
|
||||
env:
|
||||
VERSION: ${{ steps.bump.outputs.version }}
|
||||
run: |
|
||||
git add flake.nix
|
||||
if git diff --cached --quiet; then
|
||||
echo "No changes to flake.nix"
|
||||
else
|
||||
git commit -m "chore: update flake.nix hashes for v${VERSION}"
|
||||
git push
|
||||
fi
|
||||
|
||||
Generated
+27
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1775036866,
|
||||
"narHash": "sha256-ZojAnPuCdy657PbTq5V0Y+AHKhZAIwSIT2cb8UgAz/U=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "6201e203d09599479a3b3450ed24fa81537ebc4e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "NixOS",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
{
|
||||
description = "Unofficial Linux desktop client for Linear (linear.app)";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
};
|
||||
|
||||
outputs = { self, nixpkgs }:
|
||||
let
|
||||
version = "0.2.5";
|
||||
|
||||
sources = {
|
||||
x86_64-linux = {
|
||||
url = "https://github.com/kleo-dev/linear-linux/releases/download/v${version}/linear-linux-${version}-x86_64.AppImage";
|
||||
hash = "sha256-NBmfXyrmtBccOLLzBiwbkCyA8IGxtY+AQIgAVxfrank="; # x86_64
|
||||
};
|
||||
aarch64-linux = {
|
||||
url = "https://github.com/kleo-dev/linear-linux/releases/download/v${version}/linear-linux-${version}-arm64.AppImage";
|
||||
hash = "sha256-nNDo7cq05as0qoEbd1UkOG+s8PzFZxnovcqLsg11RlU="; # aarch64
|
||||
};
|
||||
};
|
||||
|
||||
forAllSystems = nixpkgs.lib.genAttrs [ "x86_64-linux" "aarch64-linux" ];
|
||||
in
|
||||
{
|
||||
packages = forAllSystems (system:
|
||||
let
|
||||
pkgs = nixpkgs.legacyPackages.${system};
|
||||
src = pkgs.fetchurl {
|
||||
url = sources.${system}.url;
|
||||
hash = sources.${system}.hash;
|
||||
};
|
||||
in
|
||||
{
|
||||
linear-linux = pkgs.appimageTools.wrapType2 {
|
||||
pname = "linear-linux";
|
||||
inherit version src;
|
||||
|
||||
extraInstallCommands =
|
||||
let
|
||||
appimageContents = pkgs.appimageTools.extractType2 {
|
||||
pname = "linear-linux";
|
||||
inherit version src;
|
||||
};
|
||||
in
|
||||
''
|
||||
# Install desktop file
|
||||
install -Dm644 ${appimageContents}/linear-linux.desktop \
|
||||
$out/share/applications/linear-linux.desktop
|
||||
substituteInPlace $out/share/applications/linear-linux.desktop \
|
||||
--replace-warn 'Exec=AppRun' 'Exec=linear-linux'
|
||||
|
||||
# Install icons
|
||||
install -Dm644 ${appimageContents}/usr/share/icons/hicolor/1024x1024/apps/linear-linux.png \
|
||||
$out/share/icons/hicolor/1024x1024/apps/linear-linux.png
|
||||
'';
|
||||
|
||||
meta = with pkgs.lib; {
|
||||
description = "Unofficial Linux desktop client for Linear (linear.app)";
|
||||
homepage = "https://github.com/kleo-dev/linear-linux";
|
||||
license = licenses.isc;
|
||||
platforms = [ "x86_64-linux" "aarch64-linux" ];
|
||||
mainProgram = "linear-linux";
|
||||
};
|
||||
};
|
||||
|
||||
default = self.packages.${system}.linear-linux;
|
||||
}
|
||||
);
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user