From 95dfa8b8cf82127ad5137689d2675a4c5019298f Mon Sep 17 00:00:00 2001 From: worldofpeace Date: Sun, 22 Dec 2019 01:44:42 -0500 Subject: pantheon: no bash update script, nixpkgs_github_update MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cuz ew. What could be more ew? Not this really. Clearly using update-source-version (bash) from a different lang is better? 😜️ --- pkgs/desktops/pantheon/apps/appcenter/default.nix | 2 +- .../apps/elementary-calculator/default.nix | 3 +- .../pantheon/apps/elementary-calendar/default.nix | 3 +- .../pantheon/apps/elementary-camera/default.nix | 3 +- .../pantheon/apps/elementary-code/default.nix | 3 +- .../pantheon/apps/elementary-feedback/default.nix | 3 +- .../pantheon/apps/elementary-files/default.nix | 3 +- .../pantheon/apps/elementary-music/default.nix | 3 +- .../pantheon/apps/elementary-photos/default.nix | 3 +- .../apps/elementary-screenshot-tool/default.nix | 3 +- .../pantheon/apps/elementary-terminal/default.nix | 3 +- .../pantheon/apps/elementary-videos/default.nix | 3 +- pkgs/desktops/pantheon/apps/sideload/default.nix | 2 +- .../apps/switchboard-plugs/a11y/default.nix | 2 +- .../apps/switchboard-plugs/about/default.nix | 2 +- .../switchboard-plugs/applications/default.nix | 2 +- .../apps/switchboard-plugs/bluetooth/default.nix | 2 +- .../apps/switchboard-plugs/datetime/default.nix | 2 +- .../apps/switchboard-plugs/display/default.nix | 2 +- .../apps/switchboard-plugs/keyboard/default.nix | 2 +- .../switchboard-plugs/mouse-touchpad/default.nix | 2 +- .../apps/switchboard-plugs/network/default.nix | 2 +- .../switchboard-plugs/notifications/default.nix | 2 +- .../switchboard-plugs/onlineaccounts/default.nix | 2 +- .../switchboard-plugs/pantheon-shell/default.nix | 2 +- .../apps/switchboard-plugs/power/default.nix | 2 +- .../apps/switchboard-plugs/printers/default.nix | 2 +- .../switchboard-plugs/security-privacy/default.nix | 2 +- .../apps/switchboard-plugs/sharing/default.nix | 2 +- .../apps/switchboard-plugs/sound/default.nix | 2 +- .../desktops/pantheon/apps/switchboard/default.nix | 2 +- .../artwork/elementary-gtk-theme/default.nix | 3 +- .../artwork/elementary-icon-theme/default.nix | 3 +- .../artwork/elementary-sound-theme/default.nix | 13 +- .../artwork/elementary-wallpapers/default.nix | 3 +- pkgs/desktops/pantheon/default.nix | 2 + .../elementary-default-settings/default.nix | 3 +- .../desktop/elementary-greeter/default.nix | 3 +- .../desktop/elementary-onboarding/default.nix | 3 +- .../desktop/elementary-print-shim/default.nix | 3 +- .../elementary-session-settings/default.nix | 3 +- .../elementary-shortcut-overlay/default.nix | 3 +- pkgs/desktops/pantheon/desktop/gala/default.nix | 3 +- .../applications-menu/default.nix | 3 +- .../wingpanel-indicators/bluetooth/default.nix | 2 +- .../wingpanel-indicators/datetime/default.nix | 2 +- .../wingpanel-indicators/keyboard/default.nix | 2 +- .../wingpanel-indicators/network/default.nix | 2 +- .../wingpanel-indicators/nightlight/default.nix | 2 +- .../wingpanel-indicators/notifications/default.nix | 2 +- .../desktop/wingpanel-indicators/power/default.nix | 2 +- .../wingpanel-indicators/session/default.nix | 2 +- .../desktop/wingpanel-indicators/sound/default.nix | 2 +- .../pantheon/desktop/wingpanel/default.nix | 2 +- pkgs/desktops/pantheon/granite/default.nix | 2 +- .../desktops/pantheon/nixpkgs_github_update/.envrc | 1 + .../pantheon/nixpkgs_github_update/.formatter.exs | 4 + .../pantheon/nixpkgs_github_update/.gitignore | 32 +++ .../pantheon/nixpkgs_github_update/default.nix | 53 +++++ .../lib/nixpkgs_github_update/cli.ex | 71 +++++++ .../nixpkgs_github_update/github_latest_version.ex | 31 +++ .../lib/nixpkgs_github_update/nix.ex | 75 +++++++ .../pantheon/nixpkgs_github_update/mix.exs | 28 +++ .../pantheon/nixpkgs_github_update/shell.nix | 19 ++ .../desktops/pantheon/services/cerbere/default.nix | 2 +- .../pantheon/services/contractor/default.nix | 2 +- .../services/elementary-capnet-assist/default.nix | 3 +- .../services/elementary-dpms-helper/default.nix | 3 +- .../services/pantheon-agent-geoclue2/default.nix | 2 +- .../services/pantheon-agent-polkit/default.nix | 2 +- pkgs/desktops/pantheon/update.nix | 36 +--- pkgs/desktops/pantheon/update.sh | 236 --------------------- 72 files changed, 384 insertions(+), 359 deletions(-) create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/.envrc create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/default.nix create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs create mode 100644 pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix delete mode 100755 pkgs/desktops/pantheon/update.sh diff --git a/pkgs/desktops/pantheon/apps/appcenter/default.nix b/pkgs/desktops/pantheon/apps/appcenter/default.nix index adba0b430084..244146771c43 100644 --- a/pkgs/desktops/pantheon/apps/appcenter/default.nix +++ b/pkgs/desktops/pantheon/apps/appcenter/default.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix b/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix index 3c73de6e7a98..1876020a8fe4 100644 --- a/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-calculator/default.nix @@ -31,8 +31,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix b/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix index 4f4244fa03e8..5a70fa94c5ee 100644 --- a/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-calendar/default.nix @@ -38,8 +38,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-camera/default.nix b/pkgs/desktops/pantheon/apps/elementary-camera/default.nix index aedc445b05f9..7c95d88053dd 100644 --- a/pkgs/desktops/pantheon/apps/elementary-camera/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-camera/default.nix @@ -36,8 +36,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-code/default.nix b/pkgs/desktops/pantheon/apps/elementary-code/default.nix index 355f3ea8d0f6..0e692a8e8061 100644 --- a/pkgs/desktops/pantheon/apps/elementary-code/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-code/default.nix @@ -40,8 +40,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix b/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix index 70d8f63c13cd..fb56b3d1b33a 100644 --- a/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-feedback/default.nix @@ -31,8 +31,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-files/default.nix b/pkgs/desktops/pantheon/apps/elementary-files/default.nix index 1b5de7c168ed..1cb81344ea6c 100644 --- a/pkgs/desktops/pantheon/apps/elementary-files/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-files/default.nix @@ -45,8 +45,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-music/default.nix b/pkgs/desktops/pantheon/apps/elementary-music/default.nix index 7d235551a802..b53030217722 100644 --- a/pkgs/desktops/pantheon/apps/elementary-music/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-music/default.nix @@ -42,8 +42,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-photos/default.nix b/pkgs/desktops/pantheon/apps/elementary-photos/default.nix index 50a797a702df..ea74686e5041 100644 --- a/pkgs/desktops/pantheon/apps/elementary-photos/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-photos/default.nix @@ -46,8 +46,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix b/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix index ce9d0b6c82d9..8485a1df9f3a 100644 --- a/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-screenshot-tool/default.nix @@ -30,8 +30,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix b/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix index e847a139616a..8416898710d8 100644 --- a/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-terminal/default.nix @@ -33,8 +33,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/elementary-videos/default.nix b/pkgs/desktops/pantheon/apps/elementary-videos/default.nix index e934a944df81..c8bde4943992 100644 --- a/pkgs/desktops/pantheon/apps/elementary-videos/default.nix +++ b/pkgs/desktops/pantheon/apps/elementary-videos/default.nix @@ -32,8 +32,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/sideload/default.nix b/pkgs/desktops/pantheon/apps/sideload/default.nix index 1fcd486263bd..f04cb7cd53b3 100644 --- a/pkgs/desktops/pantheon/apps/sideload/default.nix +++ b/pkgs/desktops/pantheon/apps/sideload/default.nix @@ -32,7 +32,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix index 7a79f72f1a2e..5cd5d365ed95 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/a11y/default.nix @@ -33,7 +33,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix index 6c97c986ae07..d501cba7c066 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/about/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix index c15219fbdf82..0d0a7507afea 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/applications/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix index ca29ab65afcb..6f2fefa4873f 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/bluetooth/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix index cafb40144078..501059896f24 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/datetime/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix index eb3066597edb..bd9669e24997 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/display/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix index e31355b7b7ed..81a694f2ea93 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/keyboard/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix index c7f2fcce458d..260b340c2239 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/mouse-touchpad/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix index be4614df557a..6e050c92d805 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/network/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix index a61124954698..bd7fee51d8dc 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/notifications/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix index fd1719814b82..fdd3f4f57650 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/onlineaccounts/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix index f8fdb01aee66..ab9ecbc5a336 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/pantheon-shell/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix index df2051d8040a..a8513f0b29ba 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/power/default.nix @@ -30,7 +30,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix index 10c95dd7b8e8..b21fc1c099f1 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/printers/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix index e8d21478cc9f..9d457aedc969 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/security-privacy/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix index 57e7fe6af441..3d240fc6221e 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/sharing/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix b/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix index cd4b4beb1df5..8d8cd1c940a6 100644 --- a/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard-plugs/sound/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/apps/switchboard/default.nix b/pkgs/desktops/pantheon/apps/switchboard/default.nix index 30f870671eee..03e6ef999eb0 100644 --- a/pkgs/desktops/pantheon/apps/switchboard/default.nix +++ b/pkgs/desktops/pantheon/apps/switchboard/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix b/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix index 34a87a6cb167..be8df39ab068 100644 --- a/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix +++ b/pkgs/desktops/pantheon/artwork/elementary-gtk-theme/default.nix @@ -21,8 +21,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix b/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix index 1fba6a949d6b..9943415a4573 100644 --- a/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix +++ b/pkgs/desktops/pantheon/artwork/elementary-icon-theme/default.nix @@ -23,8 +23,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix b/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix index aff830fda568..c19a465e9b14 100644 --- a/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix +++ b/pkgs/desktops/pantheon/artwork/elementary-sound-theme/default.nix @@ -19,19 +19,18 @@ stdenv.mkDerivation rec { sha256 = "1dc583lq61c361arjl3s44d2k72c46bqvcqv1c3s69f2ndsnxjdz"; }; - passthru = { - updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; - }; - }; - nativeBuildInputs = [ meson ninja pkgconfig ]; + passthru = { + updateScript = pantheon.updateScript { + attrPath = "pantheon.${pname}"; + }; + }; + meta = with stdenv.lib; { description = "A set of system sounds for elementary"; homepage = https://github.com/elementary/sound-theme; diff --git a/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix b/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix index 8a4973728620..2f3b0ee059fc 100644 --- a/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix +++ b/pkgs/desktops/pantheon/artwork/elementary-wallpapers/default.nix @@ -27,8 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/default.nix b/pkgs/desktops/pantheon/default.nix index 693224b81ecc..6aa2a141876f 100644 --- a/pkgs/desktops/pantheon/default.nix +++ b/pkgs/desktops/pantheon/default.nix @@ -54,6 +54,8 @@ lib.makeScope pkgs.newScope (self: with self; { wingpanel-indicator-session wingpanel-indicator-sound ]; + nixpkgs-github-update = callPackage ./nixpkgs_github_update { }; + updateScript = callPackage ./update.nix { }; maintainers = with pkgs.stdenv.lib.maintainers; [ worldofpeace ]; diff --git a/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix index f20f11974993..e601c99108b3 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-default-settings/default.nix @@ -27,8 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix index 440893935f81..dc0b764d3197 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-greeter/default.nix @@ -41,8 +41,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; xgreeters = linkFarm "pantheon-greeter-xgreeters" [{ diff --git a/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix b/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix index 2c532f899abf..06b5183c1e03 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-onboarding/default.nix @@ -33,8 +33,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix b/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix index 0be2431d33d8..e79a85bee958 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-print-shim/default.nix @@ -23,8 +23,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix index 07c9e724fc65..58acdd12147e 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-session-settings/default.nix @@ -128,8 +128,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; providedSessions = [ "pantheon" ]; }; diff --git a/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix b/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix index 097c62f344fb..2ba5f4becc15 100644 --- a/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix +++ b/pkgs/desktops/pantheon/desktop/elementary-shortcut-overlay/default.nix @@ -30,8 +30,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/gala/default.nix b/pkgs/desktops/pantheon/desktop/gala/default.nix index 4b75b3bff56b..baff9871105a 100644 --- a/pkgs/desktops/pantheon/desktop/gala/default.nix +++ b/pkgs/desktops/pantheon/desktop/gala/default.nix @@ -37,8 +37,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; - versionPolicy = "master"; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix index ca9abadf9ba2..34c29c1b72ac 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/applications-menu/default.nix @@ -39,8 +39,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix index 965d9800c5b1..93ddb0e1dee2 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/bluetooth/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix index b4e9eeef0fd7..f6ff962a9446 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/datetime/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix index 02421f281646..66f805b9a494 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/keyboard/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix index 01a815404a64..fd22de25d63c 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/network/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix index 3b50866c0ed9..9d2669821de6 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/nightlight/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix index 78512b341bb0..e5dabead7c5b 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/notifications/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix index b989bada5711..122236449710 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/power/default.nix @@ -28,7 +28,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix index c80da53986ac..72f94252cca9 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/session/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix index 12654ff5509c..ccd233e1a3e7 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel-indicators/sound/default.nix @@ -29,7 +29,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/desktop/wingpanel/default.nix b/pkgs/desktops/pantheon/desktop/wingpanel/default.nix index 1fc7304feb2d..694166a5d641 100644 --- a/pkgs/desktops/pantheon/desktop/wingpanel/default.nix +++ b/pkgs/desktops/pantheon/desktop/wingpanel/default.nix @@ -31,7 +31,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/granite/default.nix b/pkgs/desktops/pantheon/granite/default.nix index 1b73ac88df59..198be9f3430d 100644 --- a/pkgs/desktops/pantheon/granite/default.nix +++ b/pkgs/desktops/pantheon/granite/default.nix @@ -27,7 +27,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/.envrc b/pkgs/desktops/pantheon/nixpkgs_github_update/.envrc new file mode 100644 index 000000000000..1d953f4bd735 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/.envrc @@ -0,0 +1 @@ +use nix diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs b/pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs new file mode 100644 index 000000000000..d2cda26eddc9 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/.formatter.exs @@ -0,0 +1,4 @@ +# Used by "mix format" +[ + inputs: ["{mix,.formatter}.exs", "{config,lib,test}/**/*.{ex,exs}"] +] diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore b/pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore new file mode 100644 index 000000000000..877c95f1f63b --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/.gitignore @@ -0,0 +1,32 @@ +# The directory Mix will write compiled artifacts to. +_build/ + +# If you run "mix test --cover", coverage assets end up here. +cover/ + +# The directory Mix downloads your dependencies sources to. +deps/ + +# Where third-party dependencies like ExDoc output generated docs. +doc/ + +# Ignore .fetch files in case you like to edit your project deps locally. +.fetch + +# If the VM crashes, it generates a dump, let's ignore it too. +erl_crash.dump + +# Also ignore archive artifacts (built via "mix archive.build"). +*.ez + +# Ignore package tarball (built via "mix hex.build"). +nixpkgs_github_update-*.tar + +# Ignore elixir_ls +.elixir_ls + +# mix escript.build result +nixpkgs_github_update + +# lockfile. only because this is nixpkgs. +mix.lock diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/default.nix b/pkgs/desktops/pantheon/nixpkgs_github_update/default.nix new file mode 100644 index 000000000000..834291222cf0 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/default.nix @@ -0,0 +1,53 @@ +{ lib +, beamPackages +, makeWrapper +, common-updater-scripts +}: + +let + + poison_4 = beamPackages.buildMix { + name = "poison"; + version = "4.0.1"; + + src = beamPackages.fetchHex { + pkg = "poison"; + version = "4.0.1"; + sha256 = "098gdz7xzfmnjzgnnv80nl4h3zl8l9czqqd132vlnfabxbz3d25s"; + }; + }; + + +in + +beamPackages.buildMix { + name = "nixpkgs-github-update"; + version = "0.1.0"; + + src = lib.cleanSource ./.; + + nativeBuildInputs = [ + makeWrapper + ]; + + beamDeps = with beamPackages; [ erlang poison_4 ]; + + buildPhase = '' + export HEX_OFFLINE=1 + export HEX_HOME=`pwd` + export MIX_ENV=prod + export MIX_NO_DEPS=1 + + mix escript.build --no-deps-check + ''; + + installPhase = '' + mkdir -p $out/bin + cp nixpkgs_github_update $out/bin + ''; + + postFixup = '' + wrapProgram $out/bin/nixpkgs_github_update \ + --prefix PATH : "${lib.makeBinPath [ common-updater-scripts ]}" + ''; +} diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex b/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex new file mode 100644 index 000000000000..e735c4285169 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/cli.ex @@ -0,0 +1,71 @@ +defmodule NixpkgsGitHubUpdate.CLI do + @moduledoc """ + Run updates on Nix Expressions that use fetchFromGitHub. + + Arguments the script accepts: + --attribute + + Example usage: + ``` + ./nixpkgs_github_update --attribute "notes-up" + ``` + """ + alias NixpkgsGitHubUpdate.{Nix, GitHubLatestVersion} + + def help do + IO.puts(""" + Run updates on Nix Expressions that use fetchFromGitHub. + + Arguments the script accepts: + --attribute + + Example usage: + ./nixpkgs_github_update --attribute "notes-up" + """) + end + + def main([]) do + help() + end + + def main(args) do + opts = parse_args(args) + + attribute = opts[:attribute] + + case Nix.attribute_exists?(attribute) do + true -> update(attribute) + _ -> exit("Requested attribute doesn't exist.") + end + end + + def parse_args(args) do + {options, _, _} = + args + |> OptionParser.parse(strict: [attribute: :string]) + + options + end + + def update(attribute) do + version = + Nix.get_owner_repo(attribute) + |> GitHubLatestVersion.fetch() + |> decode_response() + |> construct_version() + + Nix.update_source_version(attribute, version) + end + + def decode_response({:ok, response}), do: response + + def decode_response({:error, error}) do + IO.puts("Error getting latest release from GitHub: #{error["message"]}") + System.halt(2) + end + + def construct_version(response) do + Map.get(response, "tag_name") + |> String.trim_leading("v") + end +end diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex b/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex new file mode 100644 index 000000000000..76dcc2d69976 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/github_latest_version.ex @@ -0,0 +1,31 @@ +defmodule NixpkgsGitHubUpdate.GitHubLatestVersion do + @user_agent 'httpc' + + def fetch({owner, repo}) do + endpoint = releases_endpoint(owner, repo) + + oauth_token = String.to_charlist("#{System.get_env("OAUTH_TOKEN")}") + + headers = %{ + 'User-Agent' => @user_agent, + 'Authorization' => 'token #{oauth_token}' + } + + :httpc.request(:get, {endpoint, Map.to_list(headers)}, [], []) + |> handle_response + end + + def releases_endpoint(owner, repo) do + 'https://api.github.com/repos/#{owner}/#{repo}/releases/latest' + end + + def handle_response({_, {{_httpv, status_code, _}, _headers, response}}) do + { + status_code |> check_for_error(), + response |> Poison.Parser.parse!(%{}) + } + end + + defp check_for_error(200), do: :ok + defp check_for_error(_), do: :error +end diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex b/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex new file mode 100644 index 000000000000..713badf770bb --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/lib/nixpkgs_github_update/nix.ex @@ -0,0 +1,75 @@ +defmodule NixpkgsGitHubUpdate.Nix do + def executable do + nix = System.find_executable("nix") + + if nil === nix do + raise RuntimeError, message: "missing executable for 'nix'" + end + + nix + end + + def eval!(attribute) do + System.cmd( + executable(), + [ + "eval", + "--json", + attribute + ], + stderr_to_stdout: true + ) + |> handle_eval + end + + def handle_eval({eval_result, 0}) do + case eval_result do + "" -> eval_result + _ -> Poison.Parser.parse!(eval_result, %{}) + end + end + + def handle_eval({eval_result, _}) do + IO.puts("Error running nix eval: #{eval_result}") + end + + def attribute_exists?(attribute) do + eval!("(with import {}; lib.isDerivation #{attribute})") + end + + def update_source_version(attribute, version) do + System.cmd("update-source-version", [ + attribute, + version + ]) + end + + def get_url_attr(attribute) do + case eval!("nixpkgs.#{attribute}.src.fetchSubmodules") do + true -> "url" + _ -> "urls" + end + end + + def get_owner_repo(attribute) do + url_attr = get_url_attr(attribute) + + eval!("nixpkgs.#{attribute}.src.#{url_attr}") + |> case do + # It's fetchFromGitHub if we got a list + [url | _] -> + URI.parse(url).path + |> String.split("/archive", trim: true) + |> List.first() + |> String.split("/", trim: true) + + # It's fetchgit if we got a plain string + url -> + URI.parse(url).path + |> String.split(".git", trim: true) + |> List.first() + |> String.split("/", trim: true) + end + |> List.to_tuple() + end +end diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs b/pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs new file mode 100644 index 000000000000..3498c7066a43 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/mix.exs @@ -0,0 +1,28 @@ +defmodule NixpkgsGitHubUpdate.MixProject do + use Mix.Project + + def project do + [ + app: :nixpkgs_github_update, + version: "0.1.0", + elixir: "~> 1.9", + escript: [main_module: NixpkgsGitHubUpdate.CLI], + start_permanent: Mix.env() == :prod, + deps: deps() + ] + end + + # Run "mix help compile.app" to learn about applications. + def application do + [ + extra_applications: [:logger, :inets, :ssl] + ] + end + + # Run "mix help deps" to learn about dependencies. + defp deps do + [ + {:poison, "~> 4.0.1"} + ] + end +end diff --git a/pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix b/pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix new file mode 100644 index 000000000000..0bb4e58a6a12 --- /dev/null +++ b/pkgs/desktops/pantheon/nixpkgs_github_update/shell.nix @@ -0,0 +1,19 @@ +with import {}; + +let + inherit (lib) optional; +in + +mkShell rec { + name = "nixpkgs-github-update-shell"; + + buildInputs = [ + elixir + erlang + common-updater-scripts + ] + ++ optional stdenv.isLinux libnotify # For ExUnit Notifier on Linux. + ++ optional stdenv.isLinux inotify-tools # For file_system on Linux. + ; + +} diff --git a/pkgs/desktops/pantheon/services/cerbere/default.nix b/pkgs/desktops/pantheon/services/cerbere/default.nix index a8eaf766664e..a911440fa5de 100644 --- a/pkgs/desktops/pantheon/services/cerbere/default.nix +++ b/pkgs/desktops/pantheon/services/cerbere/default.nix @@ -24,7 +24,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/services/contractor/default.nix b/pkgs/desktops/pantheon/services/contractor/default.nix index 5061793fa107..68532bdd8120 100644 --- a/pkgs/desktops/pantheon/services/contractor/default.nix +++ b/pkgs/desktops/pantheon/services/contractor/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix b/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix index b4982fcf6bee..d41750f8dfc0 100644 --- a/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix +++ b/pkgs/desktops/pantheon/services/elementary-capnet-assist/default.nix @@ -30,8 +30,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix b/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix index fb9d28eaf6b1..4ec1df36bea2 100644 --- a/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix +++ b/pkgs/desktops/pantheon/services/elementary-dpms-helper/default.nix @@ -25,8 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - inherit repoName; - attrPath = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix b/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix index 1e7f82f134d5..0f919c7c94d4 100644 --- a/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix +++ b/pkgs/desktops/pantheon/services/pantheon-agent-geoclue2/default.nix @@ -26,7 +26,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix b/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix index 0259e687bd3a..f244e0e46371 100644 --- a/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix +++ b/pkgs/desktops/pantheon/services/pantheon-agent-polkit/default.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation rec { passthru = { updateScript = pantheon.updateScript { - repoName = pname; + attrPath = "pantheon.${pname}"; }; }; diff --git a/pkgs/desktops/pantheon/update.nix b/pkgs/desktops/pantheon/update.nix index 3bc432c5d325..1137c5330169 100644 --- a/pkgs/desktops/pantheon/update.nix +++ b/pkgs/desktops/pantheon/update.nix @@ -1,36 +1,6 @@ -{ runCommand -, nix -, bash -, git -, jq -, nix-prefetch-scripts -, coreutils -, common-updater-scripts -, gnugrep -, gnused -, curl -}: +{ nixpkgs-github-update }: -{ repoName -, attrPath ? repoName -, versionPolicy ? "release" -}: +{ attrPath }: -let - script = ./update.sh; - updateScript = runCommand "update.sh" { - inherit bash git jq nix coreutils gnugrep gnused curl; - # These weren't being substituted - nix_prefetch_scripts = nix-prefetch-scripts; - common_updater_scripts = common-updater-scripts; - } '' - substituteAll ${script} $out - chmod +x $out - ''; - - throwFlag = throw "${versionPolicy} is not a valid versionPolicy - Options are either 'release' or 'master' (defaults to release)."; - - versionFlag = { release = "-r"; master = "-m"; }.${versionPolicy} or throwFlag; - -in [ updateScript versionFlag repoName attrPath ] +[ "${nixpkgs-github-update}/bin/nixpkgs_github_update" "--attribute" attrPath ] diff --git a/pkgs/desktops/pantheon/update.sh b/pkgs/desktops/pantheon/update.sh deleted file mode 100755 index 4897697d94fe..000000000000 --- a/pkgs/desktops/pantheon/update.sh +++ /dev/null @@ -1,236 +0,0 @@ -#!@bash@/bin/bash -PATH=@bash@/bin:@nix_prefetch_scripts@/bin:@common_updater_scripts@/bin:@git@/bin:@jq@/bin:@nix@/bin:@gnugrep@/bin:@gnused@/bin:@curl@/bin:$PATH -#!/usr/bin/env bash - -set -eu -o pipefail - -# -# ─── HOW TO USE ───────────────────────────────────────────────────────────────── -# - -function usage ( ) { - cat < -EOF -} - -# -# ─── POINTS YOU IN THE RIGHT DIRECTION ────────────────────────────────────────── -# - - function usage_tip ( ) { - echo 'run `update.sh -h` for usage instructions' >&2 - exit 1 - } - -# -# ─── OPTIONS: RELEASE | MASTER ──────────────────────────────────────────────────── -# - - while getopts ":hrm" opt; do - case $opt in - r) - release=1 - master=0 - ;; - m) - master=1 - release=0 - ;; - h) - usage - exit - ;; - ?) - echo "Invalid option: -$OPTARG" >&2 - usage_tip - ;; - esac - done - - shift $((OPTIND-1)) - -# -# ─── FAIL WITH MESSAGE AND NON-ZERO EXIT STATUS ───────────────────────────────── -# - - function fail ( ) { - echo "$1" >&2 - exit 1 - } - -# -# ─── UPDATES PACKAGE TO LATEST TAGGED RELEASE ─────────────────────────────── -# - - function update_to_latest_release ( ) { - repo_name="$1" - attr="$2" - - version=$(get_latest_tag "$repo_name") - fetch=$(fetch "$repo_name" "refs/tags/${version}") - sha256=$(get_hash "${fetch}") - - update-source-version "pantheon.$attr" "$version" "$sha256" - - nix_file=$(get_file_path $attr) - - if [ ! -f "$nix_file" ]; then - fail "Couldn't evaluate 'pantheon.$attr.meta.position' to locate the .nix file!" - fi - - correct_rev "$attr" "$nix_file" "version" - } - -# -# ─── UPDATES PACKAGE TO MASTER ────────────────────────────────────────────────── -# - - function update_to_master ( ) { - repo_name="$1" - attr="$2" - - fetch=$(fetch "$repo_name" "refs/heads/master") - - version=$(get_version "$fetch") - sha256=$(get_hash "$fetch") - proper_version=$(get_master_date "$fetch") - - update-source-version "pantheon.$attr" "$proper_version" "$sha256" - - nix_file=$(get_file_path $attr) - - if [ ! -f "$nix_file" ]; then - fail "Couldn't evaluate 'pantheon.$attr.meta.position' to locate the .nix file!" - fi - - correct_rev "$attr" "$nix_file" '"'$version'"' - } - -# -# ─── GETS THE LATEST TAGGED RELEASE NAME FROM GITHUB ───────────────────── -# - - function get_latest_tag ( ) { - repo_name="$1" - - OAUTH_TOKEN=$(printenv OAUTH_TOKEN) - - if [ -n "$OAUTH_TOKEN" ]; then - curl \ - --silent \ - --show-error \ - --fail \ - -X GET \ - --header "Authorization: token $OAUTH_TOKEN" \ - "https://api.github.com/repos/elementary/$repo_name/releases/latest" \ - | jq -r '.tag_name' - else - curl \ - --silent \ - --show-error \ - --fail \ - -X GET \ - "https://api.github.com/repos/elementary/$repo_name/releases/latest" \ - | jq -r '.tag_name' - fi - } - -# -# ─── FETCHES REPO AND RETURNS RELEVANT INFORMATION ────────────────── -# - - function fetch ( ) { - repo_name="$1" - version="$2" - - base_url="https://github.com/elementary" - full_url="$base_url/$repo_name" - - nix-prefetch-git --quiet --no-deepClone --url "$full_url" --rev "$version" - } - -# -# ─── PARSES GIT REVISION FROM FETCH ───────────────────────────────────────────── -# - - function get_version ( ) { - fetch_info="$1" - - echo "$fetch_info" | jq -r '.rev' - } - -# -# ─── PARSES HASH FROM FETCH ───────────────────────────────────────────────────── -# - - function get_hash ( ) { - fetch_info="$1" - - echo "$fetch_info" | jq -r '.sha256' - } - -# -# ─── PARSES DATE FROM FETCH AND NORMALIZES IT TO NIXPKGS STANDARD ─────────────── -# - - function get_master_date ( ) { - fetch_info="$1" - - full_date=$(echo "$fetch_info" | jq -r '.date') - short_date=$(date -d "$full_date" +"%Y-%m-%d") - - echo "unstable-$short_date" - } - -# -# ─── RETURN NIX EXPRESSION PATH ───────────────────────────────────────────────── -# - - function get_file_path () { - attr="$1" - - nix-instantiate --eval --strict -A "pantheon.$attr.meta.position" | sed -re 's/^"(.*):[0-9]+"$/\1/' - } - -# -# ─── CORRECTS REV VERSION ─────────────────────────────────────────────────────────── -# - - function correct_rev ( ) { - attr="$1" - nix_file="$2" - rev="$3" - - check_pattern1='^\s*rev\s*=\s*"[0-9a-f]{5,40}"' - check_pattern2='^\s*rev\s*=\s*version' - - replace_pattern1='/\brev\b\s*=/ s|\"[0-9a-f]{5,40}\"|'$rev'|' - replace_pattern2='/\brev\b\s*=/ s|version|'$rev'|' - - if [ $(grep -c -P "$check_pattern1" "$nix_file") = 1 ]; then - pattern="$replace_pattern1" - elif [ $(grep -c -P "$check_pattern2" "$nix_file") = 1 ]; then - pattern="$replace_pattern2" - else - fail "Couldn't figure out where out where to patch in the correct version in pantheon.$attr!" - fi - - sed -i.bak "$nix_file" -re "$pattern" - rm -f "$nix_file.bak" - } - - -# -# ─── WHETHER TO UPDATE TO RELEASE OR MASTER ────────────────────────────────── -# - - if [ $release = 1 ]; then - update_to_latest_release $1 $2 - elif [ $master = 1 ]; then - update_to_master $1 $2 - else - exit 1 - fi - -# ──────────────────────────────────────────────────────────────────────────────── -- cgit 1.4.1