67 Commits

Author SHA1 Message Date
4586c00f4e ci: bump cachix/install-nix-action 2023-03-06 09:49:33 +11:00
162045b8d7 default: add unit packages (#26) 2023-03-06 09:40:35 +11:00
fc1f1b328b ci: update dependabot commit format 2023-02-28 09:38:36 +11:00
4be1dd48ce flake: update inputs (#25)
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/f5dad40450d272a1ea2413f4a67ac08760649e89' (2023-02-22)
  → 'github:NixOS/nixpkgs/9952d6bc395f5841262b006fbace8dd7e143b634' (2023-02-26)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-28 09:34:46 +11:00
8bbc8afb15 docs: update badge path 2023-02-23 13:47:07 +11:00
6faef6e0ac go-qt: bump qt version 2023-02-23 13:39:21 +11:00
29516dc3d8 ci: allow style checks to fail 2023-02-23 13:37:14 +11:00
a2f24f4591 flake: update inputs (#24)
Flake lock file updates:

• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/bd4dffcdb7c577d74745bd1eff6230172bd176d5' (2022-04-17)
  → 'github:NixOS/nixpkgs/f5dad40450d272a1ea2413f4a67ac08760649e89' (2023-02-22)

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2023-02-23 13:23:56 +11:00
8f34b7a6fa ci: adjust update job messages 2023-02-23 13:23:04 +11:00
5410671050 all: embrace unit packages where possible 2023-02-23 11:46:04 +11:00
e053da240d protonmail-bridge: bump qt version 2023-02-23 11:10:17 +11:00
d0e26ddb24 ci: fix update job definition 2023-02-23 11:06:35 +11:00
2efddce7c5 ci: fix check job definition 2023-02-23 11:01:35 +11:00
3d8a9cfa9a ci: add flake input job 2023-02-23 10:59:58 +11:00
782b05c59e ci: run checks 2023-02-23 10:51:53 +11:00
67adbe7089 ci: fix NUR update endpoint 2023-02-23 10:50:16 +11:00
5399368853 ci: disabled scheduled build
Since we now pin nixpkgs to the same as the flake input, builds are
deterministic from run to run and there's no point running when the
version hasn't changed.
2023-02-23 10:24:59 +11:00
ec62dc7950 ci: convert build action to full flakes 2023-02-23 10:24:19 +11:00
f20db9aa1b ci: pin nixpkgs to locked version instead of <nixpkgs> 2023-02-23 10:24:19 +11:00
b21cbda697 flake: refactor 2023-02-23 09:49:36 +11:00
ada5f02f08 go-qt: mark as broken 2023-02-14 10:19:47 +11:00
c387334fa5 build(deps): bump cachix/install-nix-action from 18 to 19 (#22)
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 18 to 19.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v18...v19)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-13 16:59:32 +11:00
57711572f6 build(deps): bump cachix/cachix-action from 11 to 12 (#21)
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 11 to 12.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v11...v12)

---
updated-dependencies:
- dependency-name: cachix/cachix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-31 16:19:02 +11:00
a83dcb3ed5 all: apply deadnix 2022-10-26 10:53:36 +11:00
a70a0e914b all: apply nixpkgs-fmt 2022-10-26 10:53:36 +11:00
46b331a413 atlauncher: add opengl to library path 2022-10-18 19:37:22 +11:00
b8e4f0929a psst: 20210122.gec114ac -> 20221012.d70ed81 2022-10-18 17:00:13 +11:00
85aebac63d atlauncher: init at 3.4.20.2 2022-10-18 16:32:10 +11:00
0254963dec build(deps): bump cachix/cachix-action from 10 to 11 (#19)
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from 10 to 11.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v10...v11)

---
updated-dependencies:
- dependency-name: cachix/cachix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-18 10:00:01 +11:00
0b3995a7e3 build(deps): bump cachix/install-nix-action from 17 to 18 (#20)
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 17 to 18.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v17...v18)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-10-18 09:59:54 +11:00
7414d45aa4 polybar: update patch 2022-04-20 09:42:36 +10:00
ee0cf26f5b polybar: update patch 2022-04-20 09:42:28 +10:00
658b1fa08c ci: cachix/install-nix-action: 16 -> 17
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 16 to 17.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v16...v17)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-12 14:46:02 +10:00
fc33441151 ci: bump actions/checkout: 2.4.0 -> 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.4.0 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2.4.0...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-05 09:29:22 +10:00
0bb9971c38 psst: refactor for makeDesktopItem changes 2022-03-01 11:16:32 +11:00
1530197670 flake: update inputs 2022-03-01 11:15:00 +11:00
2c575d6596 spotify-ripper: 20161231.gd046419 -> 20210724.5bfd3f7
pytest-forked removed support for python2 in their 1.4.0 release,
breaking the pinned version of mutagen that the old version of
spotify-ripper requires. We rebase onto another fork that has updated it
a bit, adding support for python3 and unpinning their dependencies.
2022-01-25 10:18:28 +11:00
5648d1d005 ci: cachix/install-nix-action: 15 -> 16
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 15 to 16.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v15...v16)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-04 19:12:53 +11:00
d97d0fc259 ci: cachix/install-nix-action: 14 -> 15
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 14 to 15.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v14...v15)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-15 20:34:24 +11:00
f5adcca761 modules: remove deprecated literalExample 2021-11-13 19:15:05 +11:00
6d3581ac49 flake: add singular nixosModule output 2021-11-13 19:05:18 +11:00
94be83c704 modules/dunst: init 2021-11-13 18:52:41 +11:00
fe773352f5 flake: reorganise, remove flake-utils 2021-11-13 18:52:08 +11:00
311fb3ff98 protonmail-bridge: 1.5.6 -> 1.8.10 2021-11-11 22:52:27 +11:00
260db819e7 protonmail-bridge: update build args 2021-11-11 22:52:27 +11:00
ba5c904cb7 flake: update inputs 2021-11-11 22:52:27 +11:00
f616baa7b2 ci: merge workflow changes from upstream 2021-11-11 22:52:22 +11:00
d1ad137626 ci: actions/checkout: 2.3.4 -> 2.4.0
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.4 to 2.4.0.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2.3.4...v2.4.0)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-11-08 21:03:23 +11:00
0335b240b6 ytarchive: init at 0.2.2 2021-10-02 13:44:16 +10:00
7edffe7e56 ci: cachix/install-nix-action: 13 -> 14
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from 13 to 14.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v13...v14)

---
updated-dependencies:
- dependency-name: cachix/install-nix-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-16 17:20:35 +10:00
f218f59184 alacritty-ligatures: mark as build locally
Sick of it producing issues that don't crop up building localling and
breaking CI.
2021-06-12 14:57:11 +10:00
1b190f8a81 cardboard: mark as broken 2021-06-12 14:36:39 +10:00
f7f4206afa alacritty-ligatures: refactor into standalone file 2021-06-12 14:36:39 +10:00
ca67f392b5 ci: cachix/cachix-action: v9 -> v10
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from v9 to v10.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v9...73e75d1a0cd4330597a571e8f9dedb41faa2fc4e)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-12 11:11:23 +10:00
3ce504e445 ci: bump cachix/cachix-action from v8 to v9 (#9)
Bumps [cachix/cachix-action](https://github.com/cachix/cachix-action) from v8 to v9.
- [Release notes](https://github.com/cachix/cachix-action/releases)
- [Commits](https://github.com/cachix/cachix-action/compare/v8...2689c27f57daedc905895d92ad18fe5ce470df9e)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-12 11:11:23 +10:00
58abb0d562 ci: bump cachix/install-nix-action from v12 to v13 (#10)
Bumps [cachix/install-nix-action](https://github.com/cachix/install-nix-action) from v12 to v13.
- [Release notes](https://github.com/cachix/install-nix-action/releases)
- [Commits](https://github.com/cachix/install-nix-action/compare/v12...8d6d5e949675fbadb765c6b1a975047fa5f09b27)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-12 11:11:23 +10:00
2cf1b51843 flake: update inputs 2021-06-12 11:11:23 +10:00
d8ae11352e alacritty-ligatures: remove terminfo output 2021-06-12 11:11:23 +10:00
7078ef0677 ci: disable nixos-unstable channel in matrix 2021-06-12 11:11:23 +10:00
b2c0121005 alacritty-ligatures: 0.7.1.20210107.gada2680 -> 0.7.2.20210209.g3ed0430 2021-06-12 11:11:23 +10:00
cf95fb9600 radeon-profile-daemon: add wrapQtAppsHook
Required as part of the latest staging-next commit set to Nixpkgs [1].

Note that this breaks builds on all current non-unstable Nixpkgs
branches (but as the repository notes, they are not supported anyway).

[1]: 02924cf951/doc/languages-frameworks/qt.section.md
2021-06-12 11:11:23 +10:00
3c27e38073 flake: update inputs 2021-02-20 21:26:04 +11:00
86f1713639 alacritty-ligatures: fix rpath flag 2021-02-05 10:21:00 +11:00
3dbd760954 flake: update inputs 2021-02-01 08:50:19 +11:00
8b290acc50 protonmail-bridge: separate builder into new file 2021-02-01 08:50:19 +11:00
b960c361a9 treewide: stdenv.lib -> lib
https://github.com/NixOS/nixpkgs/issues/108938
2021-02-01 08:50:19 +11:00
0c87ddac9e alacritty-ligatures: fix commit hash 2021-01-31 18:12:20 +11:00
50 changed files with 670 additions and 95617 deletions

View File

@ -4,3 +4,5 @@ updates:
directory: "/"
schedule:
interval: "weekly"
- commit-message:
prefix: "ci"

View File

@ -1,14 +1,26 @@
name: "Build and populate cache"
name: "CI"
on:
pull_request:
push:
schedule:
# rebuild everyday at 6:50
# TIP: Choose a random time here so not all repositories are build at once:
# https://www.random.org/clock-times/?num=1&earliest=01%3A00&latest=08%3A00&interval=5&format=html&rnd=new
- cron: '50 6 * * *'
jobs:
tests:
checks:
strategy:
matrix:
check:
- nixpkgs-fmt
- deadnix
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: cachix/install-nix-action@v20
- name: Check ${{ matrix.check }}
# Depends on nixos/nix#7759 to simply `nix flake check`
run: nix run .#checks.$(nix eval --raw --impure --expr "builtins.currentSystem").${{ matrix.check }}
continue-on-error: true
build-and-update:
strategy:
matrix:
# Set this to notify the global nur package registry that changes are
@ -28,30 +40,22 @@ jobs:
# in your repository settings in Github found at https://github.com/<your_githubname>/nur-packages/settings/secrets
cachixName:
- xeals
nixPath:
- nixpkgs=channel:nixos-unstable
- nixpkgs=channel:nixpkgs-unstable
# Disable due to buildGoModule and buildRustPackage
# - nixpkgs=channel:nixos-20.03
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2.3.4
uses: actions/checkout@v3
- name: Install nix
uses: cachix/install-nix-action@v12
with:
nix_path: "${{ matrix.nixPath }}"
uses: cachix/install-nix-action@v20
- name: Show nixpkgs version
run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version'
run: nix eval --impure --expr '(import ./flake-compat.nix { src = ./.; }).lib.version'
- name: Setup cachix
uses: cachix/cachix-action@v8
uses: cachix/cachix-action@v12
if: ${{ matrix.cachixName != '<YOUR_CACHIX_NAME>' }}
with:
name: ${{ matrix.cachixName }}
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- name: Build nix packages
# TODO switch to default nixpkgs channel once nix-build-uncached 1.0.0 is in stable
run: nix run -I 'nixpkgs=channel:nixos-unstable' nixpkgs.nix-build-uncached -c nix-build-uncached ci.nix -A cacheOutputs
run: nix develop .#ci -c nix-build-uncached ci.nix -A cacheOutputs
- name: Trigger NUR update
if: ${{ matrix.nurRepo != '<YOUR_REPO_NAME>' }}
run: curl -XPOST "https://nur-update.herokuapp.com/update?repo=${{ matrix.nurRepo }}"
run: curl -XPOST "https://nur-update.nix-community.org/update?repo=${{ matrix.nurRepo }}"

24
.github/workflows/update.yml vendored Normal file
View File

@ -0,0 +1,24 @@
name: "Update flake inputs"
on:
workflow_dispatch:
schedule:
# bump weekly at 6:50
- cron: '50 6 * * 1'
jobs:
update-flake:
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- name: Checkout repository
uses: actions/checkout@v3
- uses: cachix/install-nix-action@v20
with:
extra_nix_config: |
access-tokens = github.com=${{ secrets.GITHUB_TOKEN }}
- name: "flake: update inputs"
uses: DeterminateSystems/update-flake-lock@v16
with:
pr-title: "flake: update inputs"
pr-labels: dependencies
commit-msg: "flake: update inputs"

View File

@ -2,7 +2,7 @@
**My personal [NUR](https://github.com/nix-community/NUR) repository**
[![Build and populate cache](https://github.com/xeals/nur-packages/workflows/Build%20and%20populate%20cache/badge.svg)](https://github.com/xeals/nur-packages/actions) [![Cachix Cache](https://img.shields.io/badge/cachix-xeals-blue.svg)](https://xeals.cachix.org)
[![CI](https://github.com/xeals/nur-packages/actions/workflows/build.yml/badge.svg)](https://github.com/xeals/nur-packages/actions) [![Cachix Cache](https://img.shields.io/badge/cachix-xeals-blue.svg)](https://xeals.cachix.org)
## Noteworthy packages

View File

@ -7,7 +7,6 @@ import re
import requests
import subprocess as sp
import sys
import unicodedata
import urllib
from lxml import etree
@ -28,15 +27,10 @@ PRODUCT_CODE = {
}
PACKAGE_RE = re.compile("[^0-9A-Za-z._-]")
HTML_RE = re.compile("<[^>]+/?>")
def to_slug(name):
slug = name.replace(" ", "-").lstrip(".")
for char in ",/;'\\<>:\"|!@#$%^&*()":
slug = slug.replace(char, "")
slug = unicodedata.normalize("NFD", slug).encode("ascii", "ignore").decode("utf-8")
return slug
@ -65,15 +59,18 @@ class Build:
return self.code + "-" + self.version
PACKAGE_RE = re.compile("[^0-9A-Za-z._-]")
HTML_RE = re.compile("<[^>]+/?>")
class Plugin:
def __init__(self, data, build, category=None):
self.build = build
def __init__(self, data, category=None):
self.category = category
self.name = data.find("name").text
self.xml_id = data.find("id").text
self.id = data.find("id").text
self._description = data.find("description").text
self.url = data.get("url") or data.find("vendor").get("url")
self.version = data.find("version").text.replace(" ", "-")
self.version = data.find("version").text
self.slug = to_slug(self.name)
self.orig_slug = self.slug
@ -87,7 +84,7 @@ class Plugin:
def description(self):
return re.sub(HTML_RE, "", self._description or "").strip()
def get_download_url(self, deref=True):
def download_url(self, build, deref=True):
"""
Provides the ZIP download URL for this plugin.
@ -97,52 +94,18 @@ class Plugin:
(which it is by default). However, this comes at the cost of requiring
an HTTP request.
"""
id = urllib.parse.quote(self.xml_id)
url = f"https://plugins.jetbrains.com/pluginManager?action=download&id={id}&build={self.build}"
id = urllib.parse.quote(self.id)
url = f"https://plugins.jetbrains.com/pluginManager?action=download&id={id}&build={build}"
if deref:
res = requests.get(url, allow_redirects=not deref)
url = "https://plugins.jetbrains.com" + re.sub(
"\?.*$", "", res.headers["location"]
)
self.jetbrains_url = url
if url.endswith("external"):
res = requests.get(url, allow_redirects=not deref)
url = res.headers["location"]
return url
def fetch_external(self, update_only=False):
"""
Performs network calls to update this plugin with information that
cannot be performed from the public XML API.
Additional attributes provided after this method:
download_url : the plugin download location
sha : the SHA256 of the download source
If update_only is true, a full update is performed, also providing:
id : the plugin integer ID
license_url : the plugin license URL
license : the Nixpkgs license attribute
"""
self.download_url = self.get_download_url(deref=True)
self.sha = prefetch(self, self.build, self.download_url)
if update_only:
return
self.id = self.jetbrains_url.split("/")[4]
res = requests.get(
f"https://plugins.jetbrains.com/api/plugins/{self.id}"
).json()
try:
self.url = self.url or res["urls"]["sourceCodeUrl"]
except KeyError:
pass
self.license_url = res["urls"]["licenseUrl"]
self.license = translate_license(self.license_url, fallback=self.url)
def packagename(self):
slug = re.sub(PACKAGE_RE, "", self.slug.lower()).replace(".", "-")
if slug[0] in "1234567890":
@ -165,16 +128,16 @@ def list_plugins(build):
https://plugins.jetbrains.com/docs/marketplace/plugins-list.html
"""
resp = requests.get(f"https://plugins.jetbrains.com/plugins/list/?build={build}")
return parse_repository(resp.content, build)
return parse_repository(resp.content)
def parse_repository(content, build):
def parse_repository(content):
tree = etree.XML(content)
plugins = []
for cat in tree.findall("category"):
cat_name = cat.get("name")
for plugin in cat.findall("idea-plugin"):
plugins.append(Plugin(plugin, build, cat_name))
plugins.append(Plugin(plugin, cat_name))
return plugins
@ -192,101 +155,28 @@ def deduplicate(plugins):
def prefetch(plugin, build, url=None):
if not url:
url = plugin.download_url or plugin.get_download_url()
url = plugin.download_url(build)
res = sp.run(
["nix-prefetch-url", "--name", plugin.filename(), url], capture_output=True,
)
if not res.stdout:
raise IOError(
f"nix-prefetch-url {plugin} failed: {res.stderr.decode('unicode-escape')}"
)
return res.stdout.decode("unicode-escape").strip()
raise IOError(f"nix-prefetch-url {plugin} failed: {res.stderr.decode('utf-8')}")
return res.stdout.decode("utf-8").strip()
def custom_license(short, full, url, free=False):
return f"""{{
shortName = "{short}";
fullName = "{full}";
url = "{url}";
free = {"true" if free else "false"};
}}"""
def arr(url):
return custom_license("allrightsreserved", "All Rights Reserved", url)
def translate_license(url, fallback=""):
license = url.lower()
if license == "":
print(f"no license for {fallback}", file=sys.stderr)
return arr(fallback)
# Common (license) hosts
elif "github.com" in license or "raw.githubusercontent.com" in license:
try:
owner, repo = url.split("/")[3:5]
except ValueError:
print(f"no license metadata for {url}", file=sys.stderr)
return arr(url)
res = requests.get(
f"https://api.github.com/repos/{owner}/{repo}",
headers={"Accept": "application/vnd.github.v3+json"},
).json()
try:
return translate_license(res["license"]["key"])
except (KeyError, TypeError):
print(f"no license metadata for {url}", file=sys.stderr)
return arr(url)
elif "opensource.org" in license:
os_license = license.rstrip("/").split("/")[-1]
if os_license == "alphabetical":
# Doesn't actually have a license, it's the listing page
return arr(fallback)
return translate_license(os_license)
# Actual translations now
elif "apache.org/licenses/license-2.0" in license or "apache-2.0" in license:
return "lib.licenses.asl20"
elif "artistic-2" in license:
return "lib.licenses.artistic2"
elif "bsd-2-clause" in license:
return "lib.licenses.bsd2"
elif "bsd-3-clause" in license:
return "lib.licenses.bsd3"
elif "eclipse.org/legal/epl-2.0" in license:
return "lib.licenses.epl20"
elif "gpl-3.0" in license:
return "lib.licenses.gpl3Only"
elif "mit" in license:
return "lib.licenses.mit"
elif "osd" in license:
return "lib.licenses.free"
elif "other" == license:
return arr(fallback)
# Custom known licenses
elif "plugins.jetbrains.com/legal/terms-of-use" in license:
return custom_license(
"jetbrains", "Jetbrains Plugin Marketplace Agreement", license
)
# Fallback
else:
print(f"unrecognised license {license}", file=sys.stderr)
return arr(license)
def write_packages(outfile, plugins):
builder = plugins[0].build.builder() or ""
def write_packages(outfile, plugins, build):
builder = build.builder()
outfile.write("{callPackage}:\n{")
for i, plugin in enumerate(plugins):
print(f"{i:04} {plugin.packagename()}")
for plugin in plugins:
src_url = plugin.download_url(build, deref=True)
src_ext = os.path.splitext(src_url)[-1]
try:
plugin.fetch_external()
sha = prefetch(plugin, build, src_url)
except IOError as e:
print(e, file=sys.stderr)
continue
src_url = plugin.download_url
src_ext = os.path.splitext(src_url)[-1]
sha = plugin.sha
build_inputs = []
if src_ext == ".zip":
@ -296,7 +186,7 @@ def write_packages(outfile, plugins):
# internal and external plugins; need to find some way to resolve them
requires = []
# TODO: Licenses are actually on the website, but aren't provided in the API
license = plugin.license
license = "lib.licenses.free"
call_args = [str(builder), "fetchurl", "lib"]
for binput in build_inputs:
@ -307,7 +197,7 @@ def write_packages(outfile, plugins):
{plugin.packagename()} = callPackage ({{ {", ".join(sorted(call_args))} }}: {builder} {{
pname = "{plugin.slug}";
plugname = "{plugin.name}";
plugid = "{plugin.xml_id}";
plugid = "{plugin.id}";
version = "{plugin.version}";
src = fetchurl {{
url = "{src_url}";
@ -337,7 +227,6 @@ def main():
parser.add_argument(
"-o", "--out", type=str, help="File to write plugins to",
)
parser.add_argument("-O", "--offset", type=int, help="Offset number of packages")
parser.add_argument(
"package",
metavar="PACKAGE",
@ -352,17 +241,15 @@ def main():
plugins.sort(key=lambda p: p.slug)
deduplicate(plugins)
if args.offset:
plugins = plugins[args.offset :]
if args.number:
plugins = plugins[: args.number]
print(f"Generating packages for {len(plugins)} plugins", file=sys.stderr)
if not args.out:
write_packages(sys.stdout, plugins)
write_packages(sys.stdout, plugins, build)
else:
with open(args.out, "w") as f:
write_packages(f, plugins)
write_packages(f, plugins, build)
main()

10
callUnitRoot.nix Normal file
View File

@ -0,0 +1,10 @@
{ pkgs, lib ? pkgs.lib, unitDir ? "unit", packageFun ? "package.nix", root ? "${./pkgs}/${unitDir}" }:
let
shards = lib.attrNames (builtins.readDir root);
namesForShard = shard: lib.mapAttrs'
(name: _: { inherit name; value = "${root}/${shard}/${name}"; })
(builtins.readDir "${root}/${shard}");
namesToPath = lib.foldl' lib.recursiveUpdate { } (map namesForShard shards);
units = lib.mapAttrs (_: path: pkgs.callPackage "${path}/${packageFun}" { }) namesToPath;
in
units

16
ci.nix
View File

@ -9,7 +9,7 @@
# then your CI will be able to build and cache only those packages for
# which this is possible.
{ pkgs ? import <nixpkgs> {} }:
{ pkgs ? import ./flake-compat.nix { src = ./.; } }:
with builtins;
@ -29,10 +29,10 @@ let
let
f = p:
if shouldRecurseForDerivations p then flattenPkgs p
else if isDerivation p then [p]
else [];
else if isDerivation p then [ p ]
else [ ];
in
concatMap f (attrValues s);
concatMap f (attrValues s);
outputsOf = p: map (o: p.${o}) p.outputs;
@ -40,10 +40,10 @@ let
nurPkgs =
flattenPkgs
(listToAttrs
(map (n: nameValuePair n nurAttrs.${n})
(filter (n: !isReserved n)
(attrNames nurAttrs))));
(listToAttrs
(map (n: nameValuePair n nurAttrs.${n})
(filter (n: !isReserved n)
(attrNames nurAttrs))));
in

View File

@ -9,9 +9,9 @@
{ pkgs ? import <nixpkgs> { } }:
import ./pkgs/top-level/all-packages.nix { inherit pkgs; }
// {
// {
# The `lib`, `modules`, and `overlay` names are special
lib = import ./lib { inherit pkgs; }; # functions
modules = import ./modules; # NixOS modules
overlays = import ./overlays; # nixpkgs overlays
}
} // import ./callUnitRoot.nix { inherit pkgs; }

12
flake-compat.nix Normal file
View File

@ -0,0 +1,12 @@
{ src, system ? builtins.currentSystem or "unknown-system" }:
let
lockFilePath = "${src}/flake.lock";
lockFile = builtins.fromJSON (builtins.readFile lockFilePath);
nixpkgs = lockFile.nodes.nixpkgs.locked;
tarball = fetchTarball {
url = "https://github.com/${nixpkgs.owner}/${nixpkgs.repo}/archive/${nixpkgs.rev}.zip";
sha256 = nixpkgs.narHash;
};
in
import tarball { inherit system; }

12
flake.lock generated
View File

@ -2,11 +2,11 @@
"nodes": {
"flake-utils": {
"locked": {
"lastModified": 1605370193,
"narHash": "sha256-YyMTf3URDL/otKdKgtoMChu4vfVL3vCMkRqpGifhUn0=",
"lastModified": 1676283394,
"narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "5021eac20303a61fafe17224c087f5519baed54d",
"rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073",
"type": "github"
},
"original": {
@ -17,11 +17,11 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1611414562,
"narHash": "sha256-u002KfYA7Uk3vffnnmLz88BmxOzixYFdh+8II6ZT+Kg=",
"lastModified": 1677383253,
"narHash": "sha256-UfpzWfSxkfXHnb4boXZNaKsAcUrZT9Hw+tao1oZxd08=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "9d6fd2ba135c5b5c85c3332604d39b43e93b8298",
"rev": "9952d6bc395f5841262b006fbace8dd7e143b634",
"type": "github"
},
"original": {

View File

@ -1,47 +1,64 @@
{
description = "xeals's flake";
description = "xeals's Nix repository";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
flake-utils.url = "github:numtide/flake-utils";
};
inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
inputs.flake-utils.url = "github:numtide/flake-utils";
outputs = { self, nixpkgs, flake-utils }:
let
inherit (flake-utils.lib) eachDefaultSystem flattenTree;
inherit (nixpkgs.lib.attrsets) filterAttrs mapAttrs;
inherit (nixpkgs) lib;
inherit (flake-utils.lib) mkApp;
in
{
nixosModules = mapAttrs (_: path: import path) (import ./modules);
flake-utils.lib.eachDefaultSystem
(system:
let
pkgs = import nixpkgs { inherit system; };
in
{
# nixos/rfcs#140
# Only produces the package set of the proposed functionality.
# Unstable names are variables.
packages =
let
legacyPackages = import ./pkgs/top-level/all-packages.nix { inherit pkgs; };
onlyAvailable = lib.filterAttrs (_: drv: builtins.elem system (drv.meta.platforms or [ ]));
in
onlyAvailable (legacyPackages // import ./callUnitRoot.nix { inherit pkgs; });
checks = {
nixpkgs-fmt = pkgs.writeShellScriptBin "nixpkgs-fmt-check" ''
${pkgs.nixpkgs-fmt}/bin/nixpkgs-fmt --check .
'';
deadnix = pkgs.writeShellScriptBin "deadnix-check" ''
${pkgs.deadnix}/bin/deadnix --fail .
'';
};
devShells.ci = pkgs.mkShellNoCC {
buildInputs = [ pkgs.nix-build-uncached ];
};
apps = {
alacritty = mkApp { drv = pkgs.alacritty-ligatures; exePath = "/bin/alacritty"; };
protonmail-bridge = mkApp { drv = pkgs.protonmail-bridge; };
protonmail-bridge-headless = mkApp { drv = pkgs.protonmail-bridge; };
psst-cli = mkApp { drv = pkgs.psst; exePath = "/bin/psst-cli"; };
psst-gui = mkApp { drv = pkgs.psst; exePath = "/bin/psst-gui"; };
samrewritten = mkApp { drv = pkgs.samrewritten; };
spotify-ripper = mkApp { drv = pkgs.spotify-ripper; };
};
})
// {
nixosModules = lib.mapAttrs (_: path: import path) (import ./modules) // {
default = {
imports = lib.attrValues self.nixosModules;
};
};
overlays = import ./overlays // {
pkgs = final: prev: import ./pkgs/top-level/all-packages.nix { pkgs = prev; };
pkgs = _: prev: import ./pkgs/top-level/all-packages.nix { pkgs = prev; };
default = _: _: { xeals = nixpkgs.lib.composeExtensions self.overlays.pkgs; };
};
overlay = final: prev: {
xeals = nixpkgs.lib.composeExtensions self.overlays.pkgs;
};
} // eachDefaultSystem (system:
let
pkgs = nixpkgs.legacyPackages.${system};
xPkgs = import ./pkgs/top-level/all-packages.nix { inherit pkgs; };
mkApp = opts: { type = "app"; } // opts;
in
rec {
packages = filterAttrs
(attr: drv: builtins.elem system (drv.meta.platforms or [ ]))
(flattenTree xPkgs);
apps = flattenTree {
alacritty = mkApp { program = "${packages.alacritty-ligatures}/bin/alacritty"; };
protonmail-bridge = mkApp { program = "${packages.protonmail-bridge}/bin/protonmail-bridge"; };
protonmail-bridge-headless = mkApp { program = "${packages.protonmail-bridge}/bin/protonmail-bridge"; };
psst = {
cli = mkApp { program = "${packages.psst}/bin/psst-cli"; };
gui = mkApp { program = "${packages.psst}/bin/psst-gui"; };
};
samrewritten = mkApp { program = "${packages.samrewritten}/bin/samrewritten"; };
spotify-ripper = mkApp { program = "${packages.spotify-ripper}/bin/spotify-ripper"; };
};
});
};
}

View File

@ -2,6 +2,7 @@
amdgpu-common = ./services/hardware/amdgpu-common.nix;
amdgpu-fan = ./services/hardware/amdgpu-fan.nix;
amdgpu-pwm = ./services/hardware/amdgpu-pwm.nix;
dunst = ./services/x11/dunst.nix;
radeon-profile-daemon = ./services/hardware/radeon-profile-daemon.nix;
}

View File

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }:
{ lib, ... }:
with lib;
@ -7,7 +7,7 @@ with lib;
cards = mkOption {
type = types.listOf types.str;
default = [ "card0" ];
example = literalExample ''[ "card0" ]'';
example = [ "card0" "card1" ];
description = ''
A list of cards to enable fan configuration for. The identifiers for
each device can be found in /sys/class/drm/ as card0, card1, etc.

View File

@ -33,14 +33,12 @@ in
[ 75 89 ]
[ 80 100 ]
];
example = literalExample ''
[
[ 0 0 ]
[ 40 30 ]
[ 60 50 ]
[ 80 100 ]
]
'';
example = [
[ 0 0 ]
[ 40 30 ]
[ 60 50 ]
[ 80 100 ]
];
description = ''
A list of temperature-fan speed pairs. The temperature is specified in
degrees celcius, and speed is specified in %.

View File

@ -1,4 +1,4 @@
{ config, lib, pkgs, ... }:
{ config, lib, ... }:
with lib;

View File

@ -0,0 +1,68 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.dunst;
in
{
options.services.dunst = {
enable = mkEnableOption "dunst";
package = mkOption {
type = types.package;
default = pkgs.dunst;
};
settings = mkOption {
type = types.nullOr types.attrs;
default = null;
description = ''
Configuration set alternative to <literal>configFile</literal>.
'';
example = {
global = {
monitor = 0;
follow = "none";
};
};
};
configFile = mkOption {
type = types.nullOr types.path;
default = null;
description = "Path to dunstrc configuration file.";
};
};
config = mkIf cfg.enable {
assertions = [
{
assertion = !(cfg.settings != null && cfg.configFile != null);
message = "only one of services.dunst.settings or .configFile may be specified";
}
];
environment.systemPackages = [ (getOutput "man" cfg.package) ];
systemd.user.services.dunst = {
description = "Dunst notification daemon";
documentation = [ "man:dunst(1)" ];
after = [ "graphical-session-pre.target" ];
partOf = [ "graphical-session.target" ];
serviceConfig = {
Type = "dbus";
BusName = "org.freedesktop.Notifications";
ExecStart =
let
config =
if (cfg.settings != null)
then pkgs.writeText "dunstrc" (generators.toINI { } cfg.settings)
else if (cfg.configFile != null)
then cfg.configFile
else null;
in
"${cfg.package}/bin/dunst ${optionalString (config != null) "-conf ${config}"}";
};
};
};
}

View File

@ -2,7 +2,7 @@
# case where you don't want to add the whole NUR namespace to your
# configuration.
self: super:
_self: super:
let

View File

@ -1,4 +1,4 @@
{ stdenv
{ lib
, fetchFromGitHub
, python3Packages
@ -20,7 +20,7 @@ python3Packages.buildPythonApplication rec {
doCheck = false;
meta = with stdenv.lib; {
meta = with lib; {
homepage = "https://github.com/Prior99/mopidy-subidy";
description = "Mopidy extension for playing music from Subsonic servers";
license = licenses.bsd3;

View File

@ -0,0 +1,45 @@
{ lib, stdenv, fetchzip }:
self:
let
commonBuild = import ../../../build-support/jetbrains/plugin.nix {
inherit lib stdenv fetchzip;
jetbrainsPlatforms = [
"clion"
"datagrip"
"goland"
"idea-community"
"idea-ultimate"
"phpstorm"
"pycharm-community"
"pycharm-professional"
"rider"
"ruby-mine"
"webstorm"
];
};
generateCommon = lib.makeOverridable (
{ common ? ./manual-common-packages.nix
}:
let
imported = import common {
inherit (self) callPackage;
};
super = imported;
overrides = { };
jetbrainsPlugins = super // overrides;
in
jetbrainsPlugins // { inherit commonBuild; }
);
in
generateCommon { }

File diff suppressed because it is too large Load Diff

View File

@ -9,21 +9,25 @@ let
jetbrainsPlatforms = [ "idea-community" "idea-ultimate" ];
};
generateIdea = lib.makeOverridable ({
idea ? ./idea-generated.nix
}: let
generateIdea = lib.makeOverridable (
{ idea ? ./manual-idea-packages.nix
}:
let
imported = import idea {
inherit (self) callPackage;
};
imported = import idea {
inherit (self) callPackage;
};
super = imported;
super = imported;
overrides = { };
overrides = { };
ideaPlugins = super // overrides;
ideaPlugins = super // overrides;
in ideaPlugins // { inherit ideaBuild; });
in
ideaPlugins // { inherit ideaBuild; }
);
in generateIdea { }
in
generateIdea { }

View File

@ -0,0 +1,33 @@
{ callPackage }:
{
ideavim = callPackage
({ commonBuild }: commonBuild {
pname = "IdeaVim";
version = "0.57";
pluginId = 164;
versionId = 85009;
sha256 = "1rwfwj0b0nwi7jxhzxk1r0xc190nf4i3b59i0zknpmgb4yc5clzw";
})
{ };
checkstyle-idea = callPackage
({ commonBuild }: commonBuild {
pname = "CheckStyle-IDEA";
version = "5.42.0";
pluginId = 1065;
versionId = 95757;
sha256 = "0sji3649n5zz84dlidqaklipq6vaiafxsvg0gzy3j59mvkz6dk14";
})
{ };
google-java-format = callPackage
({ commonBuild }: commonBuild rec {
pname = "google-java-format";
version = "1.7.0.4";
pluginId = 8527;
versionId = 83164;
sha256 = "1pmnn1ksiv44kdga53gi3psrm2sva4bqrxizagbr0if2n0rrvgii";
filename = "${pname}.zip";
})
{ };
}

View File

@ -0,0 +1,12 @@
{ callPackage }:
{
spring-assistant = callPackage
({ ideaBuild }: ideaBuild {
pname = "intellij-spring-assistant";
version = "0.12.0";
pluginId = 10229;
versionId = 44968;
sha256 = "13cglywzhb4j0qj0bs2jwaz2k8pxrxalv35wgkmgkxr635bxmwsj";
})
{ };
}

View File

@ -1,12 +0,0 @@
#!/usr/bin/env nix-shell
#!nix-shell --show-trace ./updater.nix -i bash
set -e
for app in $APPS; do
./updater-jetbrains $app -o ${app%-[0-9.]*}-generated.nix
done
# Local Variables:
# mode: sh
# End:

View File

@ -1,26 +0,0 @@
{ pkgs ? import <nixpkgs> { } }:
let
inherit (pkgs.stdenv) lib;
in
pkgs.mkShell {
buildInputs = [
pkgs.bash
];
APPS = lib.mapAttrsToList
(k: v: v.name)
{
inherit (pkgs.jetbrains)
clion
datagrip
goland
idea-community
idea-ultimate
phpstorm
pycharm-community
pycharm-professional
rider
ruby-mine
webstorm;
};
}

View File

@ -1,4 +1,5 @@
{ lib, makeWrapper, runCommand }: self:
{ lib
}: self:
with lib;
@ -19,31 +20,12 @@ in
assert assertMsg (length badPlugins == 0) errorMsg;
runCommand
(appendToName "with-plugins" package).name
{
nativeBuildInputs = [ package makeWrapper ];
inherit package plugins;
packageName = package.name;
preferLocalBuild = true;
allowSubstitutes = false;
} ''
mkdir -p $out/$packageName/plugins
for dir in $package/*; do
cp -r $dir $out/
done
# Install plugins
for plugin in $plugins; do
local pluginName=$(basename $plugin)
pluginName=''${pluginName#*-}
pluginName=''${pluginName%-[0-9.]*}
ln -s $plugin $out/$packageName/plugins/$pluginName
done
# Fix up wrapper
substituteInPlace $out/bin/* \
--replace "$package" "$out"
''
appendToName "with-plugins" (package.overrideAttrs (oldAttrs: {
passthru = { inherit plugins; };
# TODO: Purely aesthetics, but link the plugin to its name instead of hash-name-version
installPhase = oldAttrs.installPhase + ''
for plugin in $plugins; do
ln -s "$plugin" "$out/$name/plugins/$(basename $plugin)"
done
'';
}))

View File

@ -2,12 +2,10 @@ diff --git a/include/components/types.hpp b/include/components/types.hpp
index 8125d4b..c435f4a 100644
--- a/include/components/types.hpp
+++ b/include/components/types.hpp
@@ -57,7 +57,7 @@ enum class controltag {
R, // Reset all open tags (B, F, T, o, u). Used at module edges
@@ -43,5 +43,6 @@ enum class controltag {
DOUBLE_MIDDLE,
DOUBLE_RIGHT,
+ EXTRA,
// Terminator value, do not use
BTN_COUNT,
};
-enum class mousebtn { NONE = 0, LEFT, MIDDLE, RIGHT, SCROLL_UP, SCROLL_DOWN, DOUBLE_LEFT, DOUBLE_MIDDLE, DOUBLE_RIGHT };
+enum class mousebtn { NONE = 0, LEFT, MIDDLE, RIGHT, SCROLL_UP, SCROLL_DOWN, DOUBLE_LEFT, DOUBLE_MIDDLE, DOUBLE_RIGHT, EXTRA };
enum class strut {
LEFT = 0,

View File

@ -0,0 +1,48 @@
{ lib
, fetchFromGitHub
, buildGoModule
, pkg-config
, libsecret
}:
{ pname
, tags
, ...
}@args:
buildGoModule (lib.recursiveUpdate args rec {
inherit pname;
version = "1.8.10";
src = fetchFromGitHub {
owner = "ProtonMail";
repo = "proton-bridge";
rev = "br-${version}";
sha256 = "1na8min9cmn82lpad58abw6837k303fr09l6cvzswaxs73f231ig";
};
vendorSha256 = "1219xa1347877bfhnid15y6w9s4hf1czbrmll2iha4gpsmg066bb";
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
pkg-config
];
buildInputs = (args.buildInputs or [ ]) ++ [
libsecret
];
inherit tags;
ldflags = [
"-X github.com/ProtonMail/proton-bridge/pkg/constants.Version=${version}"
"-X github.com/ProtonMail/proton-bridge/pkg/constants.Revision=${version}"
"-X github.com/ProtonMail/proton-bridge/pkg/constants.BuildDate=unknown"
];
meta = with lib; {
description = "Integrate ProtonMail paid account with any program that supports IMAP and SMTP";
homepage = "https://protonmail.com";
license = licenses.gpl3;
plaforms = platforms.x86_64;
};
})

View File

@ -1,4 +1,4 @@
{ stdenv
{ lib
, fetchFromGitHub
, buildGoModule
@ -9,60 +9,11 @@
, qtbase
, qtdoc
}:
let
builder =
{ pname
, tags
, ...
}@args:
buildGoModule (stdenv.lib.recursiveUpdate args rec {
inherit pname;
version = "1.5.6";
src = fetchFromGitHub {
owner = "ProtonMail";
repo = "proton-bridge";
rev = "br-${version}";
sha256 = "1na8min9cmn82lpad58abw6837k303fr09l6cvzswaxs73f231ig";
};
vendorSha256 = "1219xa1347877bfhnid15y6w9s4hf1czbrmll2iha4gpsmg066bb";
nativeBuildInputs = (args.nativeBuildInputs or [ ]) ++ [
pkg-config
];
buildInputs = (args.buildInputs or [ ]) ++ [
libsecret
];
buildFlagsArray =
let
t = "github.com/ProtonMail/proton-bridge/pkg/constants";
in
[
"-tags=${tags}"
''
-ldflags=
-X ${t}.Version=${version}
-X ${t}.Revision=unknown
-X ${t}.BuildDate=unknown
''
];
meta = with stdenv.lib; {
description = "Integrate ProtonMail paid account with any program that supports IMAP and SMTP";
homepage = "https://protonmail.com";
license = licenses.gpl3;
plaforms = platforms.x86_64;
};
});
builder = import ./common.nix {
inherit lib fetchFromGitHub buildGoModule libsecret pkg-config;
};
in
{
protonmail-bridge = builder (import ./app.nix { inherit qtbase go goModules; });
protonmail-bridge-headless = builder (import ./headless.nix { });

View File

@ -1,30 +1,17 @@
{}:
rec {
{
pname = "protonmail-bridge-headless";
tags = "pmapi_prod nogui";
tags = [ "pmapi_prod" "nogui" ];
# FIXME: There's something fucky going on in the buildFlagsArray
# substitution. I shouldn't need to do this.
buildPhase =
let
t = "github.com/ProtonMail/proton-bridge/pkg/constants";
in
''
runHook preBuild
go install \
-tags="${tags}" \
-ldflags="-X ${t}.Version=1.3.2 -X ${t}.Revision=unknown -X ${t}.BuildDate=unknown" \
cmd/Desktop-Bridge/main.go
mv $GOPATH/bin/main $GOPATH/bin/Desktop-Bridge
runHook postBuild
'';
# REVIEW: Some issue with IMAP tests that probably fail due to network
# sandboxing.
doCheck = false;
# Fix up name.
postInstall = ''
mv $out/bin/Desktop-Bridge $out/bin/protonmail-bridge
mv $out/bin/Import-Export $out/bin/protonmail-import-export
'';
}

View File

@ -4,38 +4,30 @@
, jetbrainsPlatforms
}:
{ plugid
{ pluginId
, pname
, version
, ...
}@args:
, versionId
, sha256
, filename ? "${pname}-${version}.zip"
}:
let
stdenv.mkDerivation {
inherit pname version;
defaultMeta = {
broken = false;
} // lib.optionalAttrs ((args.src.meta.homepage or "") != "") {
homepage = args.src.meta.homepage;
} // lib.optionalAttrs ((args.src.meta.description or "") != "") {
description = args.src.meta.description;
} // lib.optionalAttrs ((args.src.meta.license or {}) != {}) {
license = args.src.meta.license;
src = fetchzip {
inherit sha256;
url = "https://plugins.jetbrains.com/files/${toString pluginId}/${toString versionId}/${filename}";
};
in
stdenv.mkDerivation (args // {
passthru = { inherit jetbrainsPlatforms; };
dontUnpack = lib.any (lib.hasSuffix ".jar") args.src.urls;
installPhase = ''
mkdir $out
cp -r * $out/
'';
meta = {
inherit (args.meta) license description;
homepage = if (args.meta.homepage == "") then null else args.meta.homepage;
homepage = "https://plugins.jetbrains.com/plugin/${pluginId}-${lib.toLower pname}";
};
})
}

View File

@ -1,4 +1,4 @@
{ stdenv
{ lib
, fetchFromGitHub
, buildGoModule
, makeWrapper
@ -59,9 +59,10 @@ buildGoModule rec {
done
'';
meta = with stdenv.lib; {
meta = with lib; {
homepage = "https://github.com/therecipe/qt";
description = "Qt bindings for Go";
license = licenses.lgpl3;
broken = true;
};
}

View File

@ -1,4 +1,4 @@
{ stdenv
{ lib
, buildPythonPackage
, fetchPypi
}:
@ -14,9 +14,9 @@ buildPythonPackage rec {
doCheck = false;
meta = {
meta = with lib; {
homepage = "https://stuffivelearned.org/doku.php?id=programming:python:py-sonic";
license = stdenv.lib.licenses.gpl3;
license = licenses.gpl3;
description = "A python wrapper library for the Subsonic REST API";
};
}

View File

@ -1,16 +1,18 @@
{ stdenv
, lib
, fetchFromGitHub
, qtbase
, qmake
, wrapQtAppsHook ? null # Temporary backwards compatibility
}:
stdenv.mkDerivation rec {
pname = "radeon-profile-daemon";
version = "20190603.g06qxq2h";
nativeBuildInputs = [ qmake ];
buildInputs = [ qtbase ];
nativeBuildInputs = [ qmake wrapQtAppsHook ];
src = (
fetchFromGitHub {
@ -26,7 +28,7 @@ stdenv.mkDerivation rec {
--replace "/usr/" "$out/"
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "System daemon for reading current clocks of AMD Radeon cards";
homepage = "https://github.com/marazmista/radeon-profile-daemon";
license = licenses.gpl2Plus;

View File

@ -1,61 +1,14 @@
{ pkgs }:
rec {
# Alacritty with the unmerged ligature patches applied.
alacritty-ligatures = pkgs.alacritty.overrideAttrs (oldAttrs: rec {
pname = "${oldAttrs.pname}-ligatures";
version = "0.7.1.20210107.gada2680";
src = pkgs.fetchFromGitHub {
owner = "zenixls2";
repo = "alacritty";
fetchSubmodules = true;
rev = "ada2680e79a8f53cd350263c8cc91d2e2a264d81";
sha256 = "0c0k1ib1dl35731zyjb32apyn28xc63mhbwsig5mz3hnkyk5nisr";
};
cargoDeps = oldAttrs.cargoDeps.overrideAttrs (pkgs.lib.const {
name = "${pname}-${version}-vendor.tar.gz";
inherit src;
outputHash = "1d1yz4xmal0f3c0pcn59lxfh5a3532nv7dv7s95svvi8qsvnk9gv";
});
ligatureInputs = [
pkgs.fontconfig
pkgs.freetype
pkgs.libglvnd
pkgs.stdenv.cc.cc.lib
pkgs.xlibs.libxcb
];
buildInputs = (oldAttrs.buildInputs or []) ++ ligatureInputs;
# HACK: One of the ligature libraries required the C++ stdlib at runtime,
# and I can't work out a better way to push it to the RPATH.
postInstall = pkgs.lib.optional (!pkgs.stdenv.isDarwin) ''
patchelf \
--set-rpath ${pkgs.lib.makeLibraryPath ligatureInputs}:"$(patchelf --show-rpath $out/bin/alacritty)" \
$out/bin/alacritty
'';
meta = oldAttrs.meta // {
description = "Alacritty with ligature patch applied";
homepage = "https://github.com/zenixls2/alacritty/tree/ligature";
};
});
amdgpu-fan = pkgs.callPackage ../tools/misc/amdgpu-fan { };
cardboard = pkgs.callPackage ../applications/window-managers/cardboard { };
goModules = pkgs.recurseIntoAttrs rec {
qt = pkgs.libsForQt512.callPackage ../development/go-modules/qt { };
qt = pkgs.libsForQt5.callPackage ../development/go-modules/qt { };
};
# A functional Jetbrains IDE-with-plugins package set.
jetbrains = pkgs.dontRecurseIntoAttrs rec {
jetbrainsPluginsFor = variant: import ../top-level/jetbrains-plugins.nix {
inherit (pkgs) lib newScope stdenv fetchzip makeWrapper runCommand;
inherit (pkgs) lib newScope stdenv fetchzip;
inherit variant;
};
@ -72,15 +25,11 @@ rec {
ideaUltimateWithPlugins = ideaUltimatePlugins.jetbrainsWithPlugins;
};
libhl = pkgs.callPackage ../development/libraries/libhl { };
mopidy-subidy = pkgs.callPackage ../applications/audio/mopidy/subidy.nix {
python3Packages = pkgs.python3Packages // python3Packages;
};
pam_gnupg = pkgs.callPackage ../os-specific/linux/pam_gnupg { };
picom-animations = pkgs.picom.overrideAttrs (oldAttrs: {
picom-animations = pkgs.picom.overrideAttrs (_oldAttrs: {
pname = "picom-animations";
src = pkgs.fetchFromGitHub {
owner = "jonaburg";
@ -96,74 +45,17 @@ rec {
patches = (oldAttrs.patches or [ ]) ++ [ ../applications/misc/polybar/9button.patch ];
});
psst = pkgs.callPackage ../applications/audio/psst { };
python2Packages =
let
fixVersion =
{ package
, version
, sha256
, extra ? (oldAttrs: { })
}: package.overrideAttrs (oldAttrs: rec {
inherit version;
src = pkgs.python2Packages.fetchPypi {
inherit (oldAttrs) pname;
inherit version sha256;
};
} // extra oldAttrs);
in
pkgs.recurseIntoAttrs rec {
colorama_0_3_3 = fixVersion {
package = pkgs.python2Packages.colorama;
version = "0.3.3";
sha256 = "1716z9pq1r5ys3nkg7wdrb3h2f9rmd0zdxpxzmx3bgwgf6xg48gb";
};
mutagen_1_30 = fixVersion {
package = pkgs.python2Packages.mutagen;
version = "1.30";
sha256 = "0kv2gjnzbj1w0bswmxm7wi05x6ypi7jk52s0lb8gw8s459j41gyd";
extra = oldAttrs: {
patches = [ ];
};
};
pyspotify_2_0_5 = fixVersion {
package = pkgs.python2Packages.pyspotify;
version = "2.0.5";
sha256 = "0y16c024rrvbvfdqj1n0k4b25b1nbza3i7kspg5b0ci2src1rm7v";
};
overlay = {
colorama = colorama_0_3_3;
mutagen = mutagen_1_30;
pyspotify = pyspotify_2_0_5;
};
};
python3Packages = pkgs.recurseIntoAttrs {
py-sonic = pkgs.python3.pkgs.callPackage ../development/python-modules/py-sonic { };
};
# The one in Nixpkgs still extracts the pre-built Debian package instead
# of building from source.
protonmailBridgePackages = pkgs.libsForQt512.callPackage ../applications/networking/protonmail-bridge {
protonmailBridgePackages = pkgs.libsForQt5.callPackage ../applications/networking/protonmail-bridge {
inherit goModules;
};
protonmail-bridge = protonmailBridgePackages.protonmail-bridge;
protonmail-bridge-headless = protonmailBridgePackages.protonmail-bridge-headless;
radeon-profile-daemon = pkgs.libsForQt5.callPackage ../tools/misc/radeon-profile-daemon { };
samrewritten = pkgs.callPackage ../tools/misc/samrewritten { };
spotify-ripper = pkgs.callPackage ../tools/misc/spotify-ripper {
# NOTE: Not available in 20.03. Specifying it this way lets me cheat the
# build auto-failing on 20.03 because of the attribute not existing.
inherit (pkgs) fdk-aac-encoder;
python2Packages = pkgs.python2Packages // python2Packages.overlay;
};
zsh-z = pkgs.callPackage ../shells/zsh/zsh-z { };
}

View File

@ -2,28 +2,34 @@
, newScope
, stdenv
, fetchzip
, makeWrapper
, runCommand
, variant
}:
let
mkJetbrainsPlugins = import ../applications/editors/jetbrains/common-plugins.nix {
inherit lib stdenv fetchzip;
};
mkIdeaPlugins = import ../applications/editors/jetbrains/idea-plugins.nix {
inherit lib stdenv fetchzip;
};
jetbrainsWithPlugins = import ../applications/editors/jetbrains/wrapper.nix {
inherit lib makeWrapper runCommand;
inherit lib;
};
in lib.makeScope newScope (self: lib.makeOverridable ({
ideaPlugins ? mkIdeaPlugins self
}: ({ }
// ideaPlugins // { inherit ideaPlugins; }
// {
in
lib.makeScope newScope (self: lib.makeOverridable
({ jetbrainsPlugins ? mkJetbrainsPlugins self
, ideaPlugins ? mkIdeaPlugins self
}: ({ }
// jetbrainsPlugins // { inherit jetbrainsPlugins; }
// ideaPlugins // { inherit ideaPlugins; }
// {
inherit variant;
jetbrainsWithPlugins = jetbrainsWithPlugins self variant;
})
) { })
)
{ })

View File

@ -0,0 +1,55 @@
{ stdenv
, lib
, fetchFromGitHub
, alacritty
, fontconfig
, freetype
, libglvnd
, libxcb
}:
alacritty.overrideAttrs (oldAttrs: rec {
pname = "${oldAttrs.pname}-ligatures";
version = "0.7.2.20210209.g3ed0430";
src = fetchFromGitHub {
owner = "zenixls2";
repo = "alacritty";
fetchSubmodules = true;
rev = "3ed043046fc74f288d4c8fa7e4463dc201213500";
sha256 = "1dGk4ORzMSUQhuKSt5Yo7rOJCJ5/folwPX2tLiu0suA=";
};
cargoDeps = oldAttrs.cargoDeps.overrideAttrs (lib.const {
name = "${pname}-${version}-vendor.tar.gz";
inherit src;
outputHash = "pONu6caJmEKnbr7j+o9AyrYNpS4Q8OEjNZOhGTalncc=";
});
ligatureInputs = [
fontconfig
freetype
libglvnd
stdenv.cc.cc.lib
libxcb
];
preferLocalBuild = true;
buildInputs = (oldAttrs.buildInputs or [ ]) ++ ligatureInputs;
# HACK: One of the ligature libraries required the C++ stdlib at runtime,
# and I can't work out a better way to push it to the RPATH.
postInstall = lib.optional (!stdenv.isDarwin) ''
patchelf \
--set-rpath ${lib.makeLibraryPath ligatureInputs}:"$(patchelf --print-rpath $out/bin/alacritty)" \
$out/bin/alacritty
'';
meta = oldAttrs.meta // {
description = "Alacritty with ligature patch applied";
homepage = "https://github.com/zenixls2/alacritty/tree/ligature";
};
})

View File

@ -1,4 +1,4 @@
{ stdenv
{ lib
, fetchFromGitHub
, python3Packages
@ -20,7 +20,7 @@ python3Packages.buildPythonApplication rec {
pyyaml
];
meta = with stdenv.lib; {
meta = with lib; {
description = "Fan controller for AMD graphics cards running the amdgpu driver on Linux";
homepage = "https://github.com/chestm007/amdgpu-fan";
license = licenses.gpl2;

View File

@ -0,0 +1,43 @@
{ stdenv
, lib
, fetchurl
, makeWrapper
, jre
, udev
, xorg
}:
stdenv.mkDerivation rec {
pname = "atlauncher";
version = "3.4.20.2";
src = fetchurl {
url = "https://github.com/ATLauncher/ATLauncher/releases/download/v${version}/ATLauncher-${version}.jar";
hash = "sha256-YnCDs67BVhJ5rwY6jTbfgHKPbavtmcIMd16AWMBUDgk=";
};
dontUnpack = true;
nativeBuildInputs = [ makeWrapper ];
installPhase = ''
mkdir -p $out/bin $out/share/java
cp $src $out/share/java/ATLauncher.jar
makeWrapper ${jre}/bin/java $out/bin/atlauncher \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ xorg.libXxf86vm udev ]}" \
--add-flags "-jar $out/share/java/ATLauncher.jar" \
--add-flags "--working-dir \''${XDG_DATA_HOME:-\$HOME/.local/share}/ATLauncher"
'';
meta = with lib; {
description = "Minecraft launcher";
longDescription = ''
ATLauncher is a Launcher for Minecraft which integrates multiple different
ModPacks to allow you to download and install ModPacks easily and quickly.
'';
sourceProvenance = with sourceTypes; [ binaryBytecode ];
license = licenses.gpl3Only;
platforms = platforms.all;
homepage = "https://atlauncher.com/";
};
}

View File

@ -1,15 +1,12 @@
{ stdenv
, lib
, fetchFromGitLab
, fetchzip
, cereal
, cmake
, git
, libGL
, libX11
, libinput
, libxkbcommon
, mesa
, meson
, ninja
, pixman
@ -62,10 +59,11 @@ stdenv.mkDerivation rec {
passthru.providedSessions = [ "cardboard" ];
meta = {
meta = with lib; {
description = "Scrollable tiling Wayland compositor designed with laptops in mind";
homepage = "https://gitlab.com/cardboardwm/cardboard";
license = stdenv.lib.licenses.gpl3;
license = licenses.gpl3;
platforms = wlroots.meta.platforms;
broken = true;
};
}

View File

@ -1,7 +1,7 @@
{ stdenv
, lib
, fetchFromGitHub
, coreutils
, autoreconfHook
}:
@ -26,7 +26,7 @@ stdenv.mkDerivation rec {
mkdir -p $out/include $out/lib
'';
meta = with stdenv.lib; {
meta = with lib; {
homepage = "https://github.com/xant/libhl";
description = "Simple and fast C library implementing a thread-safe API to manage hash-tables, linked lists, lock-free ring buffers and queues ";
license = licenses.lgpl3;

View File

@ -1,4 +1,5 @@
{ stdenv
, lib
, fetchFromGitHub
, autoreconfHook
@ -25,10 +26,10 @@ stdenv.mkDerivation rec {
configureFlags = [ "--with-moduledir=\${out}/lib/security" ];
meta = with stdenv.lib; {
meta = with lib; {
homepage = "https://github.com/cruegge/pam-gnupg";
description = "Unlock GnuPG keys on login";
license = licenses.gpl3;
inherit (pam.meta) platforms;
platforms = pam.meta.platforms;
};
}

View File

@ -1,9 +1,10 @@
{ stdenv
{ lib
, fetchFromGitHub
, rustPlatform
, cmake
, pkg-config
, alsaLib
, dbus
, openssl
# GUI
@ -14,27 +15,27 @@
}:
let
inherit (stdenv.lib) optional optionals;
inherit (lib) optional optionals;
in
assert withGui -> gtk3.meta.available;
rustPlatform.buildRustPackage rec {
pname = "psst";
version = "20210122.gec114ac";
version = "20221012.d70ed81";
src = fetchFromGitHub {
owner = "jpochyla";
repo = "psst";
rev = "ec114ac8299179c8dd51bc026d6060dc75658b83";
sha256 = "02mh6hjnlimadc3w899hccss31p1r4sxgb5880zwn7yiycbq3yyj";
rev = "d70ed8104533dc15bc36b989ba8428872c9b578f";
hash = "sha256-ZKhHN0ruLb6ZVKkrKv/YawRsVop6SP1QF/nrtkmA8P8=";
fetchSubmodules = true;
};
cargoSha256 = "1m01rycnpy9asspih1x9l5ppfbjnqcfdycmzgkrmdwzah3x8s8xc";
cargoSha256 = "sha256-zH6+EV78FDVOYEFXk0f54pH2Su0QpK1I0bHqzIiMdBo=";
nativeBuildInputs = [ pkg-config ]
++ optional withGui copyDesktopItems;
buildInputs = [ openssl ]
buildInputs = [ alsaLib dbus openssl ]
++ optional withGui gtk3;
cargoBuildFlags = optionals (!withGui) [
@ -54,16 +55,16 @@ rustPlatform.buildRustPackage rec {
name = pname;
desktopName = "psst";
genericName = "Spotify Player";
categories = "AudioVideo;Audio;Network;Player;";
categories = [ "AudioVideo" "Audio" "Network" "Player" ];
comment = "Spotify client with native GUI";
exec = "psst-gui";
extraEntries = "Keywords=spotify;music;";
keywords = [ "spotify" "music" ];
icon = "spotify";
type = "Application";
})
];
meta = with stdenv.lib; {
meta = with lib; {
description = "Fast and multi-platform Spotify client with native GUI ";
homepage = "https://github.com/jpochyla/psst";
license = licenses.mit;

View File

@ -1,7 +1,6 @@
{ stdenv
, lib
, fetchFromGitHub
, makeWrapper
, curl
, gnumake
, gnutls
@ -40,7 +39,7 @@ stdenv.mkDerivation rec {
--replace /usr/bin/samrewritten $out/bin/samrewritten
'';
meta = with stdenv.lib; {
meta = with lib; {
description = "Steam Achievement Manager For Linux";
homepage = "https://github.com/PaulCombal/SamRewritten";
license = licenses.gpl3;

View File

@ -2,7 +2,7 @@ diff --git a/setup.py b/setup.py
index a800b3b..8967921 100755
--- a/setup.py
+++ b/setup.py
@@ -22,14 +22,13 @@ setup(
@@ -33,14 +33,13 @@ setup(
name='spotify-ripper',
version='2.9.1',
packages=find_packages(exclude=["tests"]),
@ -18,11 +18,7 @@ index a800b3b..8967921 100755
],
},
@@ -67,7 +66,5 @@ setup(
'Programming Language :: Python :: 3',
'Programming Language :: Python :: 3.4',
],
- long_description=_read('README.rst'),
)
@@ -121,3 +121,2 @@ setup(
return True
-create_default_dir()

View File

@ -1,42 +1,52 @@
{ stdenv
{ lib
, fetchFromGitHub
, python2Packages
, python3Packages
, lame
, aacSupport ? false, faac
, alacSupport ? false, libav
, flacSupport ? false, flac
, m4aSupport ? false, mp4Support ? false, fdk-aac-encoder
, oggSupport ? false, vorbisTools
, opusSupport ? false, opusTools
, aacSupport ? false
, faac
, alacSupport ? false
, libav
, flacSupport ? false
, flac
, m4aSupport ? false
, mp4Support ? false
, fdk-aac-encoder
, oggSupport ? false
, vorbisTools
, opusSupport ? false
, opusTools
}:
assert aacSupport -> faac.meta.available;
assert alacSupport -> libav.meta.available;
assert flacSupport -> flac.meta.available;
assert aacSupport -> faac.meta.available;
assert alacSupport -> libav.meta.available;
assert flacSupport -> flac.meta.available;
assert m4aSupport || mp4Support -> fdk-aac-encoder.meta.available;
assert oggSupport -> vorbisTools.meta.available;
assert opusSupport -> opusTools.meta.available;
assert oggSupport -> vorbisTools.meta.available;
assert opusSupport -> opusTools.meta.available;
python2Packages.buildPythonApplication rec {
python3Packages.buildPythonApplication rec {
pname = "spotify-ripper";
version = "20161231.gd046419";
version = "20210724.5bfd3f7";
src = fetchFromGitHub {
owner = "hbashton";
owner = "ast261";
repo = pname;
rev = "d0464193dead7bd3ac7580e98bde86a0f323acae";
sha256 = "003d6br20f1cf4qvmpl62bk0k4h4v66ib76wn36c23bnh9x5q806";
rev = "5bfd3f7a52f2767b433fd315145409837a3c33f0";
sha256 = "sha256-LLunGzs9Mg4S00Su260b+M5w/XwS+kICl/YXQdR/cPI=";
};
propagatedBuildInputs = (with python2Packages; [
propagatedBuildInputs = (with python3Packages; [
colorama
mutagen
pyspotify
requests
schedule
setuptools
spotipy
]) ++ [
lame
(if flacSupport then flac else null)
(if alacSupport then libav else null)
(if aacSupport then faac else null)
@ -48,7 +58,7 @@ python2Packages.buildPythonApplication rec {
# Remove impure executables.
patches = [ ./fix-setup.patch ];
meta = {
meta = with lib; {
description = "Rip Spotify URIs to audio files, including ID3 tags and cover art";
longDescription = ''
Spotify-ripper is a small ripper script for Spotify that rips Spotify URIs
@ -58,6 +68,6 @@ python2Packages.buildPythonApplication rec {
'';
homepage = "https://github.com/hbashton/spotify-ripper";
# spotify-ripper itself is MIT, but the upstream libspotify is unfree.
license = stdenv.lib.licenses.unfree;
license = licenses.unfree;
};
}

View File

@ -0,0 +1,37 @@
{ stdenv
, lib
, fetchFromGitHub
, python3
, ffmpeg
}:
stdenv.mkDerivation rec {
pname = "ytarchive";
version = "0.2.2";
src = fetchFromGitHub {
owner = "Kethsar";
repo = "ytarchive";
rev = "v${version}";
sha256 = "xT45FF0ztWQXzQgYztl2YKiI2iGJfnCXgCMw8gOmxzM=";
};
propagatedBuildInputs = [
python3
ffmpeg
];
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
installPhase = ''
install -Dm00755 ytarchive.py $out/bin/ytarchive
'';
meta = with lib; {
description = "Garbage Youtube livestream downloader";
homepage = "https://github.com/Kethsar/ytarchive";
license = licenses.mit;
platforms = python3.meta.platforms;
};
}

View File

@ -1,4 +1,5 @@
{ stdenv
, lib
, fetchFromGitHub
, installShellFiles
@ -25,10 +26,10 @@ stdenv.mkDerivation {
installShellCompletion --zsh _zshz
'';
meta = {
meta = with lib; {
description = ''Jump quickly to directories that you have visited "frecently." A native ZSH port of z.sh.'';
homepage = "https://github.com/agkozak/zsh-z";
license = stdenv.lib.licenses.mit;
license = licenses.mit;
platforms = zsh.meta.platforms;
};
}