-
Notifications
You must be signed in to change notification settings - Fork 32
refactor(default-flatpaks): version 2 (nushell) #336
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 5 commits
Commits
Show all changes
43 commits
Select commit
Hold shift + click to select a range
7e33425
feat: initial draft of default-flatpaks v2
xynydev 851ecfd
chore: streamline logging
xynydev 2cd4439
chore: replace json with yaml as generated config format
xynydev a45fc97
feat: set up groundwork for post boot scripts
xynydev 1415893
feat: rename installations -> configurations, initial implementation …
xynydev da675a4
fix: put executable files into /usr/libexec/
xynydev 6510afa
fix: improve fedora remote detection and removal
xynydev 7185ef5
feat: implement notifications for system flatpak setup
xynydev 28a0238
chore(default-flatpaks): No need to expose `DISPLAY` for notify-send
fiftydinar 92f501a
Merge branch 'main' into nu-flatpaks
fiftydinar 9498a79
chore(default-flatpaks): Update service & add timers to match v1
fiftydinar dd5ae9e
chore(default-flatpaks): Copy & enable timers instead of services
fiftydinar ed42c96
chore(default-flatpaks): Fix typo for copying `user-flatpak-setup` timer
fiftydinar 81d210a
chore(default-flatpaks): Copy post-boot files directly instead of pla…
fiftydinar d83856d
chore(default-flatpaks): Forgot to remove copying step of post-boot f…
fiftydinar 832041a
Merge branch 'main' into nu-flatpaks
fiftydinar 5f13d9d
Merge branch 'main' into nu-flatpaks
xynydev 97fea21
chore: update to be in accordance with cli support for nushell
xynydev 4b23110
feat: allow usage of fedora flatpak remote, remove fedora flatpaks an…
xynydev 2de6e0b
feat: refactor schema to support multiple versions of the module
xynydev ba33ac5
Merge branch 'main' into nu-flatpaks
xynydev 56fa555
docs: separate docs for separate module versions
xynydev fefcde5
fix: copy user-flatpak-setup.timer to correct directory
xynydev 44fb906
chore: correctly document default values in schema
xynydev aa74130
fix: better flathub package checking
xynydev b42d1e4
feat: warn users when giving this module v1 configuration
xynydev 5c032d2
fix: prevent addition of http get result into unavailablePackages list
xynydev ab7db0d
fix: mkdir before cp
xynydev 0083dce
chore: fix () semantics problems highlighted by debugger
xynydev ffd8d5a
feat: bluebuild-flatpak-manager CLI
xynydev 993d5c6
feat: alert user when trying to use module with old configuration
xynydev 8f790b8
docs: write basic documentation page and rewrite example
xynydev 6a5f88b
Merge branch 'main' into nu-flatpaks
xynydev 2439215
fix: attempt to use configFile variable without dollar sign
xynydev 19bd31e
fix: no such things as .configurations
xynydev 41476ba
fix: ensure no empty list is printed
xynydev d1e4864
docs: add a quick note about learning to use the flatpak manager tool
xynydev 188d0e8
fix(schema): distinquish between versions
xynydev 10070cb
fix: add noninteractive flag to flatpak install commands
xynydev 0e173e9
fix: ensure repo to be used is enabled
xynydev 2f99df4
chore: ignore errors in notify wrapper just in case
xynydev f62e37e
chore: add link to announcement
xynydev 2cf31c5
docs: run through languagetool
xynydev File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,83 @@ | ||
| #!/usr/bin/env nu | ||
|
|
||
| const flathubURL = "https://dl.flathub.org/repo/flathub.flatpakrepo" | ||
|
|
||
| const defaultConfiguration = { | ||
| notify: true | ||
| scope: user | ||
| repo: { | ||
| url: $flathubURL | ||
| name: "flathub" | ||
| title: "Flathub" | ||
| } | ||
| install: [] | ||
| } | ||
|
|
||
| const usrSharePath = "/usr/share/bluebuild/default-flatpaks" | ||
| const configPath = $"($usrSharePath)/configuration.yaml" | ||
|
|
||
| def main [configStr: string] { | ||
| let config = $configStr | from yaml | ||
|
|
||
| let configurations = $config.configurations | each {|configuration| | ||
| mut merged = $defaultConfiguration | merge $configuration | ||
| $merged.repo = $defaultConfiguration.repo | merge $merged.repo # make sure all repo properties exist | ||
|
|
||
| print $"Validating configuration of (ansi default_italic)($merged.install | length)(ansi reset) Flatpaks from (ansi default_italic)($merged.repo.title)(ansi reset)" | ||
|
|
||
| if (not ($merged.scope == "system" or $merged.scope == "user")) { | ||
| print $"(ansi red_bold)Scope must be either(ansi reset) (ansi blue_italic)system(ansi reset) (ansi red_bold)or(ansi reset) (ansi blue_italic)user(ansi reset)" | ||
| print $"(ansi blue)Your input:(ansi reset) ($merged.scope)" | ||
| exit 1 | ||
| } | ||
| if (not ($merged.notify == true or $merged.notify == false)) { | ||
| print $"(ansi red_bold)Notify must be either(ansi reset) (ansi blue_italic)true(ansi reset) (ansi red_bold)or(ansi reset) (ansi blue_italic)false(ansi reset)" | ||
| print $"(ansi blue)Your input:(ansi reset) ($merged.notify)" | ||
| exit 1 | ||
| } | ||
| if ($merged.repo.url == $flathubURL) { | ||
| checkFlathub $merged.install | ||
| } | ||
|
|
||
| print $"Validation successful!" | ||
|
|
||
| $merged | ||
| } | ||
|
|
||
|
|
||
| if (not ($configPath | path exists)) { | ||
| mkdir ($configPath | path dirname) | ||
| '[]'| save $configPath | ||
| } | ||
|
|
||
| open $configPath | ||
| | append $configurations | ||
| | to yaml | save -f $configPath | ||
|
|
||
| print $"(ansi green_bold)Successfully generated following configurations:(ansi reset)" | ||
| print ($configurations | to yaml) | ||
|
|
||
| print "Setting up Flatpak setup services..." | ||
|
|
||
| cp -r ($"($env.MODULE_DIRECTORY)/default-flatpaks/post-boot/*" | into glob) $usrSharePath | ||
|
|
||
| cp $"($usrSharePath)/system-flatpak-setup.service" /usr/lib/systemd/system/system-flatpak-setup.service | ||
| cp $"($usrSharePath)/user-flatpak-setup.service" /usr/lib/systemd/user/user-flatpak-setup.service | ||
| systemctl enable --force system-flatpak-setup.service | ||
| systemctl enable --force --global user-flatpak-setup.service | ||
|
|
||
| chmod +x $"($usrSharePath)/system-flatpak-setup" | ||
| chmod +x $"($usrSharePath)/user-flatpak-setup" | ||
| } | ||
|
|
||
| def checkFlathub [packages: list<string>] { | ||
| print "Checking if configured packages exist on Flathub..." | ||
| $packages | each { |package| | ||
| try { | ||
| let _ = http get $"https://flathub.org/apps/($package)" | ||
| } catch { | ||
| print $"(ansi red_bold)Package(ansi reset) (ansi default_italic)($package)(ansi reset) (ansi red_bold)does not exist on Flathub, which is the specified repository for it to be installed from.(ansi reset)" | ||
| exit 1 | ||
| } | ||
| } | ||
| } | ||
41 changes: 41 additions & 0 deletions
41
modules/default-flatpaks/v2/post-boot/system-flatpak-setup
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| #!/usr/bin/env nu | ||
|
|
||
| const usrSharePath = "/usr/share/bluebuild/default-flatpaks" | ||
| const configPath = $"($usrSharePath)/configuration.yaml" | ||
|
|
||
| def main [] { | ||
| let configFile = open $configPath | ||
|
|
||
| if (flatpak remotes | str contains fedora) { | ||
|
fiftydinar marked this conversation as resolved.
Outdated
|
||
| /usr/bin/gnome-software --quit | ||
| /usr/lib/fedora-third-party/fedora-third-party-opt-out | ||
| /usr/bin/fedora-third-party disable | ||
|
xynydev marked this conversation as resolved.
|
||
|
|
||
| flatpak remote-delete --system fedora --force | ||
| flatpak remote-delete --system fedora-testing --force | ||
|
|
||
| # TODO remove Fedora Flatpaks | ||
| } | ||
|
|
||
| $configFile.configurations | where scope == system | each { |config| | ||
| flatpak remote-add --system --if-not-exists $config.repo.name $config.repo.url --title $config.repo.title | ||
|
|
||
| if ($config.notify) { | ||
| # TODO implement notification sending | ||
| # (notify-send | ||
| # --app-name "Automatic Flatpak Installation Service" | ||
| # $"Starting automated installation of ($config.install | length) Flatpak\(s) from ($config.repo.title)..." | ||
| # ) | ||
| } | ||
|
|
||
| flatpak install --system $config.repo.name ...$config.install | ||
|
|
||
| if ($config.notify) { | ||
| # (notify-send | ||
| # --app-name "Automatic Flatpak Installation Service" | ||
| # $"Finished automated installation of ($config.install | length) Flatpak\(s) from ($config.repo.title)!" | ||
| # ($config.install | str join ', ') | ||
| # ) | ||
| } | ||
| } | ||
| } | ||
14 changes: 14 additions & 0 deletions
14
modules/default-flatpaks/v2/post-boot/system-flatpak-setup.service
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| [Unit] | ||
| Description=Manage system flatpaks | ||
| Wants=network-online.target | ||
| After=network-online.target | ||
|
|
||
| [Service] | ||
| Type=oneshot | ||
| ExecStart=/usr/share/bluebuild/default-flatpaks/system-flatpak-setup | ||
| Restart=on-failure | ||
| RestartSec=30 | ||
| StartLimitInterval=0 | ||
|
|
||
| [Install] | ||
| WantedBy=multi-user.target |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| #!/usr/bin/env nu | ||
|
|
||
| const usrSharePath = "/usr/share/bluebuild/default-flatpaks" | ||
| const configPath = $"($usrSharePath)/configuration.yaml" | ||
|
|
||
| def main [] { | ||
| let configFile = open $configPath | ||
|
|
||
| if (flatpak remotes | str contains fedora) { | ||
|
fiftydinar marked this conversation as resolved.
Outdated
|
||
| flatpak remote-delete --user fedora --force | ||
| flatpak remote-delete --user fedora-testing --force | ||
| } | ||
|
|
||
| $configFile.configurations | where scope == user | each { |config| | ||
| flatpak remote-add --user --if-not-exists $config.repo.name $config.repo.url --title $config.repo.title | ||
|
|
||
| if ($config.notify) { | ||
| (notify-send | ||
| --app-name "Automatic Flatpak Installation Service" | ||
| $"Starting automated installation of ($config.install | length) Flatpak\(s) from ($config.repo.title)..." | ||
| ) | ||
| } | ||
|
|
||
| flatpak install --user $config.repo.name ...$config.install | ||
|
|
||
| if ($config.notify) { | ||
| (notify-send | ||
| --app-name "Automatic Flatpak Installation Service" | ||
| $"Finished automated installation of ($config.install | length) Flatpak\(s) from ($config.repo.title)!" | ||
| ($config.install | str join ', ') | ||
| ) | ||
| } | ||
| } | ||
| } | ||
14 changes: 14 additions & 0 deletions
14
modules/default-flatpaks/v2/post-boot/user-flatpak-setup.service
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| [Unit] | ||
| Description=Configure Flatpaks for current user | ||
| Wants=network-online.target | ||
| After=system-flatpak-setup.service | ||
|
|
||
| [Service] | ||
| Type=simple | ||
| ExecStart=/usr/share/bluebuild/default-flatpaks/user-flatpak-setup | ||
| Restart=on-failure | ||
| RestartSec=30 | ||
| StartLimitInterval=0 | ||
|
|
||
| [Install] | ||
| WantedBy=default.target |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.