Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts: pkgs/applications/radio/soapysdr/default.nix
This commit is contained in:
commit
4a027948f9
7
.github/CODEOWNERS
vendored
7
.github/CODEOWNERS
vendored
@ -257,7 +257,8 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
|
||||
# PHP interpreter, packages, extensions, tests and documentation
|
||||
/doc/languages-frameworks/php.section.md @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
/nixos/tests/php @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
/pkgs/build-support/build-pecl.nix @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
/pkgs/build-support/php/build-pecl.nix @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
/pkgs/build-support/php @drupol @etu
|
||||
/pkgs/development/interpreters/php @jtojnar @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
/pkgs/development/php-packages @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
/pkgs/top-level/php-packages.nix @jtojnar @aanderse @drupol @etu @globin @ma27 @talyz
|
||||
@ -305,6 +306,10 @@ pkgs/development/python-modules/buildcatrust/ @ajs124 @lukegb @mweinelt
|
||||
/nixos/modules/services/misc/matrix-conduit.nix @piegamesde
|
||||
/nixos/tests/matrix-conduit.nix @piegamesde
|
||||
|
||||
# Forgejo
|
||||
nixos/modules/services/misc/forgejo.nix @bendlas @emilylange
|
||||
pkgs/applications/version-management/forgejo @bendlas @emilylange
|
||||
|
||||
# Dotnet
|
||||
/pkgs/build-support/dotnet @IvarWithoutBones
|
||||
/pkgs/development/compilers/dotnet @IvarWithoutBones
|
||||
|
@ -154,7 +154,7 @@ Here is how your `default.nix` file would look for a phoenix project.
|
||||
with import <nixpkgs> { };
|
||||
|
||||
let
|
||||
# beam.interpreters.erlang_23 is available if you need a particular version
|
||||
# beam.interpreters.erlang_26 is available if you need a particular version
|
||||
packages = beam.packagesWith beam.interpreters.erlang;
|
||||
|
||||
pname = "your_project";
|
||||
|
@ -130,6 +130,7 @@ package: a project may depend on certain extensions and `composer`
|
||||
won't work with that project unless those extensions are loaded.
|
||||
|
||||
Example of building `composer` with additional extensions:
|
||||
|
||||
```nix
|
||||
(php.withExtensions ({ all, enabled }:
|
||||
enabled ++ (with all; [ imagick redis ]))
|
||||
@ -138,7 +139,9 @@ Example of building `composer` with additional extensions:
|
||||
|
||||
### Overriding PHP packages {#ssec-php-user-guide-overriding-packages}
|
||||
|
||||
`php-packages.nix` form a scope, allowing us to override the packages defined within. For example, to apply a patch to a `mysqlnd` extension, you can simply pass an overlay-style function to `php`’s `packageOverrides` argument:
|
||||
`php-packages.nix` form a scope, allowing us to override the packages defined
|
||||
within. For example, to apply a patch to a `mysqlnd` extension, you can simply
|
||||
pass an overlay-style function to `php`’s `packageOverrides` argument:
|
||||
|
||||
```nix
|
||||
php.override {
|
||||
@ -153,3 +156,138 @@ php.override {
|
||||
};
|
||||
}
|
||||
```
|
||||
|
||||
### Building PHP projects {#ssec-building-php-projects}
|
||||
|
||||
With [Composer](https://getcomposer.org/), you can effectively build PHP
|
||||
projects by streamlining dependency management. As the de-facto standard
|
||||
dependency manager for PHP, Composer enables you to declare and manage the
|
||||
libraries your project relies on, ensuring a more organized and efficient
|
||||
development process.
|
||||
|
||||
Composer is not a package manager in the same sense as `Yum` or `Apt` are. Yes,
|
||||
it deals with "packages" or libraries, but it manages them on a per-project
|
||||
basis, installing them in a directory (e.g. `vendor`) inside your project. By
|
||||
default, it does not install anything globally. This idea is not new and
|
||||
Composer is strongly inspired by node's `npm` and ruby's `bundler`.
|
||||
|
||||
Currently, there is no other PHP tool that offers the same functionality as
|
||||
Composer. Consequently, incorporating a helper in Nix to facilitate building
|
||||
such applications is a logical choice.
|
||||
|
||||
In a Composer project, dependencies are defined in a `composer.json` file,
|
||||
while their specific versions are locked in a `composer.lock` file. Some
|
||||
Composer-based projects opt to include this `composer.lock` file in their source
|
||||
code, while others choose not to.
|
||||
|
||||
In Nix, there are multiple approaches to building a Composer-based project.
|
||||
|
||||
One such method is the `php.buildComposerProject` helper function, which serves
|
||||
as a wrapper around `mkDerivation`.
|
||||
|
||||
Using this function, you can build a PHP project that includes both a
|
||||
`composer.json` and `composer.lock` file. If the project specifies binaries
|
||||
using the `bin` attribute in `composer.json`, these binaries will be
|
||||
automatically linked and made accessible in the derivation. In this context,
|
||||
"binaries" refer to PHP scripts that are intended to be executable.
|
||||
|
||||
To use the helper effectively, simply add the `vendorHash` attribute, which
|
||||
enables the wrapper to handle the heavy lifting.
|
||||
|
||||
Internally, the helper operates in three stages:
|
||||
|
||||
1. It constructs a `composerRepository` attribute derivation by creating a
|
||||
composer repository on the filesystem containing dependencies specified in
|
||||
`composer.json`. This process uses the function
|
||||
`php.mkComposerRepository` which in turn uses the
|
||||
`php.composerHooks.composerRepositoryHook` hook. Internaly this function uses
|
||||
a custom
|
||||
[Composer plugin](https://github.com/nix-community/composer-local-repo-plugin) to
|
||||
generate the repository.
|
||||
2. The resulting `composerRepository` derivation is then used by the
|
||||
`php.composerHooks.composerInstallHook` hook, which is responsible for
|
||||
creating the final `vendor` directory.
|
||||
3. Any "binary" specified in the `composer.json` are linked and made accessible
|
||||
in the derivation.
|
||||
|
||||
As the autoloader optimization can be activated directly within the
|
||||
`composer.json` file, we do not enable any autoloader optimization flags.
|
||||
|
||||
To customize the PHP version, you can specify the `php` attribute. Similarly, if
|
||||
you wish to modify the Composer version, use the `composer` attribute. It is
|
||||
important to note that both attributes should be of the `derivation` type.
|
||||
|
||||
Here's an example of working code example using `php.buildComposerProject`:
|
||||
|
||||
```nix
|
||||
{ php, fetchFromGitHub }:
|
||||
|
||||
php.buildComposerProject (finalAttrs: {
|
||||
pname = "php-app";
|
||||
version = "1.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "git-owner";
|
||||
repo = "git-repo";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-VcQRSss2dssfkJ+iUb5qT+FJ10GHiFDzySigcmuVI+8=";
|
||||
};
|
||||
|
||||
# PHP version containing the `ast` extension enabled
|
||||
php = php.buildEnv {
|
||||
extensions = ({ enabled, all }: enabled ++ (with all; [
|
||||
ast
|
||||
]));
|
||||
};
|
||||
|
||||
# The composer vendor hash
|
||||
vendorHash = "sha256-86s/F+/5cBAwBqZ2yaGRM5rTGLmou5//aLRK5SA0WiQ=";
|
||||
|
||||
# If the composer.lock file is missing from the repository, add it:
|
||||
# composerLock = ./path/to/composer.lock;
|
||||
})
|
||||
```
|
||||
|
||||
In case the file `composer.lock` is missing from the repository, it is possible
|
||||
to specify it using the `composerLock` attribute.
|
||||
|
||||
The other method is to use all these methods and hooks individually. This has
|
||||
the advantage of building a PHP library within another derivation very easily
|
||||
when necessary.
|
||||
|
||||
Here's a working code example to build a PHP library using `mkDerivation` and
|
||||
separate functions and hooks:
|
||||
|
||||
```nix
|
||||
{ stdenvNoCC, fetchFromGitHub, php }:
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs:
|
||||
let
|
||||
src = fetchFromGitHub {
|
||||
owner = "git-owner";
|
||||
repo = "git-repo";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-VcQRSss2dssfkJ+iUb5qT+FJ10GHiFDzySigcmuVI+8=";
|
||||
};
|
||||
in {
|
||||
inherit src;
|
||||
pname = "php-app";
|
||||
version = "1.0.0";
|
||||
|
||||
buildInputs = [ php ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
php.packages.composer
|
||||
# This hook will use the attribute `composerRepository`
|
||||
php.composerHooks.composerInstallHook
|
||||
];
|
||||
|
||||
composerRepository = php.mkComposerRepository {
|
||||
inherit (finalAttrs) src;
|
||||
# Specifying a custom composer.lock since it is not present in the sources.
|
||||
composerLock = ./composer.lock;
|
||||
# The composer vendor hash
|
||||
vendorHash = "sha256-86s/F+/5cBAwBqZ2yaGRM5rTGLmou5//aLRK5SA0WiQ=";
|
||||
};
|
||||
})
|
||||
```
|
||||
|
@ -301,6 +301,12 @@
|
||||
githubId = 1174810;
|
||||
name = "Nikolay Amiantov";
|
||||
};
|
||||
abdiramen = {
|
||||
email = "abdirahman.osmanthus@gmail.com";
|
||||
github = "Abdiramen";
|
||||
githubId = 15805292;
|
||||
name = "Abdirahman Osman";
|
||||
};
|
||||
abhi18av = {
|
||||
email = "abhi18av@gmail.com";
|
||||
github = "abhi18av";
|
||||
@ -18135,6 +18141,12 @@
|
||||
githubId = 90482;
|
||||
name = "Viktor Nordling";
|
||||
};
|
||||
vilsol = {
|
||||
email = "me@vil.so";
|
||||
github = "vilsol";
|
||||
githubId = 1759390;
|
||||
name = "Vilsol";
|
||||
};
|
||||
viluon = {
|
||||
email = "nix@viluon.me";
|
||||
github = "viluon";
|
||||
@ -18390,7 +18402,7 @@
|
||||
};
|
||||
weathercold = {
|
||||
name = "Weathercold";
|
||||
email = "weathercold.scr@gmail.com";
|
||||
email = "weathercold.scr@proton.me";
|
||||
matrix = "@weathercold:matrix.org";
|
||||
github = "Weathercold";
|
||||
githubId = 49368953;
|
||||
|
@ -30,7 +30,7 @@ Because step 1) is quite expensive and takes roughly ~5 minutes the result is ca
|
||||
{-# OPTIONS_GHC -Wall #-}
|
||||
{-# LANGUAGE DataKinds #-}
|
||||
|
||||
import Control.Monad (forM_, (<=<))
|
||||
import Control.Monad (forM_, forM, (<=<))
|
||||
import Control.Monad.Trans (MonadIO (liftIO))
|
||||
import Data.Aeson (
|
||||
FromJSON,
|
||||
@ -108,6 +108,7 @@ newtype JobsetEvalInputs = JobsetEvalInputs {nixpkgs :: Nixpkgs}
|
||||
data Eval = Eval
|
||||
{ id :: Int
|
||||
, jobsetevalinputs :: JobsetEvalInputs
|
||||
, builds :: Seq Int
|
||||
}
|
||||
deriving (Generic, ToJSON, FromJSON, Show)
|
||||
|
||||
@ -151,15 +152,20 @@ data Build = Build
|
||||
}
|
||||
deriving (Generic, ToJSON, FromJSON, Show)
|
||||
|
||||
data HydraSlownessWorkaroundFlag = HydraSlownessWorkaround | NoHydraSlownessWorkaround
|
||||
data RequestLogsFlag = RequestLogs | NoRequestLogs
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
args <- getArgs
|
||||
case args of
|
||||
["get-report"] -> getBuildReports
|
||||
["get-report", "--slow"] -> getBuildReports HydraSlownessWorkaround
|
||||
["get-report"] -> getBuildReports NoHydraSlownessWorkaround
|
||||
["ping-maintainers"] -> printMaintainerPing
|
||||
["mark-broken-list"] -> printMarkBrokenList
|
||||
["mark-broken-list", "--no-request-logs"] -> printMarkBrokenList NoRequestLogs
|
||||
["mark-broken-list"] -> printMarkBrokenList RequestLogs
|
||||
["eval-info"] -> printEvalInfo
|
||||
_ -> putStrLn "Usage: get-report | ping-maintainers | mark-broken-list | eval-info"
|
||||
_ -> putStrLn "Usage: get-report [--slow] | ping-maintainers | mark-broken-list [--no-request-logs] | eval-info"
|
||||
|
||||
reportFileName :: IO FilePath
|
||||
reportFileName = getXdgDirectory XdgCache "haskell-updates-build-report.json"
|
||||
@ -167,18 +173,27 @@ reportFileName = getXdgDirectory XdgCache "haskell-updates-build-report.json"
|
||||
showT :: Show a => a -> Text
|
||||
showT = Text.pack . show
|
||||
|
||||
getBuildReports :: IO ()
|
||||
getBuildReports = runReq defaultHttpConfig do
|
||||
getBuildReports :: HydraSlownessWorkaroundFlag -> IO ()
|
||||
getBuildReports opt = runReq defaultHttpConfig do
|
||||
evalMay <- Seq.lookup 0 . evals <$> hydraJSONQuery mempty ["jobset", "nixpkgs", "haskell-updates", "evals"]
|
||||
eval@Eval{id} <- maybe (liftIO $ fail "No Evalution found") pure evalMay
|
||||
eval@Eval{id} <- maybe (liftIO $ fail "No Evaluation found") pure evalMay
|
||||
liftIO . putStrLn $ "Fetching evaluation " <> show id <> " from Hydra. This might take a few minutes..."
|
||||
buildReports :: Seq Build <- hydraJSONQuery (responseTimeout 600000000) ["eval", showT id, "builds"]
|
||||
buildReports <- getEvalBuilds opt id
|
||||
liftIO do
|
||||
fileName <- reportFileName
|
||||
putStrLn $ "Finished fetching all builds from Hydra, saving report as " <> fileName
|
||||
now <- getCurrentTime
|
||||
encodeFile fileName (eval, now, buildReports)
|
||||
|
||||
getEvalBuilds :: HydraSlownessWorkaroundFlag -> Int -> Req (Seq Build)
|
||||
getEvalBuilds NoHydraSlownessWorkaround id =
|
||||
hydraJSONQuery (responseTimeout 900000000) ["eval", showT id, "builds"]
|
||||
getEvalBuilds HydraSlownessWorkaround id = do
|
||||
Eval{builds} <- hydraJSONQuery mempty [ "eval", showT id ]
|
||||
forM builds $ \buildId -> do
|
||||
liftIO $ putStrLn $ "Querying build " <> show buildId
|
||||
hydraJSONQuery mempty [ "build", showT buildId ]
|
||||
|
||||
hydraQuery :: HttpResponse a => Proxy a -> Option 'Https -> [Text] -> Req (HttpResponseBody a)
|
||||
hydraQuery responseType option query =
|
||||
responseBody
|
||||
@ -187,7 +202,7 @@ hydraQuery responseType option query =
|
||||
(foldl' (/:) (https "hydra.nixos.org") query)
|
||||
NoReqBody
|
||||
responseType
|
||||
(header "User-Agent" "hydra-report.hs/v1 (nixpkgs;maintainers/scripts/haskell)" <> option)
|
||||
(header "User-Agent" "hydra-report.hs/v1 (nixpkgs;maintainers/scripts/haskell) pls fix https://github.com/NixOS/nixos-org-configurations/issues/270" <> option)
|
||||
|
||||
hydraJSONQuery :: FromJSON a => Option 'Https -> [Text] -> Req a
|
||||
hydraJSONQuery = hydraQuery jsonResponse
|
||||
@ -775,16 +790,20 @@ printMaintainerPing = do
|
||||
textBuildSummary = printBuildSummary eval fetchTime buildSum topBrokenRdeps
|
||||
Text.putStrLn textBuildSummary
|
||||
|
||||
printMarkBrokenList :: IO ()
|
||||
printMarkBrokenList = do
|
||||
printMarkBrokenList :: RequestLogsFlag -> IO ()
|
||||
printMarkBrokenList reqLogs = do
|
||||
(_, fetchTime, buildReport) <- readBuildReports
|
||||
runReq defaultHttpConfig $ forM_ buildReport \build@Build{job, id} ->
|
||||
case (getBuildState build, Text.splitOn "." $ unJobName job) of
|
||||
(Failed, ["haskellPackages", name, "x86_64-linux"]) -> do
|
||||
-- Fetch build log from hydra to figure out the cause of the error.
|
||||
build_log <- ByteString.lines <$> hydraPlainQuery ["build", showT id, "nixlog", "1", "raw"]
|
||||
-- We use the last probable error cause found in the build log file.
|
||||
let error_message = fromMaybe " failure " $ safeLast $ mapMaybe probableErrorCause build_log
|
||||
error_message <- fromMaybe "failure" <$>
|
||||
case reqLogs of
|
||||
NoRequestLogs -> pure Nothing
|
||||
RequestLogs -> do
|
||||
-- Fetch build log from hydra to figure out the cause of the error.
|
||||
build_log <- ByteString.lines <$> hydraPlainQuery ["build", showT id, "nixlog", "1", "raw"]
|
||||
pure $ safeLast $ mapMaybe probableErrorCause build_log
|
||||
liftIO $ putStrLn $ " - " <> Text.unpack name <> " # " <> error_message <> " in job https://hydra.nixos.org/build/" <> show id <> " at " <> formatTime defaultTimeLocale "%Y-%m-%d" fetchTime
|
||||
_ -> pure ()
|
||||
|
||||
|
@ -10,6 +10,24 @@
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
do_commit=false
|
||||
mark_broken_list_flags=""
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--do-commit)
|
||||
do_commit=true
|
||||
;;
|
||||
--no-request-logs)
|
||||
mark_broken_list_flags="$mark_broken_list_flags $arg"
|
||||
;;
|
||||
*)
|
||||
echo "$0: unknown flag: $arg"
|
||||
exit 100
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
broken_config="pkgs/development/haskell-modules/configuration-hackage2nix/broken.yaml"
|
||||
|
||||
tmpfile=$(mktemp)
|
||||
@ -17,7 +35,7 @@ trap "rm ${tmpfile}" 0
|
||||
|
||||
echo "Remember that you need to manually run 'maintainers/scripts/haskell/hydra-report.hs get-report' sometime before running this script."
|
||||
echo "Generating a list of broken builds and displaying for manual confirmation ..."
|
||||
maintainers/scripts/haskell/hydra-report.hs mark-broken-list | sort -i > "$tmpfile"
|
||||
maintainers/scripts/haskell/hydra-report.hs mark-broken-list $mark_broken_list_flags | sort -i > "$tmpfile"
|
||||
|
||||
$EDITOR "$tmpfile"
|
||||
|
||||
@ -34,7 +52,7 @@ clear="env -u HOME -u NIXPKGS_CONFIG"
|
||||
$clear maintainers/scripts/haskell/regenerate-hackage-packages.sh
|
||||
evalline=$(maintainers/scripts/haskell/hydra-report.hs eval-info)
|
||||
|
||||
if [[ "${1:-}" == "--do-commit" ]]; then
|
||||
if $do_commit; then
|
||||
git add $broken_config
|
||||
git add pkgs/development/haskell-modules/configuration-hackage2nix/transitive-broken.yaml
|
||||
git add pkgs/development/haskell-modules/hackage-packages.nix
|
||||
|
@ -935,8 +935,7 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
using the `pomerium-cli` command, you should now install the `pomerium-cli`
|
||||
package.
|
||||
|
||||
- The option
|
||||
[services.networking.networkmanager.enableFccUnlock](#opt-networking.networkmanager.enableFccUnlock)
|
||||
- The option `services.networking.networkmanager.enableFccUnlock`
|
||||
was added to support FCC unlock procedures. Since release 1.18.4, the ModemManager
|
||||
daemon no longer automatically performs the FCC unlock procedure by default. See
|
||||
[the docs](https://modemmanager.org/docs/modemmanager/fcc-unlock/) for more details.
|
||||
|
@ -193,6 +193,8 @@
|
||||
|
||||
- Emacs macport version 29 was introduced.
|
||||
|
||||
- The option `services.networking.networkmanager.enableFccUnlock` was removed in favor of `networking.networkmanager.fccUnlockScripts`, which allows specifying unlock scripts explicitly. The previous option simply did enable all unlock scripts bundled with ModemManager, which is risky, and didn't allow using vendor-provided unlock scripts at all.
|
||||
|
||||
- The `html-proofer` package has been updated from major version 3 to major version 5, which includes [breaking changes](https://github.com/gjtorikian/html-proofer/blob/v5.0.8/UPGRADING.md).
|
||||
|
||||
- `kratos` has been updated from 0.10.1 to the first stable version 1.0.0, please read the [0.10.1 to 0.11.0](https://github.com/ory/kratos/releases/tag/v0.11.0), [0.11.0 to 0.11.1](https://github.com/ory/kratos/releases/tag/v0.11.1), [0.11.1 to 0.13.0](https://github.com/ory/kratos/releases/tag/v0.13.0) and [0.13.0 to 1.0.0](https://github.com/ory/kratos/releases/tag/v1.0.0) upgrade guides. The most notable breaking change is the introduction of one-time passwords (`code`) and update of the default recovery strategy from `link` to `code`.
|
||||
@ -259,6 +261,8 @@ The module update takes care of the new config syntax and the data itself (user
|
||||
|
||||
- `programs.gnupg.agent.pinentryFlavor` is now set in `/etc/gnupg/gpg-agent.conf`, and will no longer take precedence over a `pinentry-program` set in `~/.gnupg/gpg-agent.conf`.
|
||||
|
||||
- `dockerTools.buildImage`, `dockerTools.buildLayeredImage` and `dockerTools.streamLayeredImage` now use `lib.makeOverridable` to allow `dockerTools`-based images to be customized more efficiently at the nix-level.
|
||||
|
||||
- `services.influxdb2` now supports doing an automatic initial setup and provisioning of users, organizations, buckets and authentication tokens, see [#249502](https://github.com/NixOS/nixpkgs/pull/249502) for more details.
|
||||
|
||||
- `wrapHelm` now exposes `passthru.pluginsDir` which can be passed to `helmfile`. For convenience, a top-level package `helmfile-wrapped` has been added, which inherits `passthru.pluginsDir` from `kubernetes-helm-wrapped`. See [#217768](https://github.com/NixOS/nixpkgs/issues/217768) for details.
|
||||
|
@ -239,12 +239,12 @@ foreach my $u (@{$spec->{users}}) {
|
||||
chmod oct($u->{homeMode}), $u->{home};
|
||||
}
|
||||
|
||||
if (defined $u->{passwordFile}) {
|
||||
if (-e $u->{passwordFile}) {
|
||||
$u->{hashedPassword} = read_file($u->{passwordFile});
|
||||
if (defined $u->{hashedPasswordFile}) {
|
||||
if (-e $u->{hashedPasswordFile}) {
|
||||
$u->{hashedPassword} = read_file($u->{hashedPasswordFile});
|
||||
chomp $u->{hashedPassword};
|
||||
} else {
|
||||
warn "warning: password file ‘$u->{passwordFile}’ does not exist\n";
|
||||
warn "warning: password file ‘$u->{hashedPasswordFile}’ does not exist\n";
|
||||
}
|
||||
} elsif (defined $u->{password}) {
|
||||
$u->{hashedPassword} = hashPassword($u->{password});
|
||||
|
@ -264,7 +264,7 @@ let
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = with types; nullOr (passwdEntry str);
|
||||
type = with types; nullOr str;
|
||||
default = null;
|
||||
visible = false;
|
||||
description = lib.mdDoc "Deprecated alias of hashedPasswordFile";
|
||||
|
@ -279,6 +279,7 @@
|
||||
./programs/xss-lock.nix
|
||||
./programs/xwayland.nix
|
||||
./programs/yabar.nix
|
||||
./programs/yazi.nix
|
||||
./programs/zmap.nix
|
||||
./programs/zsh/oh-my-zsh.nix
|
||||
./programs/zsh/zsh-autoenv.nix
|
||||
@ -646,6 +647,7 @@
|
||||
./services/misc/etesync-dav.nix
|
||||
./services/misc/evdevremapkeys.nix
|
||||
./services/misc/felix.nix
|
||||
./services/misc/forgejo.nix
|
||||
./services/misc/freeswitch.nix
|
||||
./services/misc/fstrim.nix
|
||||
./services/misc/gammu-smsd.nix
|
||||
|
@ -2,17 +2,9 @@
|
||||
|
||||
{
|
||||
options.programs.clash-verge = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc ''
|
||||
Clash Verge.
|
||||
'');
|
||||
|
||||
autoStart = lib.mkEnableOption (lib.mdDoc ''
|
||||
Clash Verge Auto Launch.
|
||||
'');
|
||||
|
||||
tunMode = lib.mkEnableOption (lib.mdDoc ''
|
||||
Clash Verge Tun Mode.
|
||||
'');
|
||||
enable = lib.mkEnableOption (lib.mdDoc "Clash Verge");
|
||||
autoStart = lib.mkEnableOption (lib.mdDoc "Clash Verge auto launch");
|
||||
tunMode = lib.mkEnableOption (lib.mdDoc "Clash Verge TUN mode");
|
||||
};
|
||||
|
||||
config =
|
||||
|
@ -32,15 +32,6 @@ in {
|
||||
the hiding of direnv logging
|
||||
'');
|
||||
|
||||
persistDerivations =
|
||||
(lib.mkEnableOption (lib.mdDoc ''
|
||||
setting keep-derivations and keep-outputs to true
|
||||
to prevent shells from getting garbage collected
|
||||
''))
|
||||
// {
|
||||
default = true;
|
||||
};
|
||||
|
||||
loadInNixShell =
|
||||
lib.mkEnableOption (lib.mdDoc ''
|
||||
loading direnv in `nix-shell` `nix shell` or `nix develop`
|
||||
@ -62,6 +53,10 @@ in {
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule ["programs" "direnv" "persistDerivations"] "persistDerivations was removed as it is on longer necessary")
|
||||
];
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
programs = {
|
||||
@ -87,11 +82,6 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
nix.settings = lib.mkIf cfg.persistDerivations {
|
||||
keep-outputs = true;
|
||||
keep-derivations = true;
|
||||
};
|
||||
|
||||
environment = {
|
||||
systemPackages =
|
||||
if cfg.loadInNixShell then [cfg.package]
|
||||
|
@ -45,5 +45,9 @@ in
|
||||
names);
|
||||
};
|
||||
};
|
||||
meta.maintainers = with lib.maintainers; [ linsui ];
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ linsui ];
|
||||
# The version of the package is used in the doc.
|
||||
buildDocsInSandbox = false;
|
||||
};
|
||||
}
|
||||
|
668
nixos/modules/services/misc/forgejo.nix
Normal file
668
nixos/modules/services/misc/forgejo.nix
Normal file
@ -0,0 +1,668 @@
|
||||
{ config, lib, options, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.forgejo;
|
||||
opt = options.services.forgejo;
|
||||
format = pkgs.formats.ini { };
|
||||
|
||||
exe = lib.getExe cfg.package;
|
||||
|
||||
pg = config.services.postgresql;
|
||||
useMysql = cfg.database.type == "mysql";
|
||||
usePostgresql = cfg.database.type == "postgres";
|
||||
useSqlite = cfg.database.type == "sqlite3";
|
||||
|
||||
inherit (lib)
|
||||
literalExpression
|
||||
mdDoc
|
||||
mkChangedOptionModule
|
||||
mkDefault
|
||||
mkEnableOption
|
||||
mkIf
|
||||
mkMerge
|
||||
mkOption
|
||||
mkPackageOptionMD
|
||||
mkRemovedOptionModule
|
||||
mkRenamedOptionModule
|
||||
optionalAttrs
|
||||
optionals
|
||||
optionalString
|
||||
types
|
||||
;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "appName" ] [ "services" "forgejo" "settings" "DEFAULT" "APP_NAME" ])
|
||||
(mkRemovedOptionModule [ "services" "forgejo" "extraConfig" ] "services.forgejo.extraConfig has been removed. Please use the freeform services.forgejo.settings option instead")
|
||||
(mkRemovedOptionModule [ "services" "forgejo" "database" "password" ] "services.forgejo.database.password has been removed. Please use services.forgejo.database.passwordFile instead")
|
||||
|
||||
# copied from services.gitea; remove at some point
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "cookieSecure" ] [ "services" "forgejo" "settings" "session" "COOKIE_SECURE" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "disableRegistration" ] [ "services" "forgejo" "settings" "service" "DISABLE_REGISTRATION" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "domain" ] [ "services" "forgejo" "settings" "server" "DOMAIN" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "httpAddress" ] [ "services" "forgejo" "settings" "server" "HTTP_ADDR" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "httpPort" ] [ "services" "forgejo" "settings" "server" "HTTP_PORT" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "log" "level" ] [ "services" "forgejo" "settings" "log" "LEVEL" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "log" "rootPath" ] [ "services" "forgejo" "settings" "log" "ROOT_PATH" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "rootUrl" ] [ "services" "forgejo" "settings" "server" "ROOT_URL" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "ssh" "clonePort" ] [ "services" "forgejo" "settings" "server" "SSH_PORT" ])
|
||||
(mkRenamedOptionModule [ "services" "forgejo" "staticRootPath" ] [ "services" "forgejo" "settings" "server" "STATIC_ROOT_PATH" ])
|
||||
(mkChangedOptionModule [ "services" "forgejo" "enableUnixSocket" ] [ "services" "forgejo" "settings" "server" "PROTOCOL" ] (
|
||||
config: if config.services.forgejo.enableUnixSocket then "http+unix" else "http"
|
||||
))
|
||||
(mkRemovedOptionModule [ "services" "forgejo" "ssh" "enable" ] "services.forgejo.ssh.enable has been migrated into freeform setting services.forgejo.settings.server.DISABLE_SSH. Keep in mind that the setting is inverted")
|
||||
];
|
||||
|
||||
options = {
|
||||
services.forgejo = {
|
||||
enable = mkEnableOption (mdDoc "Forgejo");
|
||||
|
||||
package = mkPackageOptionMD pkgs "forgejo" { };
|
||||
|
||||
useWizard = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = mdDoc ''
|
||||
Whether to use the built-in installation wizard instead of
|
||||
declaratively managing the {file}`app.ini` config file in nix.
|
||||
'';
|
||||
};
|
||||
|
||||
stateDir = mkOption {
|
||||
default = "/var/lib/forgejo";
|
||||
type = types.str;
|
||||
description = mdDoc "Forgejo data directory.";
|
||||
};
|
||||
|
||||
customDir = mkOption {
|
||||
default = "${cfg.stateDir}/custom";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/custom"'';
|
||||
type = types.str;
|
||||
description = mdDoc ''
|
||||
Base directory for custom templates and other options.
|
||||
|
||||
If {option}`${opt.useWizard}` is disabled (default), this directory will also
|
||||
hold secrets and the resulting {file}`app.ini` config at runtime.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "forgejo";
|
||||
description = mdDoc "User account under which Forgejo runs.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "forgejo";
|
||||
description = mdDoc "Group under which Forgejo runs.";
|
||||
};
|
||||
|
||||
database = {
|
||||
type = mkOption {
|
||||
type = types.enum [ "sqlite3" "mysql" "postgres" ];
|
||||
example = "mysql";
|
||||
default = "sqlite3";
|
||||
description = mdDoc "Database engine to use.";
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = mdDoc "Database host address.";
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = if !usePostgresql then 3306 else pg.port;
|
||||
defaultText = literalExpression ''
|
||||
if config.${opt.database.type} != "postgresql"
|
||||
then 3306
|
||||
else config.${options.services.postgresql.port}
|
||||
'';
|
||||
description = mdDoc "Database host port.";
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "forgejo";
|
||||
description = mdDoc "Database name.";
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "forgejo";
|
||||
description = mdDoc "Database user.";
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
example = "/run/keys/forgejo-dbpassword";
|
||||
description = mdDoc ''
|
||||
A file containing the password corresponding to
|
||||
{option}`${opt.database.user}`.
|
||||
'';
|
||||
};
|
||||
|
||||
socket = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = if (cfg.database.createDatabase && usePostgresql) then "/run/postgresql" else if (cfg.database.createDatabase && useMysql) then "/run/mysqld/mysqld.sock" else null;
|
||||
defaultText = literalExpression "null";
|
||||
example = "/run/mysqld/mysqld.sock";
|
||||
description = mdDoc "Path to the unix socket file to use for authentication.";
|
||||
};
|
||||
|
||||
path = mkOption {
|
||||
type = types.str;
|
||||
default = "${cfg.stateDir}/data/forgejo.db";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/data/forgejo.db"'';
|
||||
description = mdDoc "Path to the sqlite3 database file.";
|
||||
};
|
||||
|
||||
createDatabase = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = mdDoc "Whether to create a local database automatically.";
|
||||
};
|
||||
};
|
||||
|
||||
dump = {
|
||||
enable = mkEnableOption (mdDoc "periodic dumps via the [built-in {command}`dump` command](https://forgejo.org/docs/latest/admin/command-line/#dump)");
|
||||
|
||||
interval = mkOption {
|
||||
type = types.str;
|
||||
default = "04:31";
|
||||
example = "hourly";
|
||||
description = mdDoc ''
|
||||
Run a Forgejo dump at this interval. Runs by default at 04:31 every day.
|
||||
|
||||
The format is described in
|
||||
{manpage}`systemd.time(7)`.
|
||||
'';
|
||||
};
|
||||
|
||||
backupDir = mkOption {
|
||||
type = types.str;
|
||||
default = "${cfg.stateDir}/dump";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/dump"'';
|
||||
description = mdDoc "Path to the directory where the dump archives will be stored.";
|
||||
};
|
||||
|
||||
type = mkOption {
|
||||
type = types.enum [ "zip" "tar" "tar.sz" "tar.gz" "tar.xz" "tar.bz2" "tar.br" "tar.lz4" "tar.zst" ];
|
||||
default = "zip";
|
||||
description = mdDoc "Archive format used to store the dump file.";
|
||||
};
|
||||
|
||||
file = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = mdDoc "Filename to be used for the dump. If `null` a default name is chosen by forgejo.";
|
||||
example = "forgejo-dump";
|
||||
};
|
||||
};
|
||||
|
||||
lfs = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Enables git-lfs support.";
|
||||
};
|
||||
|
||||
contentDir = mkOption {
|
||||
type = types.str;
|
||||
default = "${cfg.stateDir}/data/lfs";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/data/lfs"'';
|
||||
description = mdDoc "Where to store LFS files.";
|
||||
};
|
||||
};
|
||||
|
||||
repositoryRoot = mkOption {
|
||||
type = types.str;
|
||||
default = "${cfg.stateDir}/repositories";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/repositories"'';
|
||||
description = mdDoc "Path to the git repositories.";
|
||||
};
|
||||
|
||||
mailerPasswordFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
example = "/run/keys/forgejo-mailpw";
|
||||
description = mdDoc "Path to a file containing the SMTP password.";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
description = mdDoc ''
|
||||
Free-form settings written directly to the `app.ini` configfile file.
|
||||
Refer to <https://forgejo.org/docs/latest/admin/config-cheat-sheet/> for supported values.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
DEFAULT = {
|
||||
RUN_MODE = "dev";
|
||||
};
|
||||
"cron.sync_external_users" = {
|
||||
RUN_AT_START = true;
|
||||
SCHEDULE = "@every 24h";
|
||||
UPDATE_EXISTING = true;
|
||||
};
|
||||
mailer = {
|
||||
ENABLED = true;
|
||||
MAILER_TYPE = "sendmail";
|
||||
FROM = "do-not-reply@example.org";
|
||||
SENDMAIL_PATH = "''${pkgs.system-sendmail}/bin/sendmail";
|
||||
};
|
||||
other = {
|
||||
SHOW_FOOTER_VERSION = false;
|
||||
};
|
||||
}
|
||||
'';
|
||||
type = types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
log = {
|
||||
ROOT_PATH = mkOption {
|
||||
default = "${cfg.stateDir}/log";
|
||||
defaultText = literalExpression ''"''${config.${opt.stateDir}}/log"'';
|
||||
type = types.str;
|
||||
description = mdDoc "Root path for log files.";
|
||||
};
|
||||
LEVEL = mkOption {
|
||||
default = "Info";
|
||||
type = types.enum [ "Trace" "Debug" "Info" "Warn" "Error" "Critical" ];
|
||||
description = mdDoc "General log level.";
|
||||
};
|
||||
};
|
||||
|
||||
server = {
|
||||
PROTOCOL = mkOption {
|
||||
type = types.enum [ "http" "https" "fcgi" "http+unix" "fcgi+unix" ];
|
||||
default = "http";
|
||||
description = mdDoc ''Listen protocol. `+unix` means "over unix", not "in addition to."'';
|
||||
};
|
||||
|
||||
HTTP_ADDR = mkOption {
|
||||
type = types.either types.str types.path;
|
||||
default = if lib.hasSuffix "+unix" cfg.settings.server.PROTOCOL then "/run/forgejo/forgejo.sock" else "0.0.0.0";
|
||||
defaultText = literalExpression ''if lib.hasSuffix "+unix" cfg.settings.server.PROTOCOL then "/run/forgejo/forgejo.sock" else "0.0.0.0"'';
|
||||
description = mdDoc "Listen address. Must be a path when using a unix socket.";
|
||||
};
|
||||
|
||||
HTTP_PORT = mkOption {
|
||||
type = types.port;
|
||||
default = 3000;
|
||||
description = mdDoc "Listen port. Ignored when using a unix socket.";
|
||||
};
|
||||
|
||||
DOMAIN = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost";
|
||||
description = mdDoc "Domain name of your server.";
|
||||
};
|
||||
|
||||
ROOT_URL = mkOption {
|
||||
type = types.str;
|
||||
default = "http://${cfg.settings.server.DOMAIN}:${toString cfg.settings.server.HTTP_PORT}/";
|
||||
defaultText = literalExpression ''"http://''${config.services.forgejo.settings.server.DOMAIN}:''${toString config.services.forgejo.settings.server.HTTP_PORT}/"'';
|
||||
description = mdDoc "Full public URL of Forgejo server.";
|
||||
};
|
||||
|
||||
STATIC_ROOT_PATH = mkOption {
|
||||
type = types.either types.str types.path;
|
||||
default = cfg.package.data;
|
||||
defaultText = literalExpression "config.${opt.package}.data";
|
||||
example = "/var/lib/forgejo/data";
|
||||
description = mdDoc "Upper level of template and static files path.";
|
||||
};
|
||||
|
||||
DISABLE_SSH = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc "Disable external SSH feature.";
|
||||
};
|
||||
|
||||
SSH_PORT = mkOption {
|
||||
type = types.port;
|
||||
default = 22;
|
||||
example = 2222;
|
||||
description = mdDoc ''
|
||||
SSH port displayed in clone URL.
|
||||
The option is required to configure a service when the external visible port
|
||||
differs from the local listening port i.e. if port forwarding is used.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
session = {
|
||||
COOKIE_SECURE = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = mdDoc ''
|
||||
Marks session cookies as "secure" as a hint for browsers to only send
|
||||
them via HTTPS. This option is recommend, if Forgejo is being served over HTTPS.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.database.createDatabase -> useSqlite || cfg.database.user == cfg.user;
|
||||
message = "services.forgejo.database.user must match services.forgejo.user if the database is to be automatically provisioned";
|
||||
}
|
||||
];
|
||||
|
||||
services.forgejo.settings = {
|
||||
DEFAULT = {
|
||||
RUN_MODE = mkDefault "prod";
|
||||
RUN_USER = mkDefault cfg.user;
|
||||
WORK_PATH = mkDefault cfg.stateDir;
|
||||
};
|
||||
|
||||
database = mkMerge [
|
||||
{
|
||||
DB_TYPE = cfg.database.type;
|
||||
}
|
||||
(mkIf (useMysql || usePostgresql) {
|
||||
HOST = if cfg.database.socket != null then cfg.database.socket else cfg.database.host + ":" + toString cfg.database.port;
|
||||
NAME = cfg.database.name;
|
||||
USER = cfg.database.user;
|
||||
PASSWD = "#dbpass#";
|
||||
})
|
||||
(mkIf useSqlite {
|
||||
PATH = cfg.database.path;
|
||||
})
|
||||
(mkIf usePostgresql {
|
||||
SSL_MODE = "disable";
|
||||
})
|
||||
];
|
||||
|
||||
repository = {
|
||||
ROOT = cfg.repositoryRoot;
|
||||
};
|
||||
|
||||
server = mkIf cfg.lfs.enable {
|
||||
LFS_START_SERVER = true;
|
||||
LFS_JWT_SECRET = "#lfsjwtsecret#";
|
||||
};
|
||||
|
||||
session = {
|
||||
COOKIE_NAME = mkDefault "session";
|
||||
};
|
||||
|
||||
security = {
|
||||
SECRET_KEY = "#secretkey#";
|
||||
INTERNAL_TOKEN = "#internaltoken#";
|
||||
INSTALL_LOCK = true;
|
||||
};
|
||||
|
||||
mailer = mkIf (cfg.mailerPasswordFile != null) {
|
||||
PASSWD = "#mailerpass#";
|
||||
};
|
||||
|
||||
oauth2 = {
|
||||
JWT_SECRET = "#oauth2jwtsecret#";
|
||||
};
|
||||
|
||||
lfs = mkIf cfg.lfs.enable {
|
||||
PATH = cfg.lfs.contentDir;
|
||||
};
|
||||
};
|
||||
|
||||
services.postgresql = optionalAttrs (usePostgresql && cfg.database.createDatabase) {
|
||||
enable = mkDefault true;
|
||||
|
||||
ensureDatabases = [ cfg.database.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.database.user;
|
||||
ensurePermissions = { "DATABASE ${cfg.database.name}" = "ALL PRIVILEGES"; };
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.mysql = optionalAttrs (useMysql && cfg.database.createDatabase) {
|
||||
enable = mkDefault true;
|
||||
package = mkDefault pkgs.mariadb;
|
||||
|
||||
ensureDatabases = [ cfg.database.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.database.user;
|
||||
ensurePermissions = { "${cfg.database.name}.*" = "ALL PRIVILEGES"; };
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.dump.backupDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.dump.backupDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.repositoryRoot}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.repositoryRoot}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.customDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.customDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}/data' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"d '${cfg.stateDir}/log' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/.ssh' 0700 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.customDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.customDir}/conf' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/data' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.stateDir}/log' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
|
||||
# If we have a folder or symlink with Forgejo locales, remove it
|
||||
# And symlink the current Forgejo locales in place
|
||||
"L+ '${cfg.stateDir}/conf/locale' - - - - ${cfg.package.out}/locale"
|
||||
|
||||
] ++ optionals cfg.lfs.enable [
|
||||
"d '${cfg.lfs.contentDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
"z '${cfg.lfs.contentDir}' 0750 ${cfg.user} ${cfg.group} - -"
|
||||
];
|
||||
|
||||
systemd.services.forgejo = {
|
||||
description = "Forgejo (Beyond coding. We forge.)";
|
||||
after = [
|
||||
"network.target"
|
||||
] ++ optionals usePostgresql [
|
||||
"postgresql.service"
|
||||
] ++ optionals useMysql [
|
||||
"mysql.service"
|
||||
];
|
||||
requires = optionals (cfg.database.createDatabase && usePostgresql) [
|
||||
"postgresql.service"
|
||||
] ++ optionals (cfg.database.createDatabase && useMysql) [
|
||||
"mysql.service"
|
||||
];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ cfg.package pkgs.git pkgs.gnupg ];
|
||||
|
||||
# In older versions the secret naming for JWT was kind of confusing.
|
||||
# The file jwt_secret hold the value for LFS_JWT_SECRET and JWT_SECRET
|
||||
# wasn't persistent at all.
|
||||
# To fix that, there is now the file oauth2_jwt_secret containing the
|
||||
# values for JWT_SECRET and the file jwt_secret gets renamed to
|
||||
# lfs_jwt_secret.
|
||||
# We have to consider this to stay compatible with older installations.
|
||||
preStart =
|
||||
let
|
||||
runConfig = "${cfg.customDir}/conf/app.ini";
|
||||
secretKey = "${cfg.customDir}/conf/secret_key";
|
||||
oauth2JwtSecret = "${cfg.customDir}/conf/oauth2_jwt_secret";
|
||||
oldLfsJwtSecret = "${cfg.customDir}/conf/jwt_secret"; # old file for LFS_JWT_SECRET
|
||||
lfsJwtSecret = "${cfg.customDir}/conf/lfs_jwt_secret"; # new file for LFS_JWT_SECRET
|
||||
internalToken = "${cfg.customDir}/conf/internal_token";
|
||||
replaceSecretBin = "${pkgs.replace-secret}/bin/replace-secret";
|
||||
in
|
||||
''
|
||||
# copy custom configuration and generate random secrets if needed
|
||||
${lib.optionalString (!cfg.useWizard) ''
|
||||
function forgejo_setup {
|
||||
cp -f '${format.generate "app.ini" cfg.settings}' '${runConfig}'
|
||||
|
||||
if [ ! -s '${secretKey}' ]; then
|
||||
${exe} generate secret SECRET_KEY > '${secretKey}'
|
||||
fi
|
||||
|
||||
# Migrate LFS_JWT_SECRET filename
|
||||
if [[ -s '${oldLfsJwtSecret}' && ! -s '${lfsJwtSecret}' ]]; then
|
||||
mv '${oldLfsJwtSecret}' '${lfsJwtSecret}'
|
||||
fi
|
||||
|
||||
if [ ! -s '${oauth2JwtSecret}' ]; then
|
||||
${exe} generate secret JWT_SECRET > '${oauth2JwtSecret}'
|
||||
fi
|
||||
|
||||
${optionalString cfg.lfs.enable ''
|
||||
if [ ! -s '${lfsJwtSecret}' ]; then
|
||||
${exe} generate secret LFS_JWT_SECRET > '${lfsJwtSecret}'
|
||||
fi
|
||||
''}
|
||||
|
||||
if [ ! -s '${internalToken}' ]; then
|
||||
${exe} generate secret INTERNAL_TOKEN > '${internalToken}'
|
||||
fi
|
||||
|
||||
chmod u+w '${runConfig}'
|
||||
${replaceSecretBin} '#secretkey#' '${secretKey}' '${runConfig}'
|
||||
${replaceSecretBin} '#oauth2jwtsecret#' '${oauth2JwtSecret}' '${runConfig}'
|
||||
${replaceSecretBin} '#internaltoken#' '${internalToken}' '${runConfig}'
|
||||
|
||||
${optionalString cfg.lfs.enable ''
|
||||
${replaceSecretBin} '#lfsjwtsecret#' '${lfsJwtSecret}' '${runConfig}'
|
||||
''}
|
||||
|
||||
${optionalString (cfg.database.passwordFile != null) ''
|
||||
${replaceSecretBin} '#dbpass#' '${cfg.database.passwordFile}' '${runConfig}'
|
||||
''}
|
||||
|
||||
${optionalString (cfg.mailerPasswordFile != null) ''
|
||||
${replaceSecretBin} '#mailerpass#' '${cfg.mailerPasswordFile}' '${runConfig}'
|
||||
''}
|
||||
chmod u-w '${runConfig}'
|
||||
}
|
||||
(umask 027; forgejo_setup)
|
||||
''}
|
||||
|
||||
# run migrations/init the database
|
||||
${exe} migrate
|
||||
|
||||
# update all hooks' binary paths
|
||||
${exe} admin regenerate hooks
|
||||
|
||||
# update command option in authorized_keys
|
||||
if [ -r ${cfg.stateDir}/.ssh/authorized_keys ]
|
||||
then
|
||||
${exe} admin regenerate keys
|
||||
fi
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
WorkingDirectory = cfg.stateDir;
|
||||
ExecStart = "${exe} web --pid /run/forgejo/forgejo.pid";
|
||||
Restart = "always";
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "forgejo";
|
||||
RuntimeDirectoryMode = "0755";
|
||||
# Proc filesystem
|
||||
ProcSubset = "pid";
|
||||
ProtectProc = "invisible";
|
||||
# Access write directories
|
||||
ReadWritePaths = [ cfg.customDir cfg.dump.backupDir cfg.repositoryRoot cfg.stateDir cfg.lfs.contentDir ];
|
||||
UMask = "0027";
|
||||
# Capabilities
|
||||
CapabilityBoundingSet = "";
|
||||
# Security
|
||||
NoNewPrivileges = true;
|
||||
# Sandboxing
|
||||
ProtectSystem = "strict";
|
||||
ProtectHome = true;
|
||||
PrivateTmp = true;
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
ProtectHostname = true;
|
||||
ProtectClock = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectControlGroups = true;
|
||||
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
|
||||
RestrictNamespaces = true;
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
RemoveIPC = true;
|
||||
PrivateMounts = true;
|
||||
# System Call Filtering
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [ "~@cpu-emulation @debug @keyring @mount @obsolete @privileged @setuid" "setrlimit" ];
|
||||
};
|
||||
|
||||
environment = {
|
||||
USER = cfg.user;
|
||||
HOME = cfg.stateDir;
|
||||
# `GITEA_` prefix until https://codeberg.org/forgejo/forgejo/issues/497
|
||||
# is resolved.
|
||||
GITEA_WORK_DIR = cfg.stateDir;
|
||||
GITEA_CUSTOM = cfg.customDir;
|
||||
};
|
||||
};
|
||||
|
||||
users.users = mkIf (cfg.user == "forgejo") {
|
||||
forgejo = {
|
||||
home = cfg.stateDir;
|
||||
useDefaultShell = true;
|
||||
group = cfg.group;
|
||||
isSystemUser = true;
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = mkIf (cfg.group == "forgejo") {
|
||||
forgejo = { };
|
||||
};
|
||||
|
||||
systemd.services.forgejo-dump = mkIf cfg.dump.enable {
|
||||
description = "forgejo dump";
|
||||
after = [ "forgejo.service" ];
|
||||
path = [ cfg.package ];
|
||||
|
||||
environment = {
|
||||
USER = cfg.user;
|
||||
HOME = cfg.stateDir;
|
||||
# `GITEA_` prefix until https://codeberg.org/forgejo/forgejo/issues/497
|
||||
# is resolved.
|
||||
GITEA_WORK_DIR = cfg.stateDir;
|
||||
GITEA_CUSTOM = cfg.customDir;
|
||||
};
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = cfg.user;
|
||||
ExecStart = "${exe} dump --type ${cfg.dump.type}" + optionalString (cfg.dump.file != null) " --file ${cfg.dump.file}";
|
||||
WorkingDirectory = cfg.dump.backupDir;
|
||||
};
|
||||
};
|
||||
|
||||
systemd.timers.forgejo-dump = mkIf cfg.dump.enable {
|
||||
description = "Forgejo dump timer";
|
||||
partOf = [ "forgejo-dump.service" ];
|
||||
wantedBy = [ "timers.target" ];
|
||||
timerConfig.OnCalendar = cfg.dump.interval;
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ bendlas emilylange ];
|
||||
}
|
@ -17,6 +17,7 @@ let
|
||||
text = builtins.toJSON cfg.settings;
|
||||
checkPhase = "${pkgs.adguardhome}/bin/adguardhome -c $out --check-config";
|
||||
};
|
||||
defaultBindPort = 3000;
|
||||
|
||||
in
|
||||
{
|
||||
@ -86,7 +87,7 @@ in
|
||||
'';
|
||||
};
|
||||
bind_port = mkOption {
|
||||
default = 3000;
|
||||
default = defaultBindPort;
|
||||
type = port;
|
||||
description = lib.mdDoc ''
|
||||
Port to serve HTTP pages on.
|
||||
@ -169,6 +170,6 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.settings.bind_port ];
|
||||
networking.firewall.allowedTCPPorts = mkIf cfg.openFirewall [ cfg.settings.bind_port or defaultBindPort ];
|
||||
};
|
||||
}
|
||||
|
@ -5,7 +5,7 @@ with lib;
|
||||
let
|
||||
cfg = config.networking.networkmanager;
|
||||
|
||||
delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != [];
|
||||
delegateWireless = config.networking.wireless.enable == true && cfg.unmanaged != [ ];
|
||||
|
||||
enableIwd = cfg.wifi.backend == "iwd";
|
||||
|
||||
@ -40,7 +40,7 @@ let
|
||||
})
|
||||
(mkSection "keyfile" {
|
||||
unmanaged-devices =
|
||||
if cfg.unmanaged == [] then null
|
||||
if cfg.unmanaged == [ ] then null
|
||||
else lib.concatStringsSep ";" cfg.unmanaged;
|
||||
})
|
||||
(mkSection "logging" {
|
||||
@ -103,7 +103,7 @@ let
|
||||
};
|
||||
|
||||
macAddressOpt = mkOption {
|
||||
type = types.either types.str (types.enum ["permanent" "preserve" "random" "stable"]);
|
||||
type = types.either types.str (types.enum [ "permanent" "preserve" "random" "stable" ]);
|
||||
default = "preserve";
|
||||
example = "00:11:22:33:44:55";
|
||||
description = lib.mdDoc ''
|
||||
@ -126,7 +126,8 @@ let
|
||||
pkgs.wpa_supplicant
|
||||
];
|
||||
|
||||
in {
|
||||
in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.freedesktop.members;
|
||||
@ -156,7 +157,7 @@ in {
|
||||
int
|
||||
str
|
||||
]));
|
||||
default = {};
|
||||
default = { };
|
||||
description = lib.mdDoc ''
|
||||
Configuration for the [connection] section of NetworkManager.conf.
|
||||
Refer to
|
||||
@ -186,7 +187,7 @@ in {
|
||||
|
||||
unmanaged = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = lib.mdDoc ''
|
||||
List of interfaces that will not be managed by NetworkManager.
|
||||
Interface name can be specified here, but if you need more fidelity,
|
||||
@ -251,7 +252,7 @@ in {
|
||||
|
||||
appendNameservers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = lib.mdDoc ''
|
||||
A list of name servers that should be appended
|
||||
to the ones configured in NetworkManager or received by DHCP.
|
||||
@ -260,7 +261,7 @@ in {
|
||||
|
||||
insertNameservers = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
default = [ ];
|
||||
description = lib.mdDoc ''
|
||||
A list of name servers that should be inserted before
|
||||
the ones configured in NetworkManager or received by DHCP.
|
||||
@ -336,21 +337,21 @@ in {
|
||||
};
|
||||
};
|
||||
});
|
||||
default = [];
|
||||
default = [ ];
|
||||
example = literalExpression ''
|
||||
[ {
|
||||
source = pkgs.writeText "upHook" '''
|
||||
[ {
|
||||
source = pkgs.writeText "upHook" '''
|
||||
|
||||
if [ "$2" != "up" ]; then
|
||||
logger "exit: event $2 != up"
|
||||
exit
|
||||
fi
|
||||
if [ "$2" != "up" ]; then
|
||||
logger "exit: event $2 != up"
|
||||
exit
|
||||
fi
|
||||
|
||||
# coreutils and iproute are in PATH too
|
||||
logger "Device $DEVICE_IFACE coming up"
|
||||
''';
|
||||
type = "basic";
|
||||
} ]'';
|
||||
# coreutils and iproute are in PATH too
|
||||
logger "Device $DEVICE_IFACE coming up"
|
||||
''';
|
||||
type = "basic";
|
||||
} ]'';
|
||||
description = lib.mdDoc ''
|
||||
A list of scripts which will be executed in response to network events.
|
||||
'';
|
||||
@ -369,14 +370,24 @@ in {
|
||||
'';
|
||||
};
|
||||
|
||||
enableFccUnlock = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
fccUnlockScripts = mkOption {
|
||||
type = types.listOf (types.submodule {
|
||||
options = {
|
||||
id = mkOption {
|
||||
type = types.str;
|
||||
description = lib.mdDoc "vid:pid of either the PCI or USB vendor and product ID";
|
||||
};
|
||||
path = mkOption {
|
||||
type = types.path;
|
||||
description = lib.mdDoc "Path to the unlock script";
|
||||
};
|
||||
};
|
||||
});
|
||||
default = [ ];
|
||||
example = literalExpression ''[{ name = "03f0:4e1d"; script = "''${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/03f0:4e1d"; }]'';
|
||||
description = lib.mdDoc ''
|
||||
Enable FCC unlock procedures. Since release 1.18.4, the ModemManager daemon no longer
|
||||
automatically performs the FCC unlock procedure by default. See
|
||||
[the docs](https://modemmanager.org/docs/modemmanager/fcc-unlock/)
|
||||
for more details.
|
||||
List of FCC unlock scripts to enable on the system, behaving as described in
|
||||
https://modemmanager.org/docs/modemmanager/fcc-unlock/#integration-with-third-party-fcc-unlock-tools.
|
||||
'';
|
||||
};
|
||||
};
|
||||
@ -387,7 +398,14 @@ in {
|
||||
[ "networking" "networkmanager" "packages" ]
|
||||
[ "networking" "networkmanager" "plugins" ])
|
||||
(mkRenamedOptionModule [ "networking" "networkmanager" "useDnsmasq" ] [ "networking" "networkmanager" "dns" ])
|
||||
(mkRemovedOptionModule ["networking" "networkmanager" "dynamicHosts"] ''
|
||||
(mkRemovedOptionModule [ "networking" "networkmanager" "enableFccUnlock" ] ''
|
||||
This option was removed, because using bundled FCC unlock scripts is risky,
|
||||
might conflict with vendor-provided unlock scripts, and should
|
||||
be a conscious decision on a per-device basis.
|
||||
Instead it's recommended to use the
|
||||
`networking.networkmanager.fccUnlockScripts` option.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "networking" "networkmanager" "dynamicHosts" ] ''
|
||||
This option was removed because allowing (multiple) regular users to
|
||||
override host entries affecting the whole system opens up a huge attack
|
||||
vector. There seem to be very rare cases where this might be useful.
|
||||
@ -403,7 +421,8 @@ in {
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = [
|
||||
{ assertion = config.networking.wireless.enable == true -> cfg.unmanaged != [];
|
||||
{
|
||||
assertion = config.networking.wireless.enable == true -> cfg.unmanaged != [ ];
|
||||
message = ''
|
||||
You can not use networking.networkmanager with networking.wireless.
|
||||
Except if you mark some interfaces as <literal>unmanaged</literal> by NetworkManager.
|
||||
@ -414,25 +433,29 @@ in {
|
||||
hardware.wirelessRegulatoryDatabase = true;
|
||||
|
||||
environment.etc = {
|
||||
"NetworkManager/NetworkManager.conf".source = configFile;
|
||||
}
|
||||
// builtins.listToAttrs (map (pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {
|
||||
"NetworkManager/NetworkManager.conf".source = configFile;
|
||||
}
|
||||
// builtins.listToAttrs (map
|
||||
(pkg: nameValuePair "NetworkManager/${pkg.networkManagerPlugin}" {
|
||||
source = "${pkg}/lib/NetworkManager/${pkg.networkManagerPlugin}";
|
||||
}) cfg.plugins)
|
||||
// optionalAttrs cfg.enableFccUnlock
|
||||
{
|
||||
"ModemManager/fcc-unlock.d".source =
|
||||
"${pkgs.modemmanager}/share/ModemManager/fcc-unlock.available.d/*";
|
||||
}
|
||||
// optionalAttrs (cfg.appendNameservers != [] || cfg.insertNameservers != [])
|
||||
{
|
||||
"NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
|
||||
}
|
||||
// listToAttrs (lib.imap1 (i: s:
|
||||
{
|
||||
name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
|
||||
value = { mode = "0544"; inherit (s) source; };
|
||||
}) cfg.dispatcherScripts);
|
||||
})
|
||||
cfg.plugins)
|
||||
// builtins.listToAttrs (map
|
||||
(e: nameValuePair "ModemManager/fcc-unlock.d/${e.id}" {
|
||||
source = e.path;
|
||||
})
|
||||
cfg.fccUnlockScripts)
|
||||
// optionalAttrs (cfg.appendNameservers != [ ] || cfg.insertNameservers != [ ])
|
||||
{
|
||||
"NetworkManager/dispatcher.d/02overridedns".source = overrideNameserversScript;
|
||||
}
|
||||
// listToAttrs (lib.imap1
|
||||
(i: s:
|
||||
{
|
||||
name = "NetworkManager/dispatcher.d/${dispatcherTypesSubdirMap.${s.type}}03userscript${lib.fixedWidthNumber 4 i}";
|
||||
value = { mode = "0544"; inherit (s) source; };
|
||||
})
|
||||
cfg.dispatcherScripts);
|
||||
|
||||
environment.systemPackages = packages;
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
cfg = config.services.trust-dns;
|
||||
toml = pkgs.formats.toml { };
|
||||
@ -55,7 +54,7 @@ in
|
||||
defaultText = "pkgs.trust-dns";
|
||||
description = mdDoc ''
|
||||
Trust-dns package to use.
|
||||
Only `bin/named` need be provided: the other trust-dns utilities (client and resolver) are not needed.
|
||||
Only `bin/trust-dns` need be provided: the other trust-dns utilities (client and resolver) are not needed.
|
||||
'';
|
||||
};
|
||||
quiet = mkOption {
|
||||
@ -136,7 +135,7 @@ in
|
||||
flags = (lib.optional cfg.debug "--debug") ++ (lib.optional cfg.quiet "--quiet");
|
||||
flagsStr = builtins.concatStringsSep " " flags;
|
||||
in ''
|
||||
${cfg.package}/bin/named --config ${configFile} ${flagsStr}
|
||||
${cfg.package}/bin/trust-dns --config ${configFile} ${flagsStr}
|
||||
'';
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
|
@ -662,6 +662,11 @@ in
|
||||
];
|
||||
};
|
||||
|
||||
# ZFS already has its own scheduler. Without this my(@Artturin) computer froze for a second when I nix build something.
|
||||
services.udev.extraRules = ''
|
||||
ACTION=="add|change", KERNEL=="sd[a-z]*[0-9]*|mmcblk[0-9]*p[0-9]*|nvme[0-9]*n[0-9]*p[0-9]*", ENV{ID_FS_TYPE}=="zfs_member", ATTR{../queue/scheduler}="none"
|
||||
'';
|
||||
|
||||
environment.etc = genAttrs
|
||||
(map
|
||||
(file: "zfs/zed.d/${file}")
|
||||
|
@ -7,7 +7,6 @@
|
||||
emptyConf = { lib, ... }: {
|
||||
services.adguardhome = {
|
||||
enable = true;
|
||||
settings = {};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -284,7 +284,7 @@ in {
|
||||
fluentd = handleTest ./fluentd.nix {};
|
||||
fluidd = handleTest ./fluidd.nix {};
|
||||
fontconfig-default-fonts = handleTest ./fontconfig-default-fonts.nix {};
|
||||
forgejo = handleTest ./gitea.nix { giteaPackage = pkgs.forgejo; };
|
||||
forgejo = handleTest ./forgejo.nix { };
|
||||
freenet = handleTest ./freenet.nix {};
|
||||
freeswitch = handleTest ./freeswitch.nix {};
|
||||
freshrss-sqlite = handleTest ./freshrss-sqlite.nix {};
|
||||
|
157
nixos/tests/forgejo.nix
Normal file
157
nixos/tests/forgejo.nix
Normal file
@ -0,0 +1,157 @@
|
||||
{ system ? builtins.currentSystem
|
||||
, config ? { }
|
||||
, pkgs ? import ../.. { inherit system config; }
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
with pkgs.lib;
|
||||
|
||||
let
|
||||
## gpg --faked-system-time='20230301T010000!' --quick-generate-key snakeoil ed25519 sign
|
||||
signingPrivateKey = ''
|
||||
-----BEGIN PGP PRIVATE KEY BLOCK-----
|
||||
|
||||
lFgEY/6jkBYJKwYBBAHaRw8BAQdADXiZRV8RJUyC9g0LH04wLMaJL9WTc+szbMi7
|
||||
5fw4yP8AAQCl8EwGfzSLm/P6fCBfA3I9znFb3MEHGCCJhJ6VtKYyRw7ktAhzbmFr
|
||||
ZW9pbIiUBBMWCgA8FiEE+wUM6VW/NLtAdSixTWQt6LZ4x50FAmP+o5ACGwMFCQPC
|
||||
ZwAECwkIBwQVCgkIBRYCAwEAAh4FAheAAAoJEE1kLei2eMedFTgBAKQs1oGFZrCI
|
||||
TZP42hmBTKxGAI1wg7VSdDEWTZxut/2JAQDGgo2sa4VHMfj0aqYGxrIwfP2B7JHO
|
||||
GCqGCRf9O/hzBA==
|
||||
=9Uy3
|
||||
-----END PGP PRIVATE KEY BLOCK-----
|
||||
'';
|
||||
signingPrivateKeyId = "4D642DE8B678C79D";
|
||||
|
||||
supportedDbTypes = [ "mysql" "postgres" "sqlite3" ];
|
||||
makeGForgejoTest = type: nameValuePair type (makeTest {
|
||||
name = "forgejo-${type}";
|
||||
meta.maintainers = with maintainers; [ bendlas emilylange ];
|
||||
|
||||
nodes = {
|
||||
server = { config, pkgs, ... }: {
|
||||
virtualisation.memorySize = 2047;
|
||||
services.forgejo = {
|
||||
enable = true;
|
||||
database = { inherit type; };
|
||||
settings.service.DISABLE_REGISTRATION = true;
|
||||
settings."repository.signing".SIGNING_KEY = signingPrivateKeyId;
|
||||
settings.actions.ENABLED = true;
|
||||
};
|
||||
environment.systemPackages = [ config.services.forgejo.package pkgs.gnupg pkgs.jq ];
|
||||
services.openssh.enable = true;
|
||||
|
||||
specialisation.runner = {
|
||||
inheritParentConfig = true;
|
||||
configuration.services.gitea-actions-runner.instances."test" = {
|
||||
enable = true;
|
||||
name = "ci";
|
||||
url = "http://localhost:3000";
|
||||
labels = [
|
||||
# don't require docker/podman
|
||||
"native:host"
|
||||
];
|
||||
tokenFile = "/var/lib/forgejo/runner_token";
|
||||
};
|
||||
};
|
||||
};
|
||||
client1 = { config, pkgs, ... }: {
|
||||
environment.systemPackages = [ pkgs.git ];
|
||||
};
|
||||
client2 = { config, pkgs, ... }: {
|
||||
environment.systemPackages = [ pkgs.git ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = { nodes, ... }:
|
||||
let
|
||||
inherit (import ./ssh-keys.nix pkgs) snakeOilPrivateKey snakeOilPublicKey;
|
||||
serverSystem = nodes.server.system.build.toplevel;
|
||||
in
|
||||
''
|
||||
GIT_SSH_COMMAND = "ssh -i $HOME/.ssh/privk -o StrictHostKeyChecking=no"
|
||||
REPO = "forgejo@server:test/repo"
|
||||
PRIVK = "${snakeOilPrivateKey}"
|
||||
|
||||
start_all()
|
||||
|
||||
client1.succeed("mkdir /tmp/repo")
|
||||
client1.succeed("mkdir -p $HOME/.ssh")
|
||||
client1.succeed(f"cat {PRIVK} > $HOME/.ssh/privk")
|
||||
client1.succeed("chmod 0400 $HOME/.ssh/privk")
|
||||
client1.succeed("git -C /tmp/repo init")
|
||||
client1.succeed("echo hello world > /tmp/repo/testfile")
|
||||
client1.succeed("git -C /tmp/repo add .")
|
||||
client1.succeed("git config --global user.email test@localhost")
|
||||
client1.succeed("git config --global user.name test")
|
||||
client1.succeed("git -C /tmp/repo commit -m 'Initial import'")
|
||||
client1.succeed(f"git -C /tmp/repo remote add origin {REPO}")
|
||||
|
||||
server.wait_for_unit("forgejo.service")
|
||||
server.wait_for_open_port(3000)
|
||||
server.wait_for_open_port(22)
|
||||
server.succeed("curl --fail http://localhost:3000/")
|
||||
|
||||
server.succeed(
|
||||
"su -l forgejo -c 'gpg --homedir /var/lib/forgejo/data/home/.gnupg "
|
||||
+ "--import ${toString (pkgs.writeText "forgejo.key" signingPrivateKey)}'"
|
||||
)
|
||||
|
||||
assert "BEGIN PGP PUBLIC KEY BLOCK" in server.succeed("curl http://localhost:3000/api/v1/signing-key.gpg")
|
||||
|
||||
server.succeed(
|
||||
"curl --fail http://localhost:3000/user/sign_up | grep 'Registration is disabled. "
|
||||
+ "Please contact your site administrator.'"
|
||||
)
|
||||
server.succeed(
|
||||
"su -l forgejo -c 'GITEA_WORK_DIR=/var/lib/forgejo gitea admin user create "
|
||||
+ "--username test --password totallysafe --email test@localhost'"
|
||||
)
|
||||
|
||||
api_token = server.succeed(
|
||||
"curl --fail -X POST http://test:totallysafe@localhost:3000/api/v1/users/test/tokens "
|
||||
+ "-H 'Accept: application/json' -H 'Content-Type: application/json' -d "
|
||||
+ "'{\"name\":\"token\",\"scopes\":[\"all\"]}' | jq '.sha1' | xargs echo -n"
|
||||
)
|
||||
|
||||
server.succeed(
|
||||
"curl --fail -X POST http://localhost:3000/api/v1/user/repos "
|
||||
+ "-H 'Accept: application/json' -H 'Content-Type: application/json' "
|
||||
+ f"-H 'Authorization: token {api_token}'"
|
||||
+ ' -d \'{"auto_init":false, "description":"string", "license":"mit", "name":"repo", "private":false}\'''
|
||||
)
|
||||
|
||||
server.succeed(
|
||||
"curl --fail -X POST http://localhost:3000/api/v1/user/keys "
|
||||
+ "-H 'Accept: application/json' -H 'Content-Type: application/json' "
|
||||
+ f"-H 'Authorization: token {api_token}'"
|
||||
+ ' -d \'{"key":"${snakeOilPublicKey}","read_only":true,"title":"SSH"}\'''
|
||||
)
|
||||
|
||||
client1.succeed(
|
||||
f"GIT_SSH_COMMAND='{GIT_SSH_COMMAND}' git -C /tmp/repo push origin master"
|
||||
)
|
||||
|
||||
client2.succeed("mkdir -p $HOME/.ssh")
|
||||
client2.succeed(f"cat {PRIVK} > $HOME/.ssh/privk")
|
||||
client2.succeed("chmod 0400 $HOME/.ssh/privk")
|
||||
client2.succeed(f"GIT_SSH_COMMAND='{GIT_SSH_COMMAND}' git clone {REPO}")
|
||||
client2.succeed('test "$(cat repo/testfile | xargs echo -n)" = "hello world"')
|
||||
|
||||
server.wait_until_succeeds(
|
||||
'test "$(curl http://localhost:3000/api/v1/repos/test/repo/commits '
|
||||
+ '-H "Accept: application/json" | jq length)" = "1"',
|
||||
timeout=10
|
||||
)
|
||||
|
||||
with subtest("Testing runner registration"):
|
||||
server.succeed(
|
||||
"su -l forgejo -c 'GITEA_WORK_DIR=/var/lib/forgejo gitea actions generate-runner-token' | sed 's/^/TOKEN=/' | tee /var/lib/forgejo/runner_token"
|
||||
)
|
||||
server.succeed("${serverSystem}/specialisation/runner/bin/switch-to-configuration test")
|
||||
server.wait_for_unit("gitea-runner-test.service")
|
||||
server.succeed("journalctl -o cat -u gitea-runner-test.service | grep -q 'Runner registered successfully'")
|
||||
'';
|
||||
});
|
||||
in
|
||||
|
||||
listToAttrs (map makeGForgejoTest supportedDbTypes)
|
@ -32,7 +32,7 @@ in import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
};
|
||||
users.berta = {
|
||||
isNormalUser = true;
|
||||
hashedPassword = hashed_bcrypt;
|
||||
hashedPasswordFile = (pkgs.writeText "hashed_bcrypt" hashed_bcrypt).outPath;
|
||||
shell = pkgs.bash;
|
||||
};
|
||||
users.yesim = {
|
||||
|
@ -13,7 +13,7 @@
|
||||
, SDL2
|
||||
, libGL
|
||||
, withSDL2 ? false
|
||||
, withPipewire ? false
|
||||
, withPipewire ? true
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
@ -4,18 +4,20 @@
|
||||
, autoreconfHook
|
||||
, alsa-lib
|
||||
, python3
|
||||
, SDL
|
||||
, SDL2
|
||||
, libXext
|
||||
, Cocoa
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "schismtracker";
|
||||
version = "20220506";
|
||||
version = "20230906";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-fK0FBn9e7l1Y/A7taFlaoas6ZPREFhEmskVBqjda6q0=";
|
||||
sha256 = "sha256-eW1sqfcAR3lutSyQKj7j1elkFTa8jfZqgrJYYAzMlzo=";
|
||||
};
|
||||
|
||||
configureFlags = [ "--enable-dependency-tracking" ]
|
||||
@ -23,10 +25,18 @@ stdenv.mkDerivation rec {
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook python3 ];
|
||||
|
||||
buildInputs = [ SDL ] ++ lib.optional stdenv.isLinux alsa-lib;
|
||||
buildInputs = [ SDL2 ]
|
||||
++ lib.optionals stdenv.isLinux [ alsa-lib libXext ]
|
||||
++ lib.optionals stdenv.isDarwin [ Cocoa ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
# Our Darwin SDL2 doesn't have a SDL2main to link against
|
||||
preConfigure = lib.optionalString stdenv.isDarwin ''
|
||||
substituteInPlace configure.ac \
|
||||
--replace '-lSDL2main' '-lSDL2'
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Music tracker application, free reimplementation of Impulse Tracker";
|
||||
homepage = "http://schismtracker.org/";
|
||||
|
@ -14,7 +14,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-cGlYgay/t6XIl0U9XvrHkqNxZ6BXtXi0TIANY1WdZ3Y=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-iIBqx52fD12R+7MSjQNihMYYtZ9vPAdJndOG4YJVhy4=";
|
||||
vendorHash = "sha256-iIBqx52fD12R+7MSjQNihMYYtZ9vPAdJndOG4YJVhy4=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Go kernel for Jupyter notebooks";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-8L0ukzPF7aECCeZfwZYKcJAJLpPgotkVJ+OSdwQUjhw=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-eyMrTrNarNCB3w8EOeJBmCbVxpMZy25sQ19icVARU1M=";
|
||||
vendorHash = "sha256-eyMrTrNarNCB3w8EOeJBmCbVxpMZy25sQ19icVARU1M=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ lib, stdenv, fetchurl, fetchFromGitHub, ncurses, texinfo, writeScript
|
||||
, common-updater-scripts, git, nix, nixfmt, coreutils, gnused, callPackage
|
||||
, gettext ? null, enableNls ? true, enableTiny ? false }:
|
||||
, file ? null, gettext ? null, enableNls ? true, enableTiny ? false }:
|
||||
|
||||
assert enableNls -> (gettext != null);
|
||||
|
||||
@ -22,7 +22,7 @@ in stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ texinfo ] ++ lib.optional enableNls gettext;
|
||||
buildInputs = [ ncurses ];
|
||||
buildInputs = [ ncurses ] ++ lib.optional (!enableTiny) file;
|
||||
|
||||
outputs = [ "out" "info" ];
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "18";
|
||||
version = "19";
|
||||
desktopItem = makeDesktopItem {
|
||||
name = "netbeans";
|
||||
exec = "netbeans";
|
||||
@ -19,7 +19,7 @@ stdenv.mkDerivation {
|
||||
inherit version;
|
||||
src = fetchurl {
|
||||
url = "mirror://apache/netbeans/netbeans/${version}/netbeans-${version}-bin.zip";
|
||||
hash = "sha256-CTWOW1vd200oZZYqDRT4wqr4v5I3AAgEcqA/qi9Ief8=";
|
||||
hash = "sha256-jfcO3WMH0Ir1+VfpZhaRcykTIoTmxA5DK8ZO8orP1Jg=";
|
||||
};
|
||||
|
||||
buildCommand = ''
|
||||
@ -68,7 +68,7 @@ stdenv.mkDerivation {
|
||||
binaryBytecode
|
||||
binaryNativeCode
|
||||
];
|
||||
maintainers = with lib.maintainers; [ sander rszibele ];
|
||||
maintainers = with lib.maintainers; [ sander rszibele kashw2 ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -6,27 +6,27 @@
|
||||
, gettext
|
||||
, appstream
|
||||
, appstream-glib
|
||||
, wrapGAppsHook
|
||||
, wrapGAppsHook4
|
||||
, desktop-file-utils
|
||||
, gobject-introspection
|
||||
, gtksourceview4
|
||||
, gspell
|
||||
, libhandy
|
||||
, poppler_gi
|
||||
, webkitgtk_4_1
|
||||
, librsvg
|
||||
, gtk4
|
||||
, gtksourceview5
|
||||
, libadwaita
|
||||
, libportal
|
||||
, librsvg
|
||||
, poppler_gi
|
||||
, webkitgtk_6_0
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "setzer";
|
||||
version = "56";
|
||||
version = "59";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cvfosammmm";
|
||||
repo = "Setzer";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-YCJu8EU+8RD09QNVT/RYF2ZJZ7cp+oawXThqTzg8ENQ=";
|
||||
hash = "sha256-PmkEOOi30Fa8VXNmKPvp6UAaw74MID9uTaCzXs9vPpk=";
|
||||
};
|
||||
|
||||
format = "other";
|
||||
@ -37,28 +37,28 @@ python3.pkgs.buildPythonApplication rec {
|
||||
gettext
|
||||
appstream # for appstreamcli
|
||||
appstream-glib
|
||||
wrapGAppsHook
|
||||
wrapGAppsHook4
|
||||
desktop-file-utils
|
||||
gobject-introspection
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtksourceview4
|
||||
gspell
|
||||
libhandy
|
||||
poppler_gi
|
||||
webkitgtk_4_1
|
||||
librsvg
|
||||
gtk4
|
||||
gtksourceview5
|
||||
libadwaita
|
||||
libportal
|
||||
librsvg
|
||||
poppler_gi
|
||||
webkitgtk_6_0
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
bibtexparser
|
||||
pdfminer-six
|
||||
pexpect
|
||||
pycairo
|
||||
pygobject3
|
||||
pyxdg
|
||||
pdfminer-six
|
||||
pycairo
|
||||
pexpect
|
||||
bibtexparser
|
||||
];
|
||||
|
||||
checkPhase = ''
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -337,12 +337,12 @@
|
||||
};
|
||||
dart = buildGrammar {
|
||||
language = "dart";
|
||||
version = "0.0.0+rev=bcef6d5";
|
||||
version = "0.0.0+rev=7e447dc";
|
||||
src = fetchFromGitHub {
|
||||
owner = "UserNobody14";
|
||||
repo = "tree-sitter-dart";
|
||||
rev = "bcef6d57d0dd4df37bc9d8b1920ea4963c724826";
|
||||
hash = "sha256-wTeHw/7og4GJSXISCBSL6foxzecFFB/fK03bzGup0sM=";
|
||||
rev = "7e447dc18a2d293498670fb5ea16138648c883e5";
|
||||
hash = "sha256-BCWtpTgEv/3ahiflK3wHmnhHjTmtmvJxHGo2X7FggsE=";
|
||||
};
|
||||
meta.homepage = "https://github.com/UserNobody14/tree-sitter-dart";
|
||||
};
|
||||
@ -436,6 +436,17 @@
|
||||
location = "crates/tree-sitter-ebnf";
|
||||
meta.homepage = "https://github.com/RubixDev/ebnf";
|
||||
};
|
||||
eds = buildGrammar {
|
||||
language = "eds";
|
||||
version = "0.0.0+rev=fde6202";
|
||||
src = fetchFromGitHub {
|
||||
owner = "uyha";
|
||||
repo = "tree-sitter-eds";
|
||||
rev = "fde62029d4c715562230070b9af51a9500c2ce10";
|
||||
hash = "sha256-E+VDOAnmbyUXzwhu+j2DXXBpuiI/d9gZdGsikAboLP4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/uyha/tree-sitter-eds";
|
||||
};
|
||||
eex = buildGrammar {
|
||||
language = "eex";
|
||||
version = "0.0.0+rev=f742f2f";
|
||||
@ -460,12 +471,12 @@
|
||||
};
|
||||
elm = buildGrammar {
|
||||
language = "elm";
|
||||
version = "0.0.0+rev=b075803";
|
||||
version = "0.0.0+rev=0694058";
|
||||
src = fetchFromGitHub {
|
||||
owner = "elm-tooling";
|
||||
repo = "tree-sitter-elm";
|
||||
rev = "b075803c445191af3cf7dbfdc84efef5f5bbc0f5";
|
||||
hash = "sha256-KtijU8ZODsqcNZc4Roh0AILaBWFs+D1cnSUfwQlEx84=";
|
||||
rev = "0694058bf0555adbf5f700ce4868d18e463cb824";
|
||||
hash = "sha256-xalcXMXRHcpwhKLMF6p9y5lzC0ek/ljRq2Vnb1VwXBo=";
|
||||
};
|
||||
meta.homepage = "https://github.com/elm-tooling/tree-sitter-elm";
|
||||
};
|
||||
@ -680,12 +691,12 @@
|
||||
};
|
||||
gleam = buildGrammar {
|
||||
language = "gleam";
|
||||
version = "0.0.0+rev=a59aadf";
|
||||
version = "0.0.0+rev=297031d";
|
||||
src = fetchFromGitHub {
|
||||
owner = "gleam-lang";
|
||||
repo = "tree-sitter-gleam";
|
||||
rev = "a59aadf3d7c11702cad244e7cd6b67b34ca9c16a";
|
||||
hash = "sha256-HZJGKJ5KGcNIW6VEKHZLi9ai2bhklCNlbYAyz232+Ek=";
|
||||
rev = "297031dce60e07acf90345d62777623469e46027";
|
||||
hash = "sha256-/LieoIseeZwQttCHnAOfwWRpCmBnUdWTcGwSOyjHexg=";
|
||||
};
|
||||
meta.homepage = "https://github.com/gleam-lang/tree-sitter-gleam";
|
||||
};
|
||||
@ -702,12 +713,12 @@
|
||||
};
|
||||
glsl = buildGrammar {
|
||||
language = "glsl";
|
||||
version = "0.0.0+rev=4296be4";
|
||||
version = "0.0.0+rev=64e786e";
|
||||
src = fetchFromGitHub {
|
||||
owner = "theHamsta";
|
||||
repo = "tree-sitter-glsl";
|
||||
rev = "4296be48e59be05284be2f79d62b155b61b20518";
|
||||
hash = "sha256-AimWXes1VTmFELDsTwYpZdyHsdBOL0rfg8ScauWvWQM=";
|
||||
rev = "64e786e36398b1e18ccfdbfd964d922a67392ebc";
|
||||
hash = "sha256-6G5j3xfkbcFjAT6OWQyTgeryJEW2SSnyOhedF0QPmSw=";
|
||||
};
|
||||
meta.homepage = "https://github.com/theHamsta/tree-sitter-glsl";
|
||||
};
|
||||
@ -878,12 +889,12 @@
|
||||
};
|
||||
hlsl = buildGrammar {
|
||||
language = "hlsl";
|
||||
version = "0.0.0+rev=45e60a6";
|
||||
version = "0.0.0+rev=d698c21";
|
||||
src = fetchFromGitHub {
|
||||
owner = "theHamsta";
|
||||
repo = "tree-sitter-hlsl";
|
||||
rev = "45e60a69b4dac922d81474b5d6fa88b4e5387b21";
|
||||
hash = "sha256-qQqgiFJAX3hT1ecvKJ6fssWvtkT8i3IdRVBt6L0coI4=";
|
||||
rev = "d698c21dbfcfa1df84cdaaf9dba32cba1e4f92b4";
|
||||
hash = "sha256-oFpoErrhr83yG5c3IksjL/XjmsCrZGTP6+Sfu5fvOZM=";
|
||||
};
|
||||
meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl";
|
||||
};
|
||||
@ -1153,23 +1164,23 @@
|
||||
};
|
||||
llvm = buildGrammar {
|
||||
language = "llvm";
|
||||
version = "0.0.0+rev=d47c95d";
|
||||
version = "0.0.0+rev=1b96e58";
|
||||
src = fetchFromGitHub {
|
||||
owner = "benwilliamgraham";
|
||||
repo = "tree-sitter-llvm";
|
||||
rev = "d47c95d78ef0e7495a74d214dd6fcddf6e402dfc";
|
||||
hash = "sha256-CK7f0qSAsec2cuQElXLFRQ5uiQLGCyEpNIKTIDwbBrU=";
|
||||
rev = "1b96e58faf558ce057d4dc664b904528aee743cb";
|
||||
hash = "sha256-9OCiD7Hotl7EYoggX0lArwFvK2OZisBUsX7xv8+Ig+o=";
|
||||
};
|
||||
meta.homepage = "https://github.com/benwilliamgraham/tree-sitter-llvm";
|
||||
};
|
||||
lua = buildGrammar {
|
||||
language = "lua";
|
||||
version = "0.0.0+rev=88e4464";
|
||||
version = "0.0.0+rev=9668709";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MunifTanjim";
|
||||
repo = "tree-sitter-lua";
|
||||
rev = "88e446476a1e97a8724dff7a23e2d709855077f2";
|
||||
hash = "sha256-w+WVQHPiS/xyRz0obdJoUHZ7QzIDAvgtSzmE98yDORY=";
|
||||
rev = "9668709211b2e683f27f414454a8b51bf0a6bda1";
|
||||
hash = "sha256-5t5w8KqbefInNbA12/jpNzmky/uOUhsLjKdEqpl1GEc=";
|
||||
};
|
||||
meta.homepage = "https://github.com/MunifTanjim/tree-sitter-lua";
|
||||
};
|
||||
@ -1907,6 +1918,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/indoorvivants/tree-sitter-smithy";
|
||||
};
|
||||
snakemake = buildGrammar {
|
||||
language = "snakemake";
|
||||
version = "0.0.0+rev=65a6c3b";
|
||||
src = fetchFromGitHub {
|
||||
owner = "osthomas";
|
||||
repo = "tree-sitter-snakemake";
|
||||
rev = "65a6c3b4671877821082164da0a310851b211953";
|
||||
hash = "sha256-NfbRqT3wB6gncrbL/Kx2Qtk7k5lXK2KwdQ4aOV0Acx8=";
|
||||
};
|
||||
meta.homepage = "https://github.com/osthomas/tree-sitter-snakemake";
|
||||
};
|
||||
solidity = buildGrammar {
|
||||
language = "solidity";
|
||||
version = "0.0.0+rev=1680203";
|
||||
@ -1931,12 +1953,12 @@
|
||||
};
|
||||
sql = buildGrammar {
|
||||
language = "sql";
|
||||
version = "0.0.0+rev=6fa7161";
|
||||
version = "0.0.0+rev=39750c4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "derekstride";
|
||||
repo = "tree-sitter-sql";
|
||||
rev = "6fa716163fcf183e4938c75f427379ceba881fbe";
|
||||
hash = "sha256-AmfWf7qJyoUVBLxZuIdNSWP1C7GAcKeO9EoV3HFUzwI=";
|
||||
rev = "39750c48bf9ad63bcc1399554355b0aa0aaa1c33";
|
||||
hash = "sha256-33GpCN9qdCvCcYvE60HMzFM2QzUDbf2QxJDZ6L+q27Y=";
|
||||
};
|
||||
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
|
||||
};
|
||||
@ -1964,12 +1986,12 @@
|
||||
};
|
||||
strace = buildGrammar {
|
||||
language = "strace";
|
||||
version = "0.0.0+rev=ef4a74c";
|
||||
version = "0.0.0+rev=0dc85e4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "sigmaSd";
|
||||
repo = "tree-sitter-strace";
|
||||
rev = "ef4a74c43565572db9c06596d99ccb0210db13e5";
|
||||
hash = "sha256-H/zu440AcF1l0yW4a3PEMfUMsJUxW0UEohOQPlX1rD0=";
|
||||
rev = "0dc85e4cfcd0cc4b33f855ddb782d81d1297bf6e";
|
||||
hash = "sha256-JK5+HlCELcBD2Af4uNNoBMYecDGnwcoTqdZr5mKBq+Q=";
|
||||
};
|
||||
meta.homepage = "https://github.com/sigmaSd/tree-sitter-strace";
|
||||
};
|
||||
@ -2008,12 +2030,12 @@
|
||||
};
|
||||
swift = buildGrammar {
|
||||
language = "swift";
|
||||
version = "0.0.0+rev=29541ac";
|
||||
version = "0.0.0+rev=10eb01d";
|
||||
src = fetchFromGitHub {
|
||||
owner = "alex-pinkus";
|
||||
repo = "tree-sitter-swift";
|
||||
rev = "29541ac9bbe2090de75d0b1e70360b85bbda1fef";
|
||||
hash = "sha256-jT7SdhxX5AlZP33oH7NISV+HvJwQwsXMXDWzHorgnIc=";
|
||||
rev = "10eb01d29827f24b1271672e89790661d94da9e1";
|
||||
hash = "sha256-5oHc2mGxOuvFQ1h1FEK0oJ7PYnKayoJSVHeuYleVE8o=";
|
||||
};
|
||||
generate = true;
|
||||
meta.homepage = "https://github.com/alex-pinkus/tree-sitter-swift";
|
||||
@ -2042,12 +2064,12 @@
|
||||
};
|
||||
t32 = buildGrammar {
|
||||
language = "t32";
|
||||
version = "0.0.0+rev=6da5e3c";
|
||||
version = "0.0.0+rev=c17070b";
|
||||
src = fetchFromGitLab {
|
||||
owner = "xasc";
|
||||
repo = "tree-sitter-t32";
|
||||
rev = "6da5e3cbabd376b566d04282005e52ffe67ef74a";
|
||||
hash = "sha256-BRDlNZolMurXpUqnFbS+7ADTcuBthGDYVr6wBn9PIr4=";
|
||||
rev = "c17070b014d02319b4cc335d28651926b0ee5ed6";
|
||||
hash = "sha256-j1r++0Nff/slHJvOad289kFzlBIN2uuuEYrHJOGmTEc=";
|
||||
};
|
||||
meta.homepage = "https://gitlab.com/xasc/tree-sitter-t32.git";
|
||||
};
|
||||
@ -2280,12 +2302,12 @@
|
||||
};
|
||||
vhs = buildGrammar {
|
||||
language = "vhs";
|
||||
version = "0.0.0+rev=fec6e98";
|
||||
version = "0.0.0+rev=375b42e";
|
||||
src = fetchFromGitHub {
|
||||
owner = "charmbracelet";
|
||||
repo = "tree-sitter-vhs";
|
||||
rev = "fec6e981b7795b68262ddf229d73d2aa03a89b9a";
|
||||
hash = "sha256-vGRmIFWUXSG3uDpKPcxALndV7gWiQ2nG4BOGL05oZ6U=";
|
||||
rev = "375b42e9845f704dd491c17c7e37f7c972e0faf3";
|
||||
hash = "sha256-A9m0MNAINMbrNr3BYBU/WMtC5edXWCaxvcfCwDFe8p4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/charmbracelet/tree-sitter-vhs";
|
||||
};
|
||||
@ -2346,12 +2368,12 @@
|
||||
};
|
||||
wing = buildGrammar {
|
||||
language = "wing";
|
||||
version = "0.0.0+rev=f1446e7";
|
||||
version = "0.0.0+rev=899ebde";
|
||||
src = fetchFromGitHub {
|
||||
owner = "winglang";
|
||||
repo = "wing";
|
||||
rev = "f1446e78183df1d12f864c3e514b24c1b00c0a47";
|
||||
hash = "sha256-f19KOuce+Ls/Mmb0hnxVrDOc4mdZ4m9SsiZlgGuh1bk=";
|
||||
rev = "899ebde73fac14dafc76a28d2bb6885d7bc5825e";
|
||||
hash = "sha256-fAaA9XhnFILa/5P1ZufQufwuksXx4DbePTfb/WWyRsk=";
|
||||
};
|
||||
location = "libs/tree-sitter-wing";
|
||||
generate = true;
|
||||
|
@ -978,7 +978,7 @@ self: super: {
|
||||
pname = "sg-nvim-rust";
|
||||
inherit (old) version src;
|
||||
|
||||
cargoHash = "sha256-1mb99WtELS64kfA2exUlVLzOj82xkFhWx0JHayosZL0=";
|
||||
cargoHash = "sha256-JwEOfxGH2wiFkdepxBsUYrpQ2kMV6koqpkD7s+gbWw8=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
@ -40,6 +40,7 @@ https://github.com/ycm-core/YouCompleteMe/,,
|
||||
https://github.com/vim-scripts/a.vim/,,
|
||||
https://github.com/mileszs/ack.vim/,,
|
||||
https://github.com/eikenb/acp/,,
|
||||
https://github.com/aznhe21/actions-preview.nvim/,,
|
||||
https://github.com/Mofiqul/adwaita.nvim/,HEAD,
|
||||
https://github.com/stevearc/aerial.nvim/,,
|
||||
https://github.com/Numkil/ag.nvim/,,
|
||||
@ -349,6 +350,7 @@ https://github.com/Yggdroot/hiPairs/,,
|
||||
https://github.com/tzachar/highlight-undo.nvim/,HEAD,
|
||||
https://git.sr.ht/~soywod/himalaya-vim,,
|
||||
https://github.com/mpickering/hlint-refactor-vim/,,
|
||||
https://github.com/calops/hmts.nvim/,,
|
||||
https://github.com/edluffy/hologram.nvim/,,
|
||||
https://github.com/urbit/hoon.vim/,,
|
||||
https://github.com/phaazon/hop.nvim/,,
|
||||
@ -617,6 +619,7 @@ https://github.com/LhKipp/nvim-nu/,HEAD,
|
||||
https://github.com/ojroques/nvim-osc52/,,
|
||||
https://github.com/gennaro-tedesco/nvim-peekup/,,
|
||||
https://github.com/yorickpeterse/nvim-pqf/,HEAD,
|
||||
https://github.com/jamestthompson3/nvim-remote-containers/,HEAD,
|
||||
https://github.com/olrtg/nvim-rename-state/,HEAD,
|
||||
https://github.com/petertriho/nvim-scrollbar/,HEAD,
|
||||
https://github.com/dstein64/nvim-scrollview/,,
|
||||
@ -748,6 +751,7 @@ https://github.com/lotabout/skim.vim/,,
|
||||
https://github.com/mopp/sky-color-clock.vim/,,
|
||||
https://github.com/kovisoft/slimv/,,
|
||||
https://github.com/mrjones2014/smart-splits.nvim/,,
|
||||
https://github.com/m4xshen/smartcolumn.nvim/,,
|
||||
https://github.com/gorkunov/smartpairs.vim/,,
|
||||
https://github.com/ibhagwan/smartyank.nvim/,,
|
||||
https://github.com/camspiers/snap/,,
|
||||
@ -800,6 +804,7 @@ https://github.com/vim-scripts/taglist.vim/,,
|
||||
https://github.com/wellle/targets.vim/,,
|
||||
https://github.com/tools-life/taskwiki/,,
|
||||
https://github.com/tomtom/tcomment_vim/,,
|
||||
https://github.com/renerocksai/telekasten.nvim/,,
|
||||
https://github.com/GustavoKatel/telescope-asynctasks.nvim/,,
|
||||
https://github.com/nvim-telescope/telescope-cheat.nvim/,,
|
||||
https://github.com/fannheyward/telescope-coc.nvim/,,
|
||||
|
@ -418,7 +418,7 @@ rec {
|
||||
forceShare = [ "man" "info" ];
|
||||
|
||||
nativeBuildInputs = oldAttrs.nativeBuildInputs or []
|
||||
++ lib.optionals (stdenv.hostPlatform == stdenv.buildPlatform) [
|
||||
++ lib.optionals (stdenv.buildPlatform.canExecute stdenv.hostPlatform) [
|
||||
vimCommandCheckHook vimGenDocHook
|
||||
# many neovim plugins keep using buildVimPlugin
|
||||
neovimRequireCheckHook
|
||||
|
@ -700,8 +700,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "ruff";
|
||||
publisher = "charliermarsh";
|
||||
version = "2023.34.0";
|
||||
sha256 = "sha256-KOntjiE+n1yf9047XDldGg2pT+zknI/aEg6h71LwEB8=";
|
||||
version = "2023.38.0";
|
||||
sha256 = "sha256-Gcw+X8e8MrTflotHUwkrdP/DD/6AX/kEgtRiqvqyqRM=";
|
||||
};
|
||||
meta = {
|
||||
license = lib.licenses.mit;
|
||||
|
@ -30,21 +30,21 @@ let
|
||||
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "0j3lmyj77qalhn8hrgfg3zgw6jqv8rscfy16vhkl0ir2xnmb19jf";
|
||||
x86_64-darwin = "06dx8lhw1cqignv06pcjjv8v743kr8bck1iqgl1881jmqyhggi4f";
|
||||
aarch64-linux = "0nyd452wcp5qw2cx1zj89v4fgk3jvbk3hhiix9a0gv150q48vyfa";
|
||||
aarch64-darwin = "1yfbsfnkjbf99yl1dcflpyxppa9mhnxigyyplz0jaqgpwmhs2s0b";
|
||||
armv7l-linux = "1miz95rz2fdw7xplflnydzq57hnz894xg29mhpywwiib8kypfrm7";
|
||||
x86_64-linux = "1gqpsgg6fsfssn03213sn31qcb5xnfnn3hd5g8j2mxfd0dyjgyir";
|
||||
x86_64-darwin = "0h0mj3vdnwcdxk9cnss4v8mmcfhm1yknm1al8c2047wjsj8w4jmm";
|
||||
aarch64-linux = "0qrph1a0cbr7sqx0qv4v05himsphlpwd1lgyliwqxzl8yxka8nwv";
|
||||
aarch64-darwin = "0mjqy08v0idck7a05w8rinfccg7vn50z6b0jrvp2m5q2122c0rcc";
|
||||
armv7l-linux = "1gp29rzc2iyl7vw2hlfjn5770mfpa6n9vc3f776msdxwrsia6xg9";
|
||||
}.${system} or throwSystem;
|
||||
in
|
||||
callPackage ./generic.nix rec {
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.81.1";
|
||||
version = "1.82.0";
|
||||
pname = "vscode" + lib.optionalString isInsiders "-insiders";
|
||||
|
||||
# This is used for VS Code - Remote SSH test
|
||||
rev = "6c3e3dba23e8fadc360aed75ce363ba185c49794";
|
||||
rev = "8b617bd08fd9e3fc94d14adb8d358b56e3f72314";
|
||||
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
|
||||
@ -68,7 +68,7 @@ in
|
||||
src = fetchurl {
|
||||
name = "vscode-server-${rev}.tar.gz";
|
||||
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
|
||||
sha256 = "1xfyl81d5l2bl7k4vz4rnj84j1ijwv90sqgv9lnqzza2dfckfd6m";
|
||||
sha256 = "192af63q9nklgsai71bss2bisc4wip1gbzmlpdvcjpi1hkspab2v";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -15,11 +15,11 @@ let
|
||||
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "0wx53ajjwil82s3nl6wvpdf01mh33yqasf1ia54s1rfzz10fa1m6";
|
||||
x86_64-darwin = "1avq0xlhsnxf6yfay1czi0rc0hy47ahj25rg07mzgb274p4x9q95";
|
||||
aarch64-linux = "1chdcy59w4zm27ga71iph7yqq88lv2rw73br1nmmjznbqgzk9lpc";
|
||||
aarch64-darwin = "140lrka50yqqd9dp9gb93jlc2zn2fjiq9palibwvgb14nzsb3x68";
|
||||
armv7l-linux = "0qf95nxy55f9m2z91fykwjgffj7wqvlqjn2d2xnfapa457v5lbir";
|
||||
x86_64-linux = "06d2m4g1y88jfnx5fhklm93b9arpg8kxb71ndy3jnliw3x9kgdbg";
|
||||
x86_64-darwin = "04y0fqqhjmasan5066xlw9gx5prnrmhnz40ysmhjbsqi4mv8l6ry";
|
||||
aarch64-linux = "1psz48a59dkqw4l7b49dnhp3q09d04d8k7spc5dcvcz3ghpgamal";
|
||||
aarch64-darwin = "0mrz6x4ccb23121fp8b6aqgh0xkl9yaj8wfyvkxh5vadmcqhx4l7";
|
||||
armv7l-linux = "186xxgk8hwxxa5lf799gkr7n046w5hjp5siz22jfwabsv3yr2573";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
sourceRoot = lib.optionalString (!stdenv.isDarwin) ".";
|
||||
@ -29,7 +29,7 @@ in
|
||||
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.81.1.23222";
|
||||
version = "1.82.0.23250";
|
||||
pname = "vscodium";
|
||||
|
||||
executableName = "codium";
|
||||
@ -61,7 +61,7 @@ in
|
||||
downloadPage = "https://github.com/VSCodium/vscodium/releases";
|
||||
license = licenses.mit;
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
maintainers = with maintainers; [ synthetica bobby285271 ];
|
||||
maintainers = with maintainers; [ synthetica bobby285271 ludovicopiero ];
|
||||
mainProgram = "codium";
|
||||
platforms = [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" "armv7l-linux" ];
|
||||
};
|
||||
|
@ -34,14 +34,14 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
+ lib.optionalString enableQt "-qt"
|
||||
+ lib.optionalString (!enableQt) "-sdl"
|
||||
+ lib.optionalString forceWayland "-wayland";
|
||||
version = "1.15.4";
|
||||
version = "1.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hrydgard";
|
||||
repo = "ppsspp";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-D94PLJfWalLk2kbS0PEHTMDdWxZW4YXwp3VQDHNZlRU=";
|
||||
sha256 = "sha256-41FAInCMmgO4vxzpFKVZtITs8piQLJgBJBbGVKEd97o=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
@ -18,12 +18,12 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "visualboyadvance-m";
|
||||
version = "2.1.6";
|
||||
version = "2.1.7";
|
||||
src = fetchFromGitHub {
|
||||
owner = "visualboyadvance-m";
|
||||
repo = "visualboyadvance-m";
|
||||
rev = "v${version}";
|
||||
sha256 = "1fph8phbswq6d9lgw1y1767wdp316w5hn5bws6h2dj75gvsqf221";
|
||||
sha256 = "sha256-XMb4+YPH1xgbiRC4vmooxALmjX2QURLWOGOwepdWI7o=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
@ -1,19 +1,19 @@
|
||||
# Generated by ./update.sh - do not update manually!
|
||||
# Last updated: 2023-08-27
|
||||
# Last updated: 2023-09-13
|
||||
{
|
||||
compatList = {
|
||||
rev = "f440391993fe499c79d647ed0a20d117c0db0c27";
|
||||
rev = "463d5f3537eed71638d4f5809467afec1eb5988c";
|
||||
hash = "sha256:1hdsza3wf9a0yvj6h55gsl7xqvhafvbz1i8paz9kg7l49b0gnlh1";
|
||||
};
|
||||
|
||||
mainline = {
|
||||
version = "1538";
|
||||
hash = "sha256:1wynpcx6gwdbahf7nm22jslk9hbcy17nxbr6qnzagndrws30csx5";
|
||||
version = "1557";
|
||||
hash = "sha256:19wlia1g2ll9fwbn4yj57cax4lvs3d6w41z2yy2pjdq84yzgg1gs";
|
||||
};
|
||||
|
||||
ea = {
|
||||
version = "3838";
|
||||
distHash = "sha256:0riwahdlhi4a96ya4pi7g0anwa35z8zhbax87m2mk89vwrjnf2am";
|
||||
fullHash = "sha256:1a1cq4dg624y3ixgc05ihlhy1fnpp98xnc60cssrdmmzyp79hrjp";
|
||||
version = "3864";
|
||||
distHash = "sha256:02dxf9f33agnp91myxxklrdjalh6d32zjlg07p7v5v48mymnxhv9";
|
||||
fullHash = "sha256:020ljbgb79i66y6fqj4xblzv4s808l50jy7wwl0d6jwpck1q3i11";
|
||||
};
|
||||
}
|
||||
|
@ -10,11 +10,14 @@
|
||||
, readline
|
||||
, which
|
||||
, musl-fts
|
||||
, pcre
|
||||
# options
|
||||
, conf ? null
|
||||
, withIcons ? false
|
||||
, withNerdIcons ? false
|
||||
, withEmojis ? false
|
||||
, withPcre ? false
|
||||
, extraMakeFlags ? [ ]
|
||||
}:
|
||||
|
||||
# Mutually exclusive options
|
||||
@ -44,7 +47,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
preBuild = lib.optionalString (conf != null) "cp ${finalAttrs.configFile} src/nnn.h";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles makeWrapper pkg-config ];
|
||||
buildInputs = [ readline ncurses ] ++ lib.optional stdenv.hostPlatform.isMusl musl-fts;
|
||||
buildInputs = [ readline ncurses ]
|
||||
++ lib.optional stdenv.hostPlatform.isMusl musl-fts
|
||||
++ lib.optional withPcre pcre;
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.hostPlatform.isMusl "-I${musl-fts}/include";
|
||||
NIX_LDFLAGS = lib.optionalString stdenv.hostPlatform.isMusl "-lfts";
|
||||
@ -52,7 +57,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
makeFlags = [ "PREFIX=$(out)" ]
|
||||
++ lib.optionals withIcons [ "O_ICONS=1" ]
|
||||
++ lib.optionals withNerdIcons [ "O_NERD=1" ]
|
||||
++ lib.optionals withEmojis [ "O_EMOJI=1" ];
|
||||
++ lib.optionals withEmojis [ "O_EMOJI=1" ]
|
||||
++ lib.optionals withPcre [ "O_PCRE=1" ]
|
||||
++ extraMakeFlags;
|
||||
|
||||
binPath = lib.makeBinPath [ file which ];
|
||||
|
||||
@ -63,6 +70,9 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
installShellCompletion --fish misc/auto-completion/fish/nnn.fish
|
||||
installShellCompletion --zsh misc/auto-completion/zsh/_nnn
|
||||
|
||||
cp -r plugins $out/share
|
||||
cp -r misc/quitcd $out/share/quitcd
|
||||
|
||||
wrapProgram $out/bin/nnn --prefix PATH : "$binPath"
|
||||
'';
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-svM/TzGQU/QgjqHboy0470+A6p4kR76typ9gnfjfAJk=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-rQS3QH9vnEbQZszG3FOr1P5HYgS63BurCNCFQTTdvZs=";
|
||||
vendorHash = "sha256-rQS3QH9vnEbQZszG3FOr1P5HYgS63BurCNCFQTTdvZs=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Convert images into ASCII art on the console";
|
||||
|
@ -11,13 +11,13 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "birdtray";
|
||||
version = "1.11.3";
|
||||
version = "1.11.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gyunaev";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-3SZf0ZK4AV/kuFttaHnPJuOJ9rn7CqFfv28d8ancPKw=";
|
||||
sha256 = "sha256-rj8tPzZzgW0hXmq8c1LiunIX1tO/tGAaqDGJgCQda5M=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
@ -203,7 +203,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
license = if unrarSupport
|
||||
then lib.licenses.unfreeRedistributable
|
||||
else lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ pSub AndersonTorres ];
|
||||
maintainers = with lib.maintainers; [ pSub ];
|
||||
platforms = lib.platforms.unix;
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-6SNXVe6EfVwcXH9O6BxNw+v4/uhKhCtVS3XE2GTc2Sc=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-xEPmNnaDwFU4l2G4cMvtNeQ9KneF5g9ViQSFrDkrafY=";
|
||||
vendorHash = "sha256-xEPmNnaDwFU4l2G4cMvtNeQ9KneF5g9ViQSFrDkrafY=";
|
||||
|
||||
nativeBuildInputs = [ scdoc ];
|
||||
|
||||
|
@ -16,7 +16,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-sqsogF2swMvYZL7Kj+ealrB1AAgIe7ZXXDLRdHL6Q+0=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-rIcwZUOi6bdfiWZEsRF4kl1reNPPQNuBPHDOo7RQgYo=";
|
||||
vendorHash = "sha256-rIcwZUOi6bdfiWZEsRF4kl1reNPPQNuBPHDOo7RQgYo=";
|
||||
|
||||
# package does not contain any tests as of v0.2.3
|
||||
doCheck = false;
|
||||
|
@ -10,7 +10,7 @@ buildGoModule rec {
|
||||
rev = version;
|
||||
hash = "sha256-nKNSLVBBdZI5mkbEUkMv0CIOQIyH3OX+SEFf5O47DFY=";
|
||||
};
|
||||
vendorSha256 = "sha256-Cx8x8AISRVTA4Ufd73vOVky97LX23NkizHDingr/zVk=";
|
||||
vendorHash = "sha256-Cx8x8AISRVTA4Ufd73vOVky97LX23NkizHDingr/zVk=";
|
||||
|
||||
ldflags = [ "-s" "-w" ];
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-h/x77xGqdOxPBxdchElZU9GFgjnNo89o9gx4fYM5dME=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-r69aFl3GwgZ1Zr4cEy4oWlqsrjNCrqjwW9BU9+d8xDQ=";
|
||||
vendorHash = "sha256-r69aFl3GwgZ1Zr4cEy4oWlqsrjNCrqjwW9BU9+d8xDQ=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -24,7 +24,7 @@ buildGoModule rec {
|
||||
pkg-config
|
||||
];
|
||||
|
||||
vendorSha256 = "sha256-4zgsoExdhEqvycGerNVxZ6LnjeRRO+f6DhJdINR5ZyI=";
|
||||
vendorHash = "sha256-4zgsoExdhEqvycGerNVxZ6LnjeRRO+f6DhJdINR5ZyI=";
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/thumbnailers
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-eemPsrSFwgUR1Jz7283jjwMkoJR38QiaiilI9G0IQuo=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-6b4H8YAY8d/qIGnnGPYZoXne1LXHLsc0OEq0lCeqivo=";
|
||||
vendorHash = "sha256-6b4H8YAY8d/qIGnnGPYZoXne1LXHLsc0OEq0lCeqivo=";
|
||||
|
||||
ldflags = [
|
||||
"-s" "-w"
|
||||
|
@ -2,24 +2,24 @@
|
||||
|
||||
let
|
||||
pname = "joplin-desktop";
|
||||
version = "2.11.11";
|
||||
version = "2.12.16";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
inherit (stdenv.hostPlatform) system;
|
||||
throwSystem = throw "Unsupported system: ${system}";
|
||||
|
||||
suffix = {
|
||||
x86_64-linux = "AppImage";
|
||||
x86_64-darwin = "dmg";
|
||||
aarch64-darwin = "dmg";
|
||||
x86_64-linux = ".AppImage";
|
||||
x86_64-darwin = ".dmg";
|
||||
aarch64-darwin = "-arm64.dmg";
|
||||
}.${system} or throwSystem;
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}.${suffix}";
|
||||
url = "https://github.com/laurent22/joplin/releases/download/v${version}/Joplin-${version}${suffix}";
|
||||
sha256 = {
|
||||
x86_64-linux = "sha256-r64+y+LfMrJnUdabVdak5+LQB50YLOuMXftlZ4s3C/w=";
|
||||
x86_64-darwin = "sha256-/dvaYHa7PT6FA63kmtjrErJZI9O+hIlKvHnf5RnfeZg=";
|
||||
aarch64-darwin = "sha256-/dvaYHa7PT6FA63kmtjrErJZI9O+hIlKvHnf5RnfeZg=";
|
||||
x86_64-linux = "sha256-9ib8lymmSINqC0oXUxkKcpKfPh7qmU3YytU1/4aKMLg=";
|
||||
x86_64-darwin = "sha256-vWc5yx3i5Ru8vrQbrTQwr43ZMBzOAb9254cxTHg6A/Q=";
|
||||
aarch64-darwin = "sha256-dhwPqT+zfBYOVUV5JprPfgrSJR2ZNsC3LJmRHGJVM4k=";
|
||||
}.${system} or throwSystem;
|
||||
};
|
||||
|
||||
|
@ -13,7 +13,7 @@ buildGoModule rec {
|
||||
|
||||
nativeBuildInputs = [ scdoc installShellFiles ];
|
||||
|
||||
vendorSha256 = "sha256-C1ueL/zmPzFbpNo5BF56/t74nwCUvb2Vu1exssPqOPE=";
|
||||
vendorHash = "sha256-C1ueL/zmPzFbpNo5BF56/t74nwCUvb2Vu1exssPqOPE=";
|
||||
|
||||
postInstall = ''
|
||||
scdoc < docs/kiln.1.scd > docs/kiln.1
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
hash = "sha256-KDpc0zc65rvvpPojghFEujoS0aewyjv7B/bmpC2i1dA=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Y/Sd2hu1bPUb0TQRD1pANz+rtqKcHBXvjKpYwKgxHMQ=";
|
||||
vendorHash = "sha256-Y/Sd2hu1bPUb0TQRD1pANz+rtqKcHBXvjKpYwKgxHMQ=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
@ -22,7 +22,7 @@ buildGoModule rec {
|
||||
})
|
||||
];
|
||||
|
||||
vendorSha256 = "sha256-wjQfTKVNmehu4aU5425gS0YWKj53dosVSTLgdu9KjKc=";
|
||||
vendorHash = "sha256-wjQfTKVNmehu4aU5425gS0YWKj53dosVSTLgdu9KjKc=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
27
pkgs/applications/misc/matcha-rss-digest/default.nix
Normal file
27
pkgs/applications/misc/matcha-rss-digest/default.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "matcha-rss-digest";
|
||||
version = "0.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "piqoni";
|
||||
repo = "matcha";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Zk85k2SllPR9zznLGevwH6hS1EEW2qEa9YXbSguRVeM=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-Dw1z23DRG0OtakJfrgpTfd71F58KfGsqz215zK0XOdI=";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/piqoni/matcha";
|
||||
description = "Daily digest generator from a list of RSS feeds";
|
||||
license = licenses.mit;
|
||||
mainProgram = "matcha";
|
||||
maintainers = with maintainers; [ foo-dogsquared ];
|
||||
};
|
||||
}
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-oe8RG8E7xcp3ZqdDXYvpOVF3AfeSBFMherHD1YYFE/M=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-kLQH7mMmBSsS9av+KnnEuBwiH6hzBOSozrn+1X+8774=";
|
||||
vendorHash = "sha256-kLQH7mMmBSsS9av+KnnEuBwiH6hzBOSozrn+1X+8774=";
|
||||
|
||||
preConfigure = ''
|
||||
for i in *.go **/*.go; do
|
||||
|
@ -14,7 +14,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-M948RGU9/PwUtFRmf1Po7KlrGxqRPiOZKfS1Vv3vqW8=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-HyrjquJ91ddkyS8JijHd9HjtfwSQykXCufa2wzl8RNk=";
|
||||
vendorHash = "sha256-HyrjquJ91ddkyS8JijHd9HjtfwSQykXCufa2wzl8RNk=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-BY2AtgZXzPLqHk3hd6D+XXbrwvWS9DNTKwLqsua/3uw=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-BbBTmkGyLrIWphXC+dBaHaVzHuXRZ+4N/Jt2k3nF7Z4=";
|
||||
vendorHash = "sha256-BbBTmkGyLrIWphXC+dBaHaVzHuXRZ+4N/Jt2k3nF7Z4=";
|
||||
|
||||
# The package has no tests.
|
||||
doCheck = false;
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-7pwCd9tey7w5B8UgsMLHegPqmmY1prLM+Sk9o42X9lY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Id2RaiSxthyR6egDQz2zulbSZ4STRTaA3yQIr6Mx9kg=";
|
||||
vendorHash = "sha256-Id2RaiSxthyR6egDQz2zulbSZ4STRTaA3yQIr6Mx9kg=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-TjlIX8FPNiPDQo41pIt04cki/orc+v30pV3o2bQQhAQ=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-zOWX0AiLAs1FtOn+VtRexfn6oOmJT1PoTPHkcpwvxRY=";
|
||||
vendorHash = "sha256-zOWX0AiLAs1FtOn+VtRexfn6oOmJT1PoTPHkcpwvxRY=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
@ -21,7 +21,7 @@ buildGoModule rec {
|
||||
go
|
||||
];
|
||||
|
||||
vendorSha256 = "sha256-c3YCf22L5+rTmH5ePeJ0/goRj5rKY6v+Zon3183MhMY=";
|
||||
vendorHash = "sha256-c3YCf22L5+rTmH5ePeJ0/goRj5rKY6v+Zon3183MhMY=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-xtvm/NVL98dRzQL1id/WwT/NdsnB7qTRVR7jfrRsabY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-sowzyhvNr7Ek3ex4BP415HhHSKnqPHy5EbnECDVZOGw=";
|
||||
vendorHash = "sha256-sowzyhvNr7Ek3ex4BP415HhHSKnqPHy5EbnECDVZOGw=";
|
||||
|
||||
ldflags = [ "-s" "-w" "-X main.version=${version}" "-X main.revision=${src.rev}" ];
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-CAqOsxmJxDgQRMx8cN23TajHd6BNiCFraFvhf5kKnzc=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Tk0yI/WFr0FV0AxJDStlP3XLem3v78ueuXyadhrLAog=";
|
||||
vendorHash = "sha256-Tk0yI/WFr0FV0AxJDStlP3XLem3v78ueuXyadhrLAog=";
|
||||
|
||||
postInstall = ''
|
||||
mv $out/bin/tasktimer $out/bin/tt
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-1y/WYLW6/HMGmuaX2wOlQbwYn0LcgQCMb4qw8BtCgxQ=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-Q0WOzyJGnTXTmj7ZPKyVSnWuWb4bbDjDpgftQ1Opf/I=";
|
||||
vendorHash = "sha256-Q0WOzyJGnTXTmj7ZPKyVSnWuWb4bbDjDpgftQ1Opf/I=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Show off your most used shell commands.";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-GnuqYgiwXdKM+os5RzuUYe9ADOhZaxou5dD7GCEE1Ns=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-IBer+8FP+IWWJPnaugr8zzQA9mSVFzP0Nofgl/PhtzQ=";
|
||||
vendorHash = "sha256-IBer+8FP+IWWJPnaugr8zzQA9mSVFzP0Nofgl/PhtzQ=";
|
||||
|
||||
nativeBuildInputs = [ go-bindata ];
|
||||
|
||||
|
@ -16,7 +16,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-qrGOrqI+PXsDNCmgcCPDNn6qUYu2emhYSkYsz4sj27M=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-c5nQVQd4n978kFAAKcx5mX2Jz16ZOhS8iL/oxS1o5xs=";
|
||||
vendorHash = "sha256-c5nQVQd4n978kFAAKcx5mX2Jz16ZOhS8iL/oxS1o5xs=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
@ -9,14 +9,14 @@ let
|
||||
rev = "824636a2c2629c329ab10275cef6a0b7395343ad";
|
||||
goVersionString = "g" + builtins.substring 0 7 rev; # this seems to be some kind of standard of git describe...
|
||||
sha256 = "0ly1yqjq29arbak8lchdradf39l5bmxpbfir6ljjc7nyqdxz0sxg";
|
||||
vendorSha256 = "sha256-w5ZijaK8Adt1ZHPMmXqRWq0v0jdprRKRu03rePtZLXA=";
|
||||
vendorHash = "sha256-w5ZijaK8Adt1ZHPMmXqRWq0v0jdprRKRu03rePtZLXA=";
|
||||
};
|
||||
release = rec {
|
||||
pname = "bee";
|
||||
version = "0.5.0";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "sha256-3Oy9RhgMPRFjUs3Dj8XUhAqoxx5BTi32OiK4Y8YEG2Q=";
|
||||
vendorSha256 = "sha256-w5ZijaK8Adt1ZHPMmXqRWq0v0jdprRKRu03rePtZLXA=";
|
||||
vendorHash = "sha256-w5ZijaK8Adt1ZHPMmXqRWq0v0jdprRKRu03rePtZLXA=";
|
||||
};
|
||||
"0.5.0" = release;
|
||||
"0.4.1" = rec {
|
||||
@ -24,14 +24,14 @@ let
|
||||
version = "0.4.1";
|
||||
rev = "refs/tags/v${version}";
|
||||
sha256 = "1bmgbav52pcb5p7cgq9756512fzfqhjybyr0dv538plkqx47mpv7";
|
||||
vendorSha256 = "0j393va4jrg9q3wlc9mgkbpgnn2w2s3k2hcn8phzj8d5fl4n4v2h";
|
||||
vendorHash = "sha256-UGxiCXWlIfnhRZZBMYcWXFj77pqvJkb5wOllSdQeaUg=";
|
||||
};
|
||||
}.${version};
|
||||
|
||||
in
|
||||
|
||||
buildGoModule {
|
||||
inherit (versionSpec) pname version vendorSha256;
|
||||
inherit (versionSpec) pname version vendorHash;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ethersphere";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-93xNzYPoy8VsbY2JyvDXt4J/gIbI2wzrCD83JUaP150=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-XtiGj2Tr6sSBduIjBspeZpYaSTd6x6EVf3VEVMXDAD0=";
|
||||
vendorHash = "sha256-XtiGj2Tr6sSBduIjBspeZpYaSTd6x6EVf3VEVMXDAD0=";
|
||||
|
||||
postInstall = lib.optionalString (!stdenv.isDarwin) ''
|
||||
sed -i "s:amfora:$out/bin/amfora:" amfora.desktop
|
||||
|
@ -54,12 +54,12 @@
|
||||
version = "2023-06-09";
|
||||
};
|
||||
ungoogled-patches = {
|
||||
rev = "116.0.5845.179-1";
|
||||
sha256 = "0if5717w6211fbhqzgfrigy5q6yag7lj6ycdjpn1b5d0ryc97rnr";
|
||||
rev = "116.0.5845.187-1";
|
||||
sha256 = "0br5lms6mxg2mg8ix5mkb79bg6wk5f2hn0xy1xc7gk9h3rl58is1";
|
||||
};
|
||||
};
|
||||
sha256 = "09b0i48sr5ynlhpya4lwnhgp081q4lqd23cc5l59dsxzh5ivbycb";
|
||||
sha256bin64 = "1d49qcjh5mhfzqzjn4ilj23dpzd6nyl1pij5iv43dwxl8z2r3l3m";
|
||||
version = "116.0.5845.179";
|
||||
sha256 = "152lyrw8k36gbmf4fmfny4ajqh0523y5d48yrshbgwn5klmbhaji";
|
||||
sha256bin64 = "118sk39939d52srws2vgs1mfizpikswxh5ihd9x053vzn0aj8cfa";
|
||||
version = "116.0.5845.187";
|
||||
};
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,10 +3,10 @@
|
||||
{
|
||||
firefox = buildMozillaMach rec {
|
||||
pname = "firefox";
|
||||
version = "117.0";
|
||||
version = "117.0.1";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "4d2afa9bac9d0724fb3568f77a8103d75e90635802f47f2023127de07d70ff145fb0c19e6a4fd37bfe93a7bbb1ec506955c0d4fe3b07057561ebea82b8d6c8d2";
|
||||
sha512 = "1583b0ad3b3b17c59bfbfb3e416074766327d0b926ef4f6c6b1e3b2d7cf6a18dec592b7d17fab9493ba1506f3540a02277096d28616dd29b6e7b9e93905f2071";
|
||||
};
|
||||
|
||||
meta = {
|
||||
@ -30,11 +30,11 @@
|
||||
|
||||
firefox-beta = buildMozillaMach rec {
|
||||
pname = "firefox-beta";
|
||||
version = "117.0b9";
|
||||
version = "118.0b7";
|
||||
applicationName = "Mozilla Firefox Beta";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "95e215f4280e177c3f763c6a8ab7ff56d6e0ca4aca2ac5eec8a3be7a461257e3aba236f3d122200e031d8e75ae2486779fb89d398defeefdb52589cb98a131b4";
|
||||
sha512 = "17dc6dbfe1c3085a7c85d53d7980660471253e64d081a01e59d0273b75c4000476bad31fe155c976a18c561c09c21ae9a95775c81bb99c5a53bea89f79b07cfb";
|
||||
};
|
||||
|
||||
meta = {
|
||||
@ -58,12 +58,12 @@
|
||||
|
||||
firefox-devedition = (buildMozillaMach rec {
|
||||
pname = "firefox-devedition";
|
||||
version = "117.0b9";
|
||||
version = "118.0b7";
|
||||
applicationName = "Mozilla Firefox Developer Edition";
|
||||
branding = "browser/branding/aurora";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "ab034e31467a7c9a57f5c32d486fb69a250d4293513babeeea8ff2042b0eac858be2c46c69469c700a7271f46a0c297ecdaa5ff651434adc8f9c157f80a97e43";
|
||||
sha512 = "636df06a41bba9909c50a1c433a6d14d42573cfa8ba28e57b87ed709fb06d81c1fcf4a24a8e1c794b6b7eb894a72e188d5e91bb46ce589a3438c8b75acb6e812";
|
||||
};
|
||||
|
||||
meta = {
|
||||
@ -90,11 +90,11 @@
|
||||
|
||||
firefox-esr-115 = buildMozillaMach rec {
|
||||
pname = "firefox-esr-115";
|
||||
version = "115.2.0esr";
|
||||
version = "115.2.1esr";
|
||||
applicationName = "Mozilla Firefox ESR";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "df3b4efd9607e8eb4932717760c865eb31ac7a96246cb4385190c33316c9595e0793a1f3c45ebb9674a9ba4fce98d83f71b063bef09ef307d92d1cd78d30d812";
|
||||
sha512 = "5f9ff96996e3c482fa4d2e2861fdf14d2154bf0277d412bf9c9435204c7e2e2539ce7ef0891d8dafc74d5a12650a5ccd33d79547aa1bbb2c2a0972aaeb755edf";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-Sfi58wcX61HNCmlDoparTqnfsuxu6barSnV0uYlC+ng=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-N78a0pjs2Bg2Bslk/I0ntL88ui4IkRGenL0Pn17Lt/w=";
|
||||
vendorHash = "sha256-N78a0pjs2Bg2Bslk/I0ntL88ui4IkRGenL0Pn17Lt/w=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Assigns loadBalancerIP address to a Kubernetes service for testing purposes";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-6NUuKU8KQBfHE6fcN3a9lBcUk7p5I9SuY9g+qJxGXmU=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-vZwADD7fi9ZvJby9Ijdeueid8jRfUyyj6Nu4kgkO5Wo=";
|
||||
vendorHash = "sha256-vZwADD7fi9ZvJby9Ijdeueid8jRfUyyj6Nu4kgkO5Wo=";
|
||||
|
||||
ldflags = [ "-s" "-w" "-X github.com/cloudposse/atmos/cmd.Version=v${version}" ];
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "128s5vd4hp5mr0rnb21grzmijzx0ibpv71as36dcgw7z4v3gq7lx";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-+r0QpD97r6dokUr07Qjb9kvoK+oz2rvml0cIebtYuHg=";
|
||||
vendorHash = "sha256-+r0QpD97r6dokUr07Qjb9kvoK+oz2rvml0cIebtYuHg=";
|
||||
|
||||
subPackages = [ "cmd/ctl" ];
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-g7fVeoqquxPa17AfTu6wnB6PQJDluJ21T3ETrcvWtWg=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-nH/myA/KdTeFXvmBymXITyx5fdCGnWRn6hNRinXc3/s=";
|
||||
vendorHash = "sha256-nH/myA/KdTeFXvmBymXITyx5fdCGnWRn6hNRinXc3/s=";
|
||||
|
||||
subPackages = [
|
||||
"./cnitool"
|
||||
|
@ -18,7 +18,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-hxS/+/fbYOpMJ5VfvvG5l7wWKBUUR22rYn9X79DzUUk=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-SyPd8P9s8R2YbGEPqFeztF98W1QyGSBumtirSdpm8VI=";
|
||||
vendorHash = "sha256-SyPd8P9s8R2YbGEPqFeztF98W1QyGSBumtirSdpm8VI=";
|
||||
|
||||
subPackages = [ "cmd/fetchit" ];
|
||||
|
||||
|
@ -23,7 +23,7 @@ in buildGoModule rec {
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-RVHDiJS1MhskVorS/SNZlXWP/oc8OXjUjApeanBkIWQ=";
|
||||
vendorHash = "sha256-RVHDiJS1MhskVorS/SNZlXWP/oc8OXjUjApeanBkIWQ=";
|
||||
|
||||
postUnpack = ''
|
||||
cp -r ${manifests} source/cmd/flux/manifests
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-rKZ0fI9UN4oq6gfDMNR2+kCazlDexE1+UVzQ3xgkSA8=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-6Trk49Vo3oMjSaHRDm2v+elPDHwdn2D3Z6i4UYcx0IQ=";
|
||||
vendorHash = "sha256-6Trk49Vo3oMjSaHRDm2v+elPDHwdn2D3Z6i4UYcx0IQ=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -2,17 +2,17 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "glooctl";
|
||||
version = "1.14.12";
|
||||
version = "1.15.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "solo-io";
|
||||
repo = "gloo";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-0ZrR3y3bTXLCOgN+c96lEfNnT+GKXeEBHifM9jfWTBI=";
|
||||
hash = "sha256-dQvvWlfCCc9QZFdOryX0bvLVdoBlhVMeP8MqQAYKua4=";
|
||||
};
|
||||
|
||||
subPackages = [ "projects/gloo/cli/cmd" ];
|
||||
vendorHash = "sha256-2DKRF68dNkFgSeGqI68j2knnGVfVxo0UvGD7YvPwx4M=";
|
||||
vendorHash = "sha256-FU8Siea+oH4xtSVwGk/dcivS6eNpIkWZiZqQ3EX9dwI=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
@ -14,7 +14,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-PdZ8X2pJ5TfT0bJ4/P/XbMTv+yyL5/1AxIFHnL/qNcg=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-dircE3WlDPsPnF+0wT5RG/c4hC8qPs8NaSGM5wpvVlM=";
|
||||
vendorHash = "sha256-dircE3WlDPsPnF+0wT5RG/c4hC8qPs8NaSGM5wpvVlM=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A lightweight utility to install HashiCorp Consul, Nomad, or Vault on any remote Linux host";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-kwcmZSOA26XuSgNSHitGaMohalnLobabXf4z3ybSJtk=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-ZtcCBXcJXX9ThzY6T0MhNfDDzRC9PYzRB1VyS4LLXLs=";
|
||||
vendorHash = "sha256-ZtcCBXcJXX9ThzY6T0MhNfDDzRC9PYzRB1VyS4LLXLs=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -15,7 +15,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-ntjrk2OEIkAmNpf9Ag6HkSIOSA3NtO9hSJOBgvne4b0=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-JlaXQqDO/b1xe9NA2JtuB1DZZlphWu3Mo/Mf4lhmKNo=";
|
||||
vendorHash = "sha256-JlaXQqDO/b1xe9NA2JtuB1DZZlphWu3Mo/Mf4lhmKNo=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-aEZTwXccKZDXRNWr4XS2ZpqtEnNGbsIVau8zPvaHTkk=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-7mzk2OP1p8FfRsbs4B6XP/szBeckm7Q7hf8AkbZUG2Q=";
|
||||
vendorHash = "sha256-7mzk2OP1p8FfRsbs4B6XP/szBeckm7Q7hf8AkbZUG2Q=";
|
||||
|
||||
ldflags = [
|
||||
"-s" "-w" "-X github.com/particledecay/kconf/build.Version=${version}"
|
||||
|
@ -61,8 +61,8 @@ rec {
|
||||
};
|
||||
|
||||
kops_1_27 = mkKops rec {
|
||||
version = "1.27.0";
|
||||
sha256 = "sha256-XJOdqOT/vMVXZmVasXRb+pdmWcSd6lsyQDCnZKyqrto=";
|
||||
version = "1.27.1";
|
||||
sha256 = "sha256-WV+0380yj8GHckY4PDM3WspbZ/YuYZOAQEMd2ygEOjo=";
|
||||
rev = "v${version}";
|
||||
};
|
||||
}
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-d1gtbpeK9vp8bwhsMOPVKmohfyEZtQuvRB36VZCB3sY=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-g5bLi0HQ7LQM+DKn5x8enXn8/9j3LFhgDjQ+YN0M7dM=";
|
||||
vendorHash = "sha256-g5bLi0HQ7LQM+DKn5x8enXn8/9j3LFhgDjQ+YN0M7dM=";
|
||||
|
||||
ldflags = [ "-s" "-w" "-X main.Version=${version}" ];
|
||||
|
||||
|
@ -20,7 +20,7 @@ buildGoModule rec {
|
||||
})
|
||||
];
|
||||
|
||||
vendorSha256 = "sha256-qhffg/s1RZFNW0nHLbJ89yqLzdC72ARXdbSfMLJK2pQ=";
|
||||
vendorHash = "sha256-qhffg/s1RZFNW0nHLbJ89yqLzdC72ARXdbSfMLJK2pQ=";
|
||||
|
||||
postInstall = ''
|
||||
mv $out/bin/{cmd,kubectl-doctor}
|
||||
|
@ -11,7 +11,7 @@ buildGo121Module rec {
|
||||
sha256 = "sha256-HO9/hr/CBmJkrbNdX8tp2pNRfZDaWNW8shyCR46G77A=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-QvD5yVaisq5Zz/M81HAMKpgQJRB5qPCYveLgldHHGf0=";
|
||||
vendorHash = "sha256-QvD5yVaisq5Zz/M81HAMKpgQJRB5qPCYveLgldHHGf0=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "A kubectl plugin to render watch output in a more readable fashion";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-nkIRVt2kqsE9QBYvvHmupohnzH+OBcwWwV16rMePw4I=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-IiAMmHOq69WMT2B1q9ZV2fGDnLr7AbRm1P7ACSde2FE=";
|
||||
vendorHash = "sha256-IiAMmHOq69WMT2B1q9ZV2fGDnLr7AbRm1P7ACSde2FE=";
|
||||
|
||||
subPackages = [ "." ];
|
||||
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-J4/fiTECcTE0N2E+MPrQKE9Msvvm8DLdvLbnDUnUo74=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-iblEfpYOvTjd3YXQ3Mmj5XckivHoXf4336H+F7NEfBA=";
|
||||
vendorHash = "sha256-iblEfpYOvTjd3YXQ3Mmj5XckivHoXf4336H+F7NEfBA=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "kubectl plugin to browse Kubernetes object hierarchies as a tree";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-QIvMhKAo30gInqJBpHvhcyjgVkdRqgBKwLQ80ng/75U=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-XXf6CPPHVvCTZA4Ve5/wmlgXQ/gZZUW0W/jXA0bJgLA=";
|
||||
vendorHash = "sha256-XXf6CPPHVvCTZA4Ve5/wmlgXQ/gZZUW0W/jXA0bJgLA=";
|
||||
|
||||
ldflags = [
|
||||
"-w" "-s"
|
||||
|
@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kubeone";
|
||||
version = "1.6.2";
|
||||
version = "1.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubermatic";
|
||||
repo = "kubeone";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-dLpe3C1gMnEyajJFPawDlTchYKA8cAy2QUAae6+7QBQ=";
|
||||
hash = "sha256-izUjiRQAdTpdk86s1lQwLfpHy4eJo3mGAgTwWfGkNAQ=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-aCRrf/E4UVL6PwUPRRzLjD+MzL8gcNJrc2IgKKyIIHI=";
|
||||
vendorHash = "sha256-AFyvTv1uVeq2KtRG6VToTBnX+8tHorDZPSturJhsrG4=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
@ -24,7 +24,7 @@ buildGoModule rec {
|
||||
})
|
||||
];
|
||||
|
||||
vendorSha256 = "sha256-R/vVrLsVSA9SGra4ytoHlQkPaIgQaj/XdivcQp8xjSM=";
|
||||
vendorHash = "sha256-R/vVrLsVSA9SGra4ytoHlQkPaIgQaj/XdivcQp8xjSM=";
|
||||
|
||||
doCheck = false;
|
||||
|
||||
|
@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "kubevpn";
|
||||
version = "1.1.36";
|
||||
version = "1.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KubeNetworks";
|
||||
repo = "kubevpn";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-wL6L94NNIPTYeUx+k78cFUdTMo9vIvzoKfXa2anCFQM=";
|
||||
sha256 = "sha256-C/GXcINuAtDdSN5CdoN62zeYlT9L6cXDTDR9S3eMP4w=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-24mw5ku0pQX2QNQPA9E+wowS3y0J+oKiIxuyVGcgBro=";
|
||||
|
@ -11,7 +11,7 @@ buildGoModule rec {
|
||||
sha256 = "sha256-UI8PVvTqk8D4S9kq3sgxrm8dkRokpgkLyTN6pzUXNV0=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-MzKttGfuIg0Pp/iz68EpXuk4I+tFozhIabKlsWuvJ48=";
|
||||
vendorHash = "sha256-MzKttGfuIg0Pp/iz68EpXuk4I+tFozhIabKlsWuvJ48=";
|
||||
|
||||
# The tests try to connect to a Nomad cluster.
|
||||
doCheck = false;
|
||||
|
@ -4,5 +4,5 @@
|
||||
channel = "stable";
|
||||
version = "2.14.0";
|
||||
sha256 = "0j4qzmfhi286vsngf1j3s8zhk7xj2saqr27clmjy7ypjszlz5rvm";
|
||||
vendorSha256 = "sha256-HxxekAipoWNxcLUSOSwUOXlrWMODw7gS8fcyTD3CMYE=";
|
||||
vendorHash = "sha256-HxxekAipoWNxcLUSOSwUOXlrWMODw7gS8fcyTD3CMYE=";
|
||||
}
|
||||
|
@ -4,5 +4,5 @@
|
||||
channel = "edge";
|
||||
version = "23.8.3";
|
||||
sha256 = "1mj16nzs2da530lvvsg6gh8fcgy8rwq13mryqznflgyr39x4c56i";
|
||||
vendorSha256 = "sha256-HxxekAipoWNxcLUSOSwUOXlrWMODw7gS8fcyTD3CMYE=";
|
||||
vendorHash = "sha256-HxxekAipoWNxcLUSOSwUOXlrWMODw7gS8fcyTD3CMYE=";
|
||||
}
|
||||
|
@ -1,10 +1,10 @@
|
||||
{ lib, fetchFromGitHub, buildGoModule, installShellFiles }:
|
||||
|
||||
{ channel, version, sha256, vendorSha256 }:
|
||||
{ channel, version, sha256, vendorHash }:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "linkerd-${channel}";
|
||||
inherit version vendorSha256;
|
||||
inherit version vendorHash;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linkerd";
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user