Merge branch 'NixOS:master' into master
This commit is contained in:
@@ -27,6 +27,7 @@ jobs:
|
||||
uses: korthout/backport-action@v1.2.0
|
||||
with:
|
||||
# Config README: https://github.com/korthout/backport-action#backport-action
|
||||
copy_labels_pattern: 'severity:\ssecurity'
|
||||
pull_description: |-
|
||||
Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}.
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ on:
|
||||
- master
|
||||
paths:
|
||||
- 'doc/**'
|
||||
- 'lib/**'
|
||||
|
||||
jobs:
|
||||
nixpkgs:
|
||||
|
||||
@@ -101,6 +101,7 @@ in
|
||||
diskSize = "auto";
|
||||
additionalSpace = "0M"; # Defaults to 512M.
|
||||
copyChannel = false;
|
||||
memSize = 2048; # Qemu VM memory size in megabytes. Defaults to 1024M.
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
+4
-1
@@ -1,4 +1,7 @@
|
||||
{ " " = 32;
|
||||
{ "\t" = 9;
|
||||
"\n" = 10;
|
||||
"\r" = 13;
|
||||
" " = 32;
|
||||
"!" = 33;
|
||||
"\"" = 34;
|
||||
"#" = 35;
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ let
|
||||
escapeShellArg escapeShellArgs
|
||||
isStorePath isStringLike
|
||||
isValidPosixName toShellVar toShellVars
|
||||
escapeRegex escapeXML replaceChars lowerChars
|
||||
escapeRegex escapeURL escapeXML replaceChars lowerChars
|
||||
upperChars toLower toUpper addContextFrom splitString
|
||||
removePrefix removeSuffix versionOlder versionAtLeast
|
||||
getName getVersion
|
||||
|
||||
@@ -81,7 +81,6 @@ in mkLicense lset) ({
|
||||
apsl10 = {
|
||||
spdxId = "APSL-1.0";
|
||||
fullName = "Apple Public Source License 1.0";
|
||||
url = "https://web.archive.org/web/20040701000000*/http://www.opensource.apple.com/apsl/1.0.txt";
|
||||
};
|
||||
|
||||
apsl20 = {
|
||||
|
||||
+5
-7
@@ -110,10 +110,6 @@ rec {
|
||||
/* Creates an Option attribute set for an option that specifies the
|
||||
package a module should use for some purpose.
|
||||
|
||||
Type: mkPackageOption :: pkgs -> (string|[string]) ->
|
||||
{ default? :: [string], example? :: null|string|[string], extraDescription? :: string } ->
|
||||
option
|
||||
|
||||
The package is specified in the third argument under `default` as a list of strings
|
||||
representing its attribute path in nixpkgs (or another package set).
|
||||
Because of this, you need to pass nixpkgs itself (or a subset) as the first argument.
|
||||
@@ -133,6 +129,8 @@ rec {
|
||||
|
||||
If you wish to explicitly provide no default, pass `null` as `default`.
|
||||
|
||||
Type: mkPackageOption :: pkgs -> (string|[string]) -> { default? :: [string], example? :: null|string|[string], extraDescription? :: string } -> option
|
||||
|
||||
Example:
|
||||
mkPackageOption pkgs "hello" { }
|
||||
=> { _type = "option"; default = «derivation /nix/store/3r2vg51hlxj3cx5vscp0vkv60bqxkaq0-hello-2.10.drv»; defaultText = { ... }; description = "The hello package to use."; type = { ... }; }
|
||||
@@ -157,11 +155,11 @@ rec {
|
||||
# Name for the package, shown in option description
|
||||
name:
|
||||
{
|
||||
# The attribute path where the default package is located
|
||||
# The attribute path where the default package is located (may be omitted)
|
||||
default ? name,
|
||||
# A string or an attribute path to use as an example
|
||||
# A string or an attribute path to use as an example (may be omitted)
|
||||
example ? null,
|
||||
# Additional text to include in the option description
|
||||
# Additional text to include in the option description (may be omitted)
|
||||
extraDescription ? "",
|
||||
}:
|
||||
let
|
||||
|
||||
+18
-3
@@ -4,6 +4,8 @@ let
|
||||
|
||||
inherit (builtins) length;
|
||||
|
||||
asciiTable = import ./ascii-table.nix;
|
||||
|
||||
in
|
||||
|
||||
rec {
|
||||
@@ -327,9 +329,7 @@ rec {
|
||||
=> 40
|
||||
|
||||
*/
|
||||
charToInt = let
|
||||
table = import ./ascii-table.nix;
|
||||
in c: builtins.getAttr c table;
|
||||
charToInt = c: builtins.getAttr c asciiTable;
|
||||
|
||||
/* Escape occurrence of the elements of `list` in `string` by
|
||||
prefixing it with a backslash.
|
||||
@@ -355,6 +355,21 @@ rec {
|
||||
*/
|
||||
escapeC = list: replaceStrings list (map (c: "\\x${ toLower (lib.toHexString (charToInt c))}") list);
|
||||
|
||||
/* Escape the string so it can be safely placed inside a URL
|
||||
query.
|
||||
|
||||
Type: escapeURL :: string -> string
|
||||
|
||||
Example:
|
||||
escapeURL "foo/bar baz"
|
||||
=> "foo%2Fbar%20baz"
|
||||
*/
|
||||
escapeURL = let
|
||||
unreserved = [ "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" "Q" "R" "S" "T" "U" "V" "W" "X" "Y" "Z" "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" "0" "1" "2" "3" "4" "5" "6" "7" "8" "9" "-" "_" "." "~" ];
|
||||
toEscape = builtins.removeAttrs asciiTable unreserved;
|
||||
in
|
||||
replaceStrings (builtins.attrNames toEscape) (lib.mapAttrsToList (_: c: "%${fixedWidthString 2 "0" (lib.toHexString c)}") toEscape);
|
||||
|
||||
/* Quote string to be used safely within the Bourne shell.
|
||||
|
||||
Type: escapeShellArg :: string -> string
|
||||
|
||||
@@ -347,6 +347,15 @@ runTests {
|
||||
expected = "Hello\\x20World";
|
||||
};
|
||||
|
||||
testEscapeURL = testAllTrue [
|
||||
("" == strings.escapeURL "")
|
||||
("Hello" == strings.escapeURL "Hello")
|
||||
("Hello%20World" == strings.escapeURL "Hello World")
|
||||
("Hello%2FWorld" == strings.escapeURL "Hello/World")
|
||||
("42%25" == strings.escapeURL "42%")
|
||||
("%20%3F%26%3D%23%2B%25%21%3C%3E%23%22%7B%7D%7C%5C%5E%5B%5D%60%09%3A%2F%40%24%27%28%29%2A%2C%3B" == strings.escapeURL " ?&=#+%!<>#\"{}|\\^[]`\t:/@$'()*,;")
|
||||
];
|
||||
|
||||
testToInt = testAllTrue [
|
||||
# Naive
|
||||
(123 == toInt "123")
|
||||
|
||||
@@ -206,6 +206,12 @@
|
||||
githubId = 22131756;
|
||||
name = "Aaqa Ishtyaq";
|
||||
};
|
||||
aaronarinder = {
|
||||
email = "aaronarinder@gmail.com";
|
||||
github = "aaronArinder";
|
||||
githubId = 26738844;
|
||||
name = "Aaron Arinder";
|
||||
};
|
||||
aaronjanse = {
|
||||
email = "aaron@ajanse.me";
|
||||
matrix = "@aaronjanse:matrix.org";
|
||||
@@ -3601,6 +3607,13 @@
|
||||
githubId = 62989;
|
||||
name = "Demyan Rogozhin";
|
||||
};
|
||||
dennajort = {
|
||||
email = "gosselinjb@gmail.com";
|
||||
matrix = "@dennajort:matrix.org";
|
||||
github = "dennajort";
|
||||
githubId = 1536838;
|
||||
name = "Jean-Baptiste Gosselin";
|
||||
};
|
||||
derchris = {
|
||||
email = "derchris@me.com";
|
||||
github = "derchrisuk";
|
||||
@@ -8949,6 +8962,9 @@
|
||||
github = "Ma27";
|
||||
githubId = 6025220;
|
||||
name = "Maximilian Bosch";
|
||||
keys = [{
|
||||
fingerprint = "62B9 9C26 F046 721E 26B0 04F6 D006 A998 C6AB FDF1";
|
||||
}];
|
||||
};
|
||||
ma9e = {
|
||||
email = "sean@lfo.team";
|
||||
@@ -11938,6 +11954,12 @@
|
||||
githubId = 146413;
|
||||
name = "Tobias Poschwatta";
|
||||
};
|
||||
PowerUser64 = {
|
||||
email = "blakelysnorth@gmail.com";
|
||||
github = "PowerUser64";
|
||||
githubId = 24578572;
|
||||
name = "Blake North";
|
||||
};
|
||||
ppenguin = {
|
||||
name = "Jeroen Versteeg";
|
||||
email = "hieronymusv@gmail.com";
|
||||
@@ -12286,6 +12308,12 @@
|
||||
githubId = 314564;
|
||||
name = "Ryan Lahfa";
|
||||
};
|
||||
ralismark = {
|
||||
email = "nixpkgs@ralismark.xyz";
|
||||
github = "ralismark";
|
||||
githubId = 13449732;
|
||||
name = "Temmie";
|
||||
};
|
||||
raphaelr = {
|
||||
email = "raphael-git@tapesoftware.net";
|
||||
matrix = "@raphi:tapesoftware.net";
|
||||
@@ -12883,6 +12911,7 @@
|
||||
email = "rrbutani+nix@gmail.com";
|
||||
github = "rrbutani";
|
||||
githubId = 7833358;
|
||||
matrix = "@rbutani:matrix.org";
|
||||
keys = [{
|
||||
fingerprint = "7DCA 5615 8AB2 621F 2F32 9FF4 1C7C E491 479F A273";
|
||||
}];
|
||||
@@ -12978,6 +13007,12 @@
|
||||
githubId = 12877905;
|
||||
name = "Roman Volosatovs";
|
||||
};
|
||||
rxiao = {
|
||||
email = "ben.xiao@me.com";
|
||||
github = "benxiao";
|
||||
githubId = 10908495;
|
||||
name = "Ran Xiao";
|
||||
};
|
||||
ryanartecona = {
|
||||
email = "ryanartecona@gmail.com";
|
||||
github = "ryanartecona";
|
||||
@@ -15970,6 +16005,15 @@
|
||||
fingerprint = "DA03 D6C6 3F58 E796 AD26 E99B 366A 2940 479A 06FC";
|
||||
}];
|
||||
};
|
||||
williamvds = {
|
||||
email = "nixpkgs@williamvds.me";
|
||||
github = "williamvds";
|
||||
githubId = 26379999;
|
||||
name = "William Vigolo";
|
||||
keys = [{
|
||||
fingerprint = "9848 B216 BCBE 29BB 1C6A E0D5 7A4D F5A8 CDBD 49C7";
|
||||
}];
|
||||
};
|
||||
willibutz = {
|
||||
email = "willibutz@posteo.de";
|
||||
github = "WilliButz";
|
||||
|
||||
@@ -26,6 +26,7 @@ Because step 1) is quite expensive and takes roughly ~5 minutes the result is ca
|
||||
{-# LANGUAGE TupleSections #-}
|
||||
{-# LANGUAGE ViewPatterns #-}
|
||||
{-# OPTIONS_GHC -Wall #-}
|
||||
{-# LANGUAGE DataKinds #-}
|
||||
|
||||
import Control.Monad (forM_, (<=<))
|
||||
import Control.Monad.Trans (MonadIO (liftIO))
|
||||
@@ -54,17 +55,22 @@ import Data.Time (defaultTimeLocale, formatTime, getCurrentTime)
|
||||
import Data.Time.Clock (UTCTime)
|
||||
import GHC.Generics (Generic)
|
||||
import Network.HTTP.Req (
|
||||
GET (GET),
|
||||
NoReqBody (NoReqBody),
|
||||
defaultHttpConfig,
|
||||
header,
|
||||
https,
|
||||
jsonResponse,
|
||||
req,
|
||||
responseBody,
|
||||
responseTimeout,
|
||||
runReq,
|
||||
(/:),
|
||||
GET (GET),
|
||||
HttpResponse (HttpResponseBody),
|
||||
NoReqBody (NoReqBody),
|
||||
Option,
|
||||
Req,
|
||||
Scheme (Https),
|
||||
bsResponse,
|
||||
defaultHttpConfig,
|
||||
header,
|
||||
https,
|
||||
jsonResponse,
|
||||
req,
|
||||
responseBody,
|
||||
responseTimeout,
|
||||
runReq,
|
||||
(/:),
|
||||
)
|
||||
import System.Directory (XdgDirectory (XdgCache), getXdgDirectory)
|
||||
import System.Environment (getArgs)
|
||||
@@ -76,6 +82,10 @@ import Control.Exception (evaluate)
|
||||
import qualified Data.IntMap.Strict as IntMap
|
||||
import qualified Data.IntSet as IntSet
|
||||
import Data.Bifunctor (second)
|
||||
import Data.Data (Proxy)
|
||||
import Data.ByteString (ByteString)
|
||||
import qualified Data.ByteString.Char8 as ByteString
|
||||
import Distribution.Simple.Utils (safeLast, fromUTF8BS)
|
||||
|
||||
newtype JobsetEvals = JobsetEvals
|
||||
{ evals :: Seq Eval
|
||||
@@ -123,17 +133,31 @@ showT = Text.pack . show
|
||||
|
||||
getBuildReports :: IO ()
|
||||
getBuildReports = runReq defaultHttpConfig do
|
||||
evalMay <- Seq.lookup 0 . evals <$> myReq (https "hydra.nixos.org" /: "jobset" /: "nixpkgs" /: "haskell-updates" /: "evals") mempty
|
||||
evalMay <- Seq.lookup 0 . evals <$> hydraJSONQuery mempty ["jobset", "nixpkgs", "haskell-updates", "evals"]
|
||||
eval@Eval{id} <- maybe (liftIO $ fail "No Evalution found") pure evalMay
|
||||
liftIO . putStrLn $ "Fetching evaluation " <> show id <> " from Hydra. This might take a few minutes..."
|
||||
buildReports :: Seq Build <- myReq (https "hydra.nixos.org" /: "eval" /: showT id /: "builds") (responseTimeout 600000000)
|
||||
buildReports :: Seq Build <- hydraJSONQuery (responseTimeout 600000000) ["eval", showT id, "builds"]
|
||||
liftIO do
|
||||
fileName <- reportFileName
|
||||
putStrLn $ "Finished fetching all builds from Hydra, saving report as " <> fileName
|
||||
now <- getCurrentTime
|
||||
encodeFile fileName (eval, now, buildReports)
|
||||
where
|
||||
myReq query option = responseBody <$> req GET query NoReqBody jsonResponse (header "User-Agent" "hydra-report.hs/v1 (nixpkgs;maintainers/scripts/haskell)" <> option)
|
||||
|
||||
hydraQuery :: HttpResponse a => Proxy a -> Option 'Https -> [Text] -> Req (HttpResponseBody a)
|
||||
hydraQuery responseType option query =
|
||||
responseBody
|
||||
<$> req
|
||||
GET
|
||||
(foldl' (/:) (https "hydra.nixos.org") query)
|
||||
NoReqBody
|
||||
responseType
|
||||
(header "User-Agent" "hydra-report.hs/v1 (nixpkgs;maintainers/scripts/haskell)" <> option)
|
||||
|
||||
hydraJSONQuery :: FromJSON a => Option 'Https -> [Text] -> Req a
|
||||
hydraJSONQuery = hydraQuery jsonResponse
|
||||
|
||||
hydraPlainQuery :: [Text] -> Req ByteString
|
||||
hydraPlainQuery = hydraQuery bsResponse mempty
|
||||
|
||||
hydraEvalCommand :: FilePath
|
||||
hydraEvalCommand = "hydra-eval-jobs"
|
||||
@@ -326,23 +350,24 @@ instance Functor (Table row col) where
|
||||
instance Foldable (Table row col) where
|
||||
foldMap f (Table a) = foldMap f a
|
||||
|
||||
getBuildState :: Build -> BuildState
|
||||
getBuildState Build{finished, buildstatus} = case (finished, buildstatus) of
|
||||
(0, _) -> Unfinished
|
||||
(_, Just 0) -> Success
|
||||
(_, Just 1) -> Failed
|
||||
(_, Just 2) -> DependencyFailed
|
||||
(_, Just 3) -> HydraFailure
|
||||
(_, Just 4) -> Canceled
|
||||
(_, Just 7) -> TimedOut
|
||||
(_, Just 11) -> OutputLimitExceeded
|
||||
(_, i) -> Unknown i
|
||||
|
||||
buildSummary :: MaintainerMap -> ReverseDependencyMap -> Seq Build -> StatusSummary
|
||||
buildSummary maintainerMap reverseDependencyMap = foldl (Map.unionWith unionSummary) Map.empty . fmap toSummary
|
||||
where
|
||||
unionSummary (SummaryEntry (Table lb) lm lr lu) (SummaryEntry (Table rb) rm rr ru) = SummaryEntry (Table $ Map.union lb rb) (lm <> rm) (max lr rr) (max lu ru)
|
||||
toSummary Build{finished, buildstatus, job, id, system} = Map.singleton name (SummaryEntry (Table (Map.singleton (set, Platform system) (BuildResult state id))) maintainers reverseDeps unbrokenReverseDeps)
|
||||
toSummary build@Build{job, id, system} = Map.singleton name (SummaryEntry (Table (Map.singleton (set, Platform system) (BuildResult (getBuildState build) id))) maintainers reverseDeps unbrokenReverseDeps)
|
||||
where
|
||||
state :: BuildState
|
||||
state = case (finished, buildstatus) of
|
||||
(0, _) -> Unfinished
|
||||
(_, Just 0) -> Success
|
||||
(_, Just 1) -> Failed
|
||||
(_, Just 2) -> DependencyFailed
|
||||
(_, Just 3) -> HydraFailure
|
||||
(_, Just 4) -> Canceled
|
||||
(_, Just 7) -> TimedOut
|
||||
(_, Just 11) -> OutputLimitExceeded
|
||||
(_, i) -> Unknown i
|
||||
packageName = fromMaybe job (Text.stripSuffix ("." <> system) job)
|
||||
splitted = nonEmpty $ Text.splitOn "." packageName
|
||||
name = maybe packageName NonEmpty.last splitted
|
||||
@@ -486,8 +511,23 @@ printMaintainerPing = do
|
||||
|
||||
printMarkBrokenList :: IO ()
|
||||
printMarkBrokenList = do
|
||||
(_, _, buildReport) <- readBuildReports
|
||||
forM_ buildReport \Build{buildstatus, job} ->
|
||||
case (buildstatus, Text.splitOn "." job) of
|
||||
(Just 1, ["haskellPackages", name, "x86_64-linux"]) -> putStrLn $ " - " <> Text.unpack name
|
||||
(_, fetchTime, buildReport) <- readBuildReports
|
||||
runReq defaultHttpConfig $ forM_ buildReport \build@Build{job, id} ->
|
||||
case (getBuildState build, Text.splitOn "." 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
|
||||
liftIO $ putStrLn $ " - " <> Text.unpack name <> " # " <> error_message <> " in job https://hydra.nixos.org/build/" <> show id <> " at " <> formatTime defaultTimeLocale "%Y-%m-%d" fetchTime
|
||||
_ -> pure ()
|
||||
|
||||
{- | This function receives a line from a Nix Haskell builder build log and returns a possible error cause.
|
||||
| We might need to add other causes in the future if errors happen in unusual parts of the builder.
|
||||
-}
|
||||
probableErrorCause :: ByteString -> Maybe String
|
||||
probableErrorCause "Setup: Encountered missing or private dependencies:" = Just "dependency missing"
|
||||
probableErrorCause "running tests" = Just "test failure"
|
||||
probableErrorCause build_line | ByteString.isPrefixOf "Building" build_line = Just ("failure building " <> fromUTF8BS (fst $ ByteString.breakSubstring " for" $ ByteString.drop 9 build_line))
|
||||
probableErrorCause build_line | ByteString.isSuffixOf "Phase" build_line = Just ("failure in " <> fromUTF8BS build_line)
|
||||
probableErrorCause _ = Nothing
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
# Related scripts are update-hackage.sh, for updating the snapshot of the
|
||||
# Hackage database used by hackage2nix, and update-cabal2nix-unstable.sh,
|
||||
# for updating the version of hackage2nix used to perform this task.
|
||||
#
|
||||
# Note that this script doesn't gcroot anything, so it may be broken by an
|
||||
# unfortunately timed nix-store --gc.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
@@ -20,15 +23,21 @@ HACKAGE2NIX="${HACKAGE2NIX:-hackage2nix}"
|
||||
# See: https://github.com/NixOS/nixpkgs/pull/122023
|
||||
export LC_ALL=C.UTF-8
|
||||
|
||||
config_dir=pkgs/development/haskell-modules/configuration-hackage2nix
|
||||
|
||||
echo "Obtaining Hackage data"
|
||||
extraction_derivation='with import ./. {}; runCommandLocal "unpacked-cabal-hashes" { } "tar xf ${all-cabal-hashes} --strip-components=1 --one-top-level=$out"'
|
||||
unpacked_hackage="$(nix-build -E "$extraction_derivation" --no-out-link)"
|
||||
config_dir=pkgs/development/haskell-modules/configuration-hackage2nix
|
||||
|
||||
echo "Generating compiler configuration"
|
||||
compiler_config="$(nix-build -A haskellPackages.cabal2nix-unstable.compilerConfig --no-out-link)"
|
||||
|
||||
echo "Starting hackage2nix to regenerate pkgs/development/haskell-modules/hackage-packages.nix ..."
|
||||
"$HACKAGE2NIX" \
|
||||
--hackage "$unpacked_hackage" \
|
||||
--preferred-versions <(for n in "$unpacked_hackage"/*/preferred-versions; do cat "$n"; echo; done) \
|
||||
--nixpkgs "$PWD" \
|
||||
--config "$compiler_config" \
|
||||
--config "$config_dir/main.yaml" \
|
||||
--config "$config_dir/stackage.yaml" \
|
||||
--config "$config_dir/broken.yaml" \
|
||||
|
||||
@@ -19,6 +19,7 @@ fennel,,,,,,misterio77
|
||||
fifo,,,,,,
|
||||
fluent,,,,,,alerque
|
||||
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
|
||||
haskell-tools.nvim,,,,,,
|
||||
http,,,,0.3-0,,vcunat
|
||||
inspect,,,,,,
|
||||
jsregexp,,,,,,
|
||||
@@ -102,6 +103,8 @@ std._debug,https://github.com/lua-stdlib/_debug.git,,,,,
|
||||
std.normalize,https://github.com/lua-stdlib/normalize.git,,,,,
|
||||
stdlib,,,,41.2.2,,vyp
|
||||
teal-language-server,,,http://luarocks.org/dev,,,
|
||||
telescope.nvim,,,,,5.1,
|
||||
telescope-manix,,,,,,
|
||||
tl,,,,,,mephistophiles
|
||||
vstruct,https://github.com/ToxicFrog/vstruct.git,,,,,
|
||||
vusted,,,,,,figsoda
|
||||
|
||||
|
@@ -135,28 +135,32 @@ let
|
||||
}
|
||||
'';
|
||||
|
||||
prepareManualFromMD = ''
|
||||
cp -r --no-preserve=all $inputs/* .
|
||||
|
||||
substituteInPlace ./manual.md \
|
||||
--replace '@NIXOS_VERSION@' "${version}"
|
||||
substituteInPlace ./configuration/configuration.md \
|
||||
--replace \
|
||||
'@MODULE_CHAPTERS@' \
|
||||
${lib.escapeShellArg (lib.concatMapStringsSep "\n" (p: "${p.value}") config.meta.doc)}
|
||||
substituteInPlace ./nixos-options.md \
|
||||
--replace \
|
||||
'@NIXOS_OPTIONS_JSON@' \
|
||||
${optionsDoc.optionsJSON}/share/doc/nixos/options.json
|
||||
substituteInPlace ./development/writing-nixos-tests.section.md \
|
||||
--replace \
|
||||
'@NIXOS_TEST_OPTIONS_JSON@' \
|
||||
${testOptionsDoc.optionsJSON}/share/doc/nixos/options.json
|
||||
'';
|
||||
|
||||
manual-combined = runCommand "nixos-manual-combined"
|
||||
{ inputs = lib.sourceFilesBySuffices ./. [ ".xml" ".md" ];
|
||||
nativeBuildInputs = [ pkgs.nixos-render-docs pkgs.libxml2.bin pkgs.libxslt.bin ];
|
||||
meta.description = "The NixOS manual as plain docbook XML";
|
||||
}
|
||||
''
|
||||
cp -r --no-preserve=all $inputs/* .
|
||||
|
||||
substituteInPlace ./manual.md \
|
||||
--replace '@NIXOS_VERSION@' "${version}"
|
||||
substituteInPlace ./configuration/configuration.md \
|
||||
--replace \
|
||||
'@MODULE_CHAPTERS@' \
|
||||
${lib.escapeShellArg (lib.concatMapStringsSep "\n" (p: "${p.value}") config.meta.doc)}
|
||||
substituteInPlace ./nixos-options.md \
|
||||
--replace \
|
||||
'@NIXOS_OPTIONS_JSON@' \
|
||||
${optionsDoc.optionsJSON}/share/doc/nixos/options.json
|
||||
substituteInPlace ./development/writing-nixos-tests.section.md \
|
||||
--replace \
|
||||
'@NIXOS_TEST_OPTIONS_JSON@' \
|
||||
${testOptionsDoc.optionsJSON}/share/doc/nixos/options.json
|
||||
${prepareManualFromMD}
|
||||
|
||||
nixos-render-docs -j $NIX_BUILD_CORES manual docbook \
|
||||
--manpage-urls ${manpageUrls} \
|
||||
@@ -193,7 +197,14 @@ in rec {
|
||||
|
||||
# Generate the NixOS manual.
|
||||
manualHTML = runCommand "nixos-manual-html"
|
||||
{ nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ];
|
||||
{ nativeBuildInputs =
|
||||
if allowDocBook then [
|
||||
buildPackages.libxml2.bin
|
||||
buildPackages.libxslt.bin
|
||||
] else [
|
||||
buildPackages.nixos-render-docs
|
||||
];
|
||||
inputs = lib.optionals (! allowDocBook) (lib.sourceFilesBySuffices ./. [ ".md" ]);
|
||||
meta.description = "The NixOS manual in HTML format";
|
||||
allowedReferences = ["out"];
|
||||
}
|
||||
@@ -201,23 +212,44 @@ in rec {
|
||||
# Generate the HTML manual.
|
||||
dst=$out/share/doc/nixos
|
||||
mkdir -p $dst
|
||||
xsltproc \
|
||||
${manualXsltprocOptions} \
|
||||
--stringparam id.warnings "1" \
|
||||
--nonet --output $dst/ \
|
||||
${docbook_xsl_ns}/xml/xsl/docbook/xhtml/chunktoc.xsl \
|
||||
${manual-combined}/manual-combined.xml \
|
||||
|& tee xsltproc.out
|
||||
grep "^ID recommended on" xsltproc.out &>/dev/null && echo "error: some IDs are missing" && false
|
||||
rm xsltproc.out
|
||||
|
||||
mkdir -p $dst/images/callouts
|
||||
cp ${docbook_xsl_ns}/xml/xsl/docbook/images/callouts/*.svg $dst/images/callouts/
|
||||
|
||||
cp ${../../../doc/style.css} $dst/style.css
|
||||
cp ${../../../doc/overrides.css} $dst/overrides.css
|
||||
cp -r ${pkgs.documentation-highlighter} $dst/highlightjs
|
||||
|
||||
${if allowDocBook then ''
|
||||
xsltproc \
|
||||
${manualXsltprocOptions} \
|
||||
--stringparam id.warnings "1" \
|
||||
--nonet --output $dst/ \
|
||||
${docbook_xsl_ns}/xml/xsl/docbook/xhtml/chunktoc.xsl \
|
||||
${manual-combined}/manual-combined.xml \
|
||||
|& tee xsltproc.out
|
||||
grep "^ID recommended on" xsltproc.out &>/dev/null && echo "error: some IDs are missing" && false
|
||||
rm xsltproc.out
|
||||
|
||||
mkdir -p $dst/images/callouts
|
||||
cp ${docbook_xsl_ns}/xml/xsl/docbook/images/callouts/*.svg $dst/images/callouts/
|
||||
'' else ''
|
||||
${prepareManualFromMD}
|
||||
|
||||
# TODO generator is set like this because the docbook/md manual compare workflow will
|
||||
# trigger if it's different
|
||||
nixos-render-docs -j $NIX_BUILD_CORES manual html \
|
||||
--manpage-urls ${manpageUrls} \
|
||||
--revision ${lib.escapeShellArg revision} \
|
||||
--generator "DocBook XSL Stylesheets V${docbook_xsl_ns.version}" \
|
||||
--stylesheet style.css \
|
||||
--stylesheet overrides.css \
|
||||
--stylesheet highlightjs/mono-blue.css \
|
||||
--script ./highlightjs/highlight.pack.js \
|
||||
--script ./highlightjs/loader.js \
|
||||
--toc-depth 1 \
|
||||
--chunk-toc-depth 1 \
|
||||
./manual.md \
|
||||
$dst/index.html
|
||||
''}
|
||||
|
||||
mkdir -p $out/nix-support
|
||||
echo "nix-build out $out" >> $out/nix-support/hydra-build-products
|
||||
echo "doc manual $dst" >> $out/nix-support/hydra-build-products
|
||||
|
||||
@@ -47,7 +47,10 @@ development/development.md
|
||||
contributing-to-this-manual.chapter.md
|
||||
```
|
||||
|
||||
```{=include=} appendix
|
||||
```{=include=} appendix html:into-file=//options.html
|
||||
nixos-options.md
|
||||
```
|
||||
|
||||
```{=include=} appendix html:into-file=//release-notes.html
|
||||
release-notes/release-notes.md
|
||||
```
|
||||
|
||||
@@ -8,6 +8,10 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- Core version changes:
|
||||
|
||||
- default linux: 5.15 -\> 6.1, all supported kernels available
|
||||
|
||||
- Cinnamon has been updated to 5.6, see [the pull request](https://github.com/NixOS/nixpkgs/pull/201328#issue-1449910204) for what is changed.
|
||||
|
||||
- KDE Plasma has been updated to v5.27, see [the release notes](https://kde.org/announcements/plasma/5/5.27.0/) for what is changed.
|
||||
@@ -105,7 +109,7 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- The EC2 image module previously detected and automatically mounted ext3-formatted instance store devices and partitions in stage-1 (initramfs), storing `/tmp` on the first discovered device. This behaviour, which only catered to very specific use cases and could not be disabled, has been removed. Users relying on this should provide their own implementation, and probably use ext4 and perform the mount in stage-2.
|
||||
|
||||
- `teleport` has been upgraded to major version 11. Please see upstream [upgrade instructions](https://goteleport.com/docs/setup/operations/upgrading/) and [release notes](https://goteleport.com/docs/changelog/#1100).
|
||||
- `teleport` has been upgraded from major version 10 to major version 12. Please see upstream [upgrade instructions](https://goteleport.com/docs/setup/operations/upgrading/) and release notes for versions [11](https://goteleport.com/docs/changelog/#1100) and [12](https://goteleport.com/docs/changelog/#1201). Note that Teleport does not officially support upgrades across more than one major version at a time. If you're running Teleport server components, it is recommended to first upgrade to an intermediate 11.x version by setting `services.teleport.package = pkgs.teleport_11`. Afterwards, this option can be removed to upgrade to the default version (12).
|
||||
|
||||
- The EC2 image module previously detected and activated swap-formatted instance store devices and partitions in stage-1 (initramfs). This behaviour has been removed. Users relying on this should provide their own implementation.
|
||||
|
||||
@@ -138,6 +142,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- [services.xserver.videoDrivers](options.html#opt-services.xserver.videoDrivers) now defaults to the `modesetting` driver over device-specific ones. The `radeon`, `amdgpu` and `nouveau` drivers are still available, but effectively unmaintained and not recommended for use.
|
||||
|
||||
- conntrack helper autodetection has been removed from kernels 6.0 and up upstream, and an assertion was added to ensure things don't silently stop working. Migrate your configuration to assign helpers explicitly or use an older LTS kernel branch as a temporary workaround.
|
||||
|
||||
## Other Notable Changes {#sec-release-23.05-notable-changes}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -170,6 +176,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||
|
||||
- NixOS now defaults to using nsncd (a non-caching reimplementation in Rust) as NSS lookup dispatcher, instead of the buggy and deprecated glibc-provided nscd. If you need to switch back, set `services.nscd.enableNsncd = false`, but please open an issue in nixpkgs so your issue can be fixed.
|
||||
|
||||
- `services.borgmatic` now allows for multiple configurations, placed in `/etc/borgmatic.d/`, you can define them with `services.borgmatic.configurations`.
|
||||
|
||||
- The `dnsmasq` service now takes configuration via the
|
||||
`services.dnsmasq.settings` attribute set. The option
|
||||
`services.dnsmasq.extraConfig` will be deprecated when NixOS 22.11 reaches
|
||||
|
||||
@@ -154,6 +154,9 @@ To solve this, you can run `fdisk -l $image` and generate `dd if=$image of=$imag
|
||||
, # Shell code executed after the VM has finished.
|
||||
postVM ? ""
|
||||
|
||||
, # Guest memory size
|
||||
memSize ? 1024
|
||||
|
||||
, # Copy the contents of the Nix store to the root of the image and
|
||||
# skip further setup. Incompatible with `contents`,
|
||||
# `installBootLoader` and `configFile`.
|
||||
@@ -525,7 +528,7 @@ let format' = format; in let
|
||||
"-drive if=pflash,format=raw,unit=1,file=$efiVars"
|
||||
]
|
||||
);
|
||||
memSize = 1024;
|
||||
inherit memSize;
|
||||
} ''
|
||||
export PATH=${binPath}:$PATH
|
||||
|
||||
|
||||
@@ -73,6 +73,9 @@
|
||||
, # Shell code executed after the VM has finished.
|
||||
postVM ? ""
|
||||
|
||||
, # Guest memory size
|
||||
memSize ? 1024
|
||||
|
||||
, name ? "nixos-disk-image"
|
||||
|
||||
, # Disk image format, one of qcow2, qcow2-compressed, vdi, vpc, raw.
|
||||
@@ -242,6 +245,7 @@ let
|
||||
{
|
||||
QEMU_OPTS = "-drive file=$bootDiskImage,if=virtio,cache=unsafe,werror=report"
|
||||
+ " -drive file=$rootDiskImage,if=virtio,cache=unsafe,werror=report";
|
||||
inherit memSize;
|
||||
preVM = ''
|
||||
PATH=$PATH:${pkgs.qemu_kvm}/bin
|
||||
mkdir $out
|
||||
|
||||
@@ -61,9 +61,9 @@ with lib;
|
||||
pinentry = super.pinentry.override { enabledFlavors = [ "curses" "tty" "emacs" ]; withLibsecret = false; };
|
||||
qemu = super.qemu.override { gtkSupport = false; spiceSupport = false; sdlSupport = false; };
|
||||
qrencode = super.qrencode.overrideAttrs (_: { doCheck = false; });
|
||||
qt5 = super.qt5.overrideScope' (self': super': {
|
||||
qt5 = super.qt5.overrideScope' (const (super': {
|
||||
qtbase = super'.qtbase.override { withGtk3 = false; };
|
||||
});
|
||||
}));
|
||||
stoken = super.stoken.override { withGTK3 = false; };
|
||||
# translateManpages -> perlPackages.po4a -> texlive-combined-basic -> texlive-core-big -> libX11
|
||||
util-linux = super.util-linux.override { translateManpages = false; };
|
||||
|
||||
@@ -180,7 +180,7 @@ in
|
||||
# extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||
# packages = with pkgs; [
|
||||
# firefox
|
||||
# thunderbird
|
||||
# tree
|
||||
# ];
|
||||
# };
|
||||
|
||||
|
||||
@@ -5,44 +5,58 @@ with lib;
|
||||
let
|
||||
cfg = config.services.borgmatic;
|
||||
settingsFormat = pkgs.formats.yaml { };
|
||||
|
||||
cfgType = with types; submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
options.location = {
|
||||
source_directories = mkOption {
|
||||
type = listOf str;
|
||||
description = mdDoc ''
|
||||
List of source directories to backup (required). Globs and
|
||||
tildes are expanded.
|
||||
'';
|
||||
example = [ "/home" "/etc" "/var/log/syslog*" ];
|
||||
};
|
||||
repositories = mkOption {
|
||||
type = listOf str;
|
||||
description = mdDoc ''
|
||||
Paths to local or remote repositories (required). Tildes are
|
||||
expanded. Multiple repositories are backed up to in
|
||||
sequence. Borg placeholders can be used. See the output of
|
||||
"borg help placeholders" for details. See ssh_command for
|
||||
SSH options like identity file or port. If systemd service
|
||||
is used, then add local repository paths in the systemd
|
||||
service file to the ReadWritePaths list.
|
||||
'';
|
||||
example = [
|
||||
"ssh://user@backupserver/./sourcehostname.borg"
|
||||
"ssh://user@backupserver/./{fqdn}"
|
||||
"/var/local/backups/local.borg"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
cfgfile = settingsFormat.generate "config.yaml" cfg.settings;
|
||||
in {
|
||||
in
|
||||
{
|
||||
options.services.borgmatic = {
|
||||
enable = mkEnableOption (lib.mdDoc "borgmatic");
|
||||
enable = mkEnableOption (mdDoc "borgmatic");
|
||||
|
||||
settings = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
description = mdDoc ''
|
||||
See https://torsion.org/borgmatic/docs/reference/configuration/
|
||||
'';
|
||||
type = types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
options.location = {
|
||||
source_directories = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = lib.mdDoc ''
|
||||
List of source directories to backup (required). Globs and
|
||||
tildes are expanded.
|
||||
'';
|
||||
example = [ "/home" "/etc" "/var/log/syslog*" ];
|
||||
};
|
||||
repositories = mkOption {
|
||||
type = types.listOf types.str;
|
||||
description = lib.mdDoc ''
|
||||
Paths to local or remote repositories (required). Tildes are
|
||||
expanded. Multiple repositories are backed up to in
|
||||
sequence. Borg placeholders can be used. See the output of
|
||||
"borg help placeholders" for details. See ssh_command for
|
||||
SSH options like identity file or port. If systemd service
|
||||
is used, then add local repository paths in the systemd
|
||||
service file to the ReadWritePaths list.
|
||||
'';
|
||||
example = [
|
||||
"user@backupserver:sourcehostname.borg"
|
||||
"user@backupserver:{fqdn}"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
default = null;
|
||||
type = types.nullOr cfgType;
|
||||
};
|
||||
|
||||
configurations = mkOption {
|
||||
description = mdDoc ''
|
||||
Set of borgmatic configurations, see https://torsion.org/borgmatic/docs/reference/configuration/
|
||||
'';
|
||||
default = { };
|
||||
type = types.attrsOf cfgType;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -50,9 +64,13 @@ in {
|
||||
|
||||
environment.systemPackages = [ pkgs.borgmatic ];
|
||||
|
||||
environment.etc."borgmatic/config.yaml".source = cfgfile;
|
||||
environment.etc = (optionalAttrs (cfg.settings != null) { "borgmatic/config.yaml".source = cfgfile; }) //
|
||||
mapAttrs'
|
||||
(name: value: nameValuePair
|
||||
"borgmatic.d/${name}.yaml"
|
||||
{ source = settingsFormat.generate "${name}.yaml" value; })
|
||||
cfg.configurations;
|
||||
|
||||
systemd.packages = [ pkgs.borgmatic ];
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -288,11 +288,11 @@ in
|
||||
LimitNOFILE = 65535;
|
||||
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
|
||||
LoadCredential = cfg.loadCredential;
|
||||
ExecStartPre = ''
|
||||
ExecStartPre = [''
|
||||
${pkgs.envsubst}/bin/envsubst \
|
||||
-i ${configurationYaml} \
|
||||
-o /run/dendrite/dendrite.yaml
|
||||
'';
|
||||
''];
|
||||
ExecStart = lib.strings.concatStringsSep " " ([
|
||||
"${pkgs.dendrite}/bin/dendrite-monolith-server"
|
||||
"--config /run/dendrite/dendrite.yaml"
|
||||
|
||||
@@ -5,7 +5,7 @@ with lib;
|
||||
let
|
||||
cfg = config.services.gitea;
|
||||
opt = options.services.gitea;
|
||||
gitea = cfg.package;
|
||||
exe = lib.getExe cfg.package;
|
||||
pg = config.services.postgresql;
|
||||
useMysql = cfg.database.type == "mysql";
|
||||
usePostgresql = cfg.database.type == "postgres";
|
||||
@@ -248,7 +248,7 @@ in
|
||||
|
||||
staticRootPath = mkOption {
|
||||
type = types.either types.str types.path;
|
||||
default = gitea.data;
|
||||
default = cfg.package.data;
|
||||
defaultText = literalExpression "package.data";
|
||||
example = "/var/lib/gitea/data";
|
||||
description = lib.mdDoc "Upper level of template and static files path.";
|
||||
@@ -481,14 +481,14 @@ in
|
||||
|
||||
# If we have a folder or symlink with gitea locales, remove it
|
||||
# And symlink the current gitea locales in place
|
||||
"L+ '${cfg.stateDir}/conf/locale' - - - - ${gitea.out}/locale"
|
||||
"L+ '${cfg.stateDir}/conf/locale' - - - - ${cfg.package.out}/locale"
|
||||
];
|
||||
|
||||
systemd.services.gitea = {
|
||||
description = "gitea";
|
||||
after = [ "network.target" ] ++ lib.optional usePostgresql "postgresql.service" ++ lib.optional useMysql "mysql.service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = [ gitea pkgs.git pkgs.gnupg ];
|
||||
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
|
||||
@@ -512,7 +512,7 @@ in
|
||||
cp -f ${configFile} ${runConfig}
|
||||
|
||||
if [ ! -s ${secretKey} ]; then
|
||||
${gitea}/bin/gitea generate secret SECRET_KEY > ${secretKey}
|
||||
${exe} generate secret SECRET_KEY > ${secretKey}
|
||||
fi
|
||||
|
||||
# Migrate LFS_JWT_SECRET filename
|
||||
@@ -521,15 +521,15 @@ in
|
||||
fi
|
||||
|
||||
if [ ! -s ${oauth2JwtSecret} ]; then
|
||||
${gitea}/bin/gitea generate secret JWT_SECRET > ${oauth2JwtSecret}
|
||||
${exe} generate secret JWT_SECRET > ${oauth2JwtSecret}
|
||||
fi
|
||||
|
||||
if [ ! -s ${lfsJwtSecret} ]; then
|
||||
${gitea}/bin/gitea generate secret LFS_JWT_SECRET > ${lfsJwtSecret}
|
||||
${exe} generate secret LFS_JWT_SECRET > ${lfsJwtSecret}
|
||||
fi
|
||||
|
||||
if [ ! -s ${internalToken} ]; then
|
||||
${gitea}/bin/gitea generate secret INTERNAL_TOKEN > ${internalToken}
|
||||
${exe} generate secret INTERNAL_TOKEN > ${internalToken}
|
||||
fi
|
||||
|
||||
chmod u+w '${runConfig}'
|
||||
@@ -548,15 +548,15 @@ in
|
||||
''}
|
||||
|
||||
# run migrations/init the database
|
||||
${gitea}/bin/gitea migrate
|
||||
${exe} migrate
|
||||
|
||||
# update all hooks' binary paths
|
||||
${gitea}/bin/gitea admin regenerate hooks
|
||||
${exe} admin regenerate hooks
|
||||
|
||||
# update command option in authorized_keys
|
||||
if [ -r ${cfg.stateDir}/.ssh/authorized_keys ]
|
||||
then
|
||||
${gitea}/bin/gitea admin regenerate keys
|
||||
${exe} admin regenerate keys
|
||||
fi
|
||||
'';
|
||||
|
||||
@@ -565,7 +565,7 @@ in
|
||||
User = cfg.user;
|
||||
Group = "gitea";
|
||||
WorkingDirectory = cfg.stateDir;
|
||||
ExecStart = "${gitea}/bin/gitea web --pid /run/gitea/gitea.pid";
|
||||
ExecStart = "${exe} web --pid /run/gitea/gitea.pid";
|
||||
Restart = "always";
|
||||
# Runtime directory and mode
|
||||
RuntimeDirectory = "gitea";
|
||||
@@ -597,7 +597,7 @@ in
|
||||
PrivateMounts = true;
|
||||
# System Call Filtering
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = "~@clock @cpu-emulation @debug @keyring @memlock @module @mount @obsolete @raw-io @reboot @setuid @swap";
|
||||
SystemCallFilter = "~@clock @cpu-emulation @debug @keyring @module @mount @obsolete @raw-io @reboot @setuid @swap";
|
||||
};
|
||||
|
||||
environment = {
|
||||
@@ -635,7 +635,7 @@ in
|
||||
systemd.services.gitea-dump = mkIf cfg.dump.enable {
|
||||
description = "gitea dump";
|
||||
after = [ "gitea.service" ];
|
||||
path = [ gitea ];
|
||||
path = [ cfg.package ];
|
||||
|
||||
environment = {
|
||||
USER = cfg.user;
|
||||
@@ -646,7 +646,7 @@ in
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
User = cfg.user;
|
||||
ExecStart = "${gitea}/bin/gitea dump --type ${cfg.dump.type}" + optionalString (cfg.dump.file != null) " --file ${cfg.dump.file}";
|
||||
ExecStart = "${exe} dump --type ${cfg.dump.type}" + optionalString (cfg.dump.file != null) " --file ${cfg.dump.file}";
|
||||
WorkingDirectory = cfg.dump.backupDir;
|
||||
};
|
||||
};
|
||||
@@ -658,5 +658,5 @@ in
|
||||
timerConfig.OnCalendar = cfg.dump.interval;
|
||||
};
|
||||
};
|
||||
meta.maintainers = with lib.maintainers; [ srhb ma27 ];
|
||||
meta.maintainers = with lib.maintainers; [ srhb ma27 thehedgeh0g ];
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ let
|
||||
pkg = cfg.package;
|
||||
|
||||
defaultUser = "paperless";
|
||||
nltkDir = "/var/cache/paperless/nltk";
|
||||
|
||||
# Don't start a redis instance if the user sets a custom redis connection
|
||||
enableRedis = !hasAttr "PAPERLESS_REDIS" cfg.extraConfig;
|
||||
@@ -15,6 +16,7 @@ let
|
||||
PAPERLESS_DATA_DIR = cfg.dataDir;
|
||||
PAPERLESS_MEDIA_ROOT = cfg.mediaDir;
|
||||
PAPERLESS_CONSUMPTION_DIR = cfg.consumptionDir;
|
||||
PAPERLESS_NLTK_DIR = nltkDir;
|
||||
GUNICORN_CMD_ARGS = "--bind=${cfg.address}:${toString cfg.port}";
|
||||
} // optionalAttrs (config.time.timeZone != null) {
|
||||
PAPERLESS_TIME_ZONE = config.time.timeZone;
|
||||
@@ -24,12 +26,14 @@ let
|
||||
lib.mapAttrs (_: toString) cfg.extraConfig
|
||||
);
|
||||
|
||||
manage = let
|
||||
setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);
|
||||
in pkgs.writeShellScript "manage" ''
|
||||
${setupEnv}
|
||||
exec ${pkg}/bin/paperless-ngx "$@"
|
||||
'';
|
||||
manage =
|
||||
let
|
||||
setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);
|
||||
in
|
||||
pkgs.writeShellScript "manage" ''
|
||||
${setupEnv}
|
||||
exec ${pkg}/bin/paperless-ngx "$@"
|
||||
'';
|
||||
|
||||
# Secure the services
|
||||
defaultServiceConfig = {
|
||||
@@ -47,6 +51,7 @@ let
|
||||
cfg.dataDir
|
||||
cfg.mediaDir
|
||||
];
|
||||
CacheDirectory = "paperless";
|
||||
CapabilityBoundingSet = "";
|
||||
# ProtectClock adds DeviceAllow=char-rtc r
|
||||
DeviceAllow = "";
|
||||
@@ -170,7 +175,7 @@ in
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.attrs;
|
||||
default = {};
|
||||
default = { };
|
||||
description = lib.mdDoc ''
|
||||
Extra paperless config options.
|
||||
|
||||
@@ -291,6 +296,33 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
# Download NLTK corpus data
|
||||
systemd.services.paperless-download-nltk-data = {
|
||||
wantedBy = [ "paperless-scheduler.service" ];
|
||||
before = [ "paperless-scheduler.service" ];
|
||||
after = [ "network-online.target" ];
|
||||
serviceConfig = defaultServiceConfig // {
|
||||
User = cfg.user;
|
||||
Type = "oneshot";
|
||||
# Enable internet access
|
||||
PrivateNetwork = false;
|
||||
# Restrict write access
|
||||
BindPaths = [];
|
||||
BindReadOnlyPaths = [
|
||||
"/nix/store"
|
||||
"-/etc/resolv.conf"
|
||||
"-/etc/nsswitch.conf"
|
||||
"-/etc/ssl/certs"
|
||||
"-/etc/static/ssl/certs"
|
||||
"-/etc/hosts"
|
||||
"-/etc/localtime"
|
||||
];
|
||||
ExecStart = let pythonWithNltk = pkg.python.withPackages (ps: [ ps.nltk ]); in ''
|
||||
${pythonWithNltk}/bin/python -m nltk.downloader -d '${nltkDir}' punkt snowball_data stopwords
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.paperless-consumer = {
|
||||
description = "Paperless document consumer";
|
||||
# Bind to `paperless-scheduler` so that the consumer never runs
|
||||
|
||||
@@ -269,6 +269,10 @@ in
|
||||
assertion = cfg.filterForward -> config.networking.nftables.enable;
|
||||
message = "filterForward only works with the nftables based firewall";
|
||||
}
|
||||
{
|
||||
assertion = cfg.autoLoadConntrackHelpers -> lib.versionOlder config.boot.kernelPackages.kernel.version "6";
|
||||
message = "conntrack helper autoloading has been removed from kernel 6.0 and newer";
|
||||
}
|
||||
];
|
||||
|
||||
networking.firewall.trustedInterfaces = [ "lo" ];
|
||||
|
||||
@@ -28,6 +28,32 @@ in
|
||||
<https://wiki.nftables.org/wiki-nftables/index.php/Troubleshooting#Question_4._How_do_nftables_and_iptables_interact_when_used_on_the_same_system.3F>.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.nftables.checkRuleset = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = lib.mdDoc ''
|
||||
Run `nft check` on the ruleset to spot syntax errors during build.
|
||||
Because this is executed in a sandbox, the check might fail if it requires
|
||||
access to any environmental factors or paths outside the Nix store.
|
||||
To circumvent this, the ruleset file can be edited using the preCheckRuleset
|
||||
option to work in the sandbox environment.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.nftables.preCheckRuleset = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
example = lib.literalExpression ''
|
||||
sed 's/skgid meadow/skgid nogroup/g' -i ruleset.conf
|
||||
'';
|
||||
description = lib.mdDoc ''
|
||||
This script gets run before the ruleset is checked. It can be used to
|
||||
create additional files needed for the ruleset check to work, or modify
|
||||
the ruleset for cases the build environment cannot cover.
|
||||
'';
|
||||
};
|
||||
|
||||
networking.nftables.ruleset = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
@@ -105,13 +131,24 @@ in
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
reloadIfChanged = true;
|
||||
serviceConfig = let
|
||||
rulesScript = pkgs.writeScript "nftables-rules" ''
|
||||
#! ${pkgs.nftables}/bin/nft -f
|
||||
flush ruleset
|
||||
${if cfg.rulesetFile != null then ''
|
||||
include "${cfg.rulesetFile}"
|
||||
'' else cfg.ruleset}
|
||||
'';
|
||||
rulesScript = pkgs.writeTextFile {
|
||||
name = "nftables-rules";
|
||||
executable = true;
|
||||
text = ''
|
||||
#! ${pkgs.nftables}/bin/nft -f
|
||||
flush ruleset
|
||||
${if cfg.rulesetFile != null then ''
|
||||
include "${cfg.rulesetFile}"
|
||||
'' else cfg.ruleset}
|
||||
'';
|
||||
checkPhase = lib.optionalString cfg.checkRuleset ''
|
||||
cp $out ruleset.conf
|
||||
${cfg.preCheckRuleset}
|
||||
export NIX_REDIRECTS=/etc/protocols=${pkgs.buildPackages.iana-etc}/etc/protocols:/etc/services=${pkgs.buildPackages.iana-etc}/etc/services
|
||||
LD_PRELOAD="${pkgs.buildPackages.libredirect}/lib/libredirect.so ${pkgs.buildPackages.lklWithFirewall.lib}/lib/liblkl-hijack.so" \
|
||||
${pkgs.buildPackages.nftables}/bin/nft --check --file ruleset.conf
|
||||
'';
|
||||
};
|
||||
in {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
|
||||
@@ -11,6 +11,14 @@ in
|
||||
services.teleport = with lib.types; {
|
||||
enable = mkEnableOption (lib.mdDoc "the Teleport service");
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.teleport;
|
||||
defaultText = lib.literalMD "pkgs.teleport";
|
||||
example = lib.literalMD "pkgs.teleport_11";
|
||||
description = lib.mdDoc "The teleport package to use";
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = settingsYaml.type;
|
||||
default = { };
|
||||
@@ -74,14 +82,14 @@ in
|
||||
};
|
||||
|
||||
config = mkIf config.services.teleport.enable {
|
||||
environment.systemPackages = [ pkgs.teleport ];
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
systemd.services.teleport = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
${pkgs.teleport}/bin/teleport start \
|
||||
${cfg.package}/bin/teleport start \
|
||||
${optionalString cfg.insecure.enable "--insecure"} \
|
||||
${optionalString cfg.diag.enable "--diag-addr=${cfg.diag.addr}:${toString cfg.diag.port}"} \
|
||||
${optionalString (cfg.settings != { }) "--config=${settingsYaml.generate "teleport.yaml" cfg.settings}"}
|
||||
|
||||
@@ -461,7 +461,7 @@ let
|
||||
|
||||
${ipPreMove} link add dev "${name}" type wireguard
|
||||
${optionalString (values.interfaceNamespace != null && values.interfaceNamespace != values.socketNamespace) ''${ipPreMove} link set "${name}" netns "${ns}"''}
|
||||
${optionalString (values.mtu != null) ''${ipPreMove} link set "${name}" mtu ${toString values.mtu}''}
|
||||
${optionalString (values.mtu != null) ''${ipPostMove} link set "${name}" mtu ${toString values.mtu}''}
|
||||
|
||||
${concatMapStringsSep "\n" (ip:
|
||||
''${ipPostMove} address add "${ip}" dev "${name}"''
|
||||
|
||||
@@ -318,8 +318,8 @@ to make packages available in the chroot.
|
||||
{option}`services.systemd.akkoma.serviceConfig.BindPaths` and
|
||||
{option}`services.systemd.akkoma.serviceConfig.BindReadOnlyPaths` permit access to outside paths
|
||||
through bind mounts. Refer to
|
||||
[{manpage}`systemd.exec(5)`](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#BindPaths=)
|
||||
for details.
|
||||
[`BindPaths=`](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#BindPaths=)
|
||||
of {manpage}`systemd.exec(5)` for details.
|
||||
|
||||
### Distributed deployment {#modules-services-akkoma-distributed-deployment}
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ let
|
||||
package = pkgs.dolibarr.override { inherit (cfg) stateDir; };
|
||||
|
||||
cfg = config.services.dolibarr;
|
||||
vhostCfg = lib.optionalAttr (cfg.nginx != null) config.services.nginx.virtualHosts."${cfg.domain}";
|
||||
vhostCfg = lib.optionalAttrs (cfg.nginx != null) config.services.nginx.virtualHosts."${cfg.domain}";
|
||||
|
||||
mkConfigFile = filename: settings:
|
||||
let
|
||||
|
||||
@@ -169,6 +169,9 @@ in
|
||||
};
|
||||
services.udev.packages = [
|
||||
pkgs.pantheon.gnome-settings-daemon
|
||||
# Force enable KMS modifiers for devices that require them.
|
||||
# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1443
|
||||
pkgs.pantheon.mutter
|
||||
];
|
||||
systemd.packages = [
|
||||
pkgs.pantheon.gnome-settings-daemon
|
||||
|
||||
@@ -1948,7 +1948,7 @@ in
|
||||
Extra command-line arguments to pass to systemd-networkd-wait-online.
|
||||
These also affect per-interface `systemd-network-wait-online@` services.
|
||||
|
||||
See [{manpage}`systemd-networkd-wait-online.service(8)`](https://www.freedesktop.org/software/systemd/man/systemd-networkd-wait-online.service.html) for all available options.
|
||||
See {manpage}`systemd-networkd-wait-online.service(8)` for all available options.
|
||||
'';
|
||||
type = with types; listOf str;
|
||||
default = [];
|
||||
|
||||
@@ -108,9 +108,9 @@ let
|
||||
|
||||
set -e
|
||||
|
||||
NIX_DISK_IMAGE=$(readlink -f "''${NIX_DISK_IMAGE:-${config.virtualisation.diskImage}}")
|
||||
NIX_DISK_IMAGE=$(readlink -f "''${NIX_DISK_IMAGE:-${toString config.virtualisation.diskImage}}") || test -z "$NIX_DISK_IMAGE"
|
||||
|
||||
if ! test -e "$NIX_DISK_IMAGE"; then
|
||||
if test -n "$NIX_DISK_IMAGE" && ! test -e "$NIX_DISK_IMAGE"; then
|
||||
${qemu}/bin/qemu-img create -f qcow2 "$NIX_DISK_IMAGE" \
|
||||
${toString config.virtualisation.diskSize}M
|
||||
fi
|
||||
@@ -346,7 +346,7 @@ in
|
||||
|
||||
virtualisation.diskImage =
|
||||
mkOption {
|
||||
type = types.str;
|
||||
type = types.nullOr types.str;
|
||||
default = "./${config.system.name}.qcow2";
|
||||
defaultText = literalExpression ''"./''${config.system.name}.qcow2"'';
|
||||
description =
|
||||
@@ -354,6 +354,9 @@ in
|
||||
Path to the disk image containing the root filesystem.
|
||||
The image will be created on startup if it does not
|
||||
exist.
|
||||
|
||||
If null, a tmpfs will be used as the root filesystem and
|
||||
the VM's state will not be persistent.
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -990,12 +993,12 @@ in
|
||||
];
|
||||
|
||||
virtualisation.qemu.drives = mkMerge [
|
||||
[{
|
||||
(mkIf (cfg.diskImage != null) [{
|
||||
name = "root";
|
||||
file = ''"$NIX_DISK_IMAGE"'';
|
||||
driveExtraOpts.cache = "writeback";
|
||||
driveExtraOpts.werror = "report";
|
||||
}]
|
||||
}])
|
||||
(mkIf cfg.useNixStoreImage [{
|
||||
name = "nix-store";
|
||||
file = ''"$TMPDIR"/store.img'';
|
||||
@@ -1018,20 +1021,21 @@ in
|
||||
}) cfg.emptyDiskImages)
|
||||
];
|
||||
|
||||
fileSystems = mkVMOverride cfg.fileSystems;
|
||||
|
||||
# Mount the host filesystem via 9P, and bind-mount the Nix store
|
||||
# of the host into our own filesystem. We use mkVMOverride to
|
||||
# allow this module to be applied to "normal" NixOS system
|
||||
# configuration, where the regular value for the `fileSystems'
|
||||
# attribute should be disregarded for the purpose of building a VM
|
||||
# test image (since those filesystems don't exist in the VM).
|
||||
fileSystems =
|
||||
let
|
||||
virtualisation.fileSystems = let
|
||||
mkSharedDir = tag: share:
|
||||
{
|
||||
name =
|
||||
if tag == "nix-store" && cfg.writableStore
|
||||
then "/nix/.ro-store"
|
||||
else share.target;
|
||||
then "/nix/.ro-store"
|
||||
else share.target;
|
||||
value.device = tag;
|
||||
value.fsType = "9p";
|
||||
value.neededForBoot = true;
|
||||
@@ -1039,44 +1043,42 @@ in
|
||||
[ "trans=virtio" "version=9p2000.L" "msize=${toString cfg.msize}" ]
|
||||
++ lib.optional (tag == "nix-store") "cache=loose";
|
||||
};
|
||||
in
|
||||
mkVMOverride (cfg.fileSystems //
|
||||
optionalAttrs cfg.useDefaultFilesystems {
|
||||
"/".device = cfg.bootDevice;
|
||||
"/".fsType = "ext4";
|
||||
"/".autoFormat = true;
|
||||
} //
|
||||
optionalAttrs config.boot.tmpOnTmpfs {
|
||||
"/tmp" = {
|
||||
in lib.mkMerge [
|
||||
(lib.mapAttrs' mkSharedDir cfg.sharedDirectories)
|
||||
{
|
||||
"/" = lib.mkIf cfg.useDefaultFilesystems (if cfg.diskImage == null then {
|
||||
device = "tmpfs";
|
||||
fsType = "tmpfs";
|
||||
} else {
|
||||
device = cfg.bootDevice;
|
||||
fsType = "ext4";
|
||||
autoFormat = true;
|
||||
});
|
||||
"/tmp" = lib.mkIf config.boot.tmpOnTmpfs {
|
||||
device = "tmpfs";
|
||||
fsType = "tmpfs";
|
||||
neededForBoot = true;
|
||||
# Sync with systemd's tmp.mount;
|
||||
options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmpOnTmpfsSize}" ];
|
||||
};
|
||||
} //
|
||||
optionalAttrs cfg.useNixStoreImage {
|
||||
"/nix/${if cfg.writableStore then ".ro-store" else "store"}" = {
|
||||
"/nix/${if cfg.writableStore then ".ro-store" else "store"}" = lib.mkIf cfg.useNixStoreImage {
|
||||
device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
|
||||
neededForBoot = true;
|
||||
options = [ "ro" ];
|
||||
};
|
||||
} //
|
||||
optionalAttrs (cfg.writableStore && cfg.writableStoreUseTmpfs) {
|
||||
"/nix/.rw-store" = {
|
||||
"/nix/.rw-store" = lib.mkIf (cfg.writableStore && cfg.writableStoreUseTmpfs) {
|
||||
fsType = "tmpfs";
|
||||
options = [ "mode=0755" ];
|
||||
neededForBoot = true;
|
||||
};
|
||||
} //
|
||||
optionalAttrs cfg.useBootLoader {
|
||||
# see note [Disk layout with `useBootLoader`]
|
||||
"/boot" = {
|
||||
"/boot" = lib.mkIf cfg.useBootLoader {
|
||||
device = "${lookupDriveDeviceName "boot" cfg.qemu.drives}2"; # 2 for e.g. `vdb2`, as created in `bootDisk`
|
||||
fsType = "vfat";
|
||||
noCheck = true; # fsck fails on a r/o filesystem
|
||||
};
|
||||
} // lib.mapAttrs' mkSharedDir cfg.sharedDirectories);
|
||||
}
|
||||
];
|
||||
|
||||
boot.initrd.systemd = lib.mkIf (config.boot.initrd.systemd.enable && cfg.writableStore) {
|
||||
mounts = [{
|
||||
|
||||
@@ -81,7 +81,7 @@ in {
|
||||
extraDisk = mkOption {
|
||||
description = lib.mdDoc ''
|
||||
Optional extra disk/hdd configuration.
|
||||
The disk will be an 'ext4' partition on a separate VMDK file.
|
||||
The disk will be an 'ext4' partition on a separate file.
|
||||
'';
|
||||
default = null;
|
||||
example = {
|
||||
@@ -183,8 +183,8 @@ in {
|
||||
export HOME=$PWD
|
||||
export PATH=${pkgs.virtualbox}/bin:$PATH
|
||||
|
||||
echo "creating VirtualBox pass-through disk wrapper (no copying involved)..."
|
||||
VBoxManage internalcommands createrawvmdk -filename disk.vmdk -rawdisk $diskImage
|
||||
echo "converting image to VirtualBox format..."
|
||||
VBoxManage convertfromraw $diskImage disk.vdi
|
||||
|
||||
${optionalString (cfg.extraDisk != null) ''
|
||||
echo "creating extra disk: data-disk.raw"
|
||||
@@ -196,8 +196,8 @@ in {
|
||||
mkpart primary ext4 1MiB -1
|
||||
eval $(partx $dataDiskImage -o START,SECTORS --nr 1 --pairs)
|
||||
mkfs.ext4 -F -L ${cfg.extraDisk.label} $dataDiskImage -E offset=$(sectorsToBytes $START) $(sectorsToKilobytes $SECTORS)K
|
||||
echo "creating extra disk: data-disk.vmdk"
|
||||
VBoxManage internalcommands createrawvmdk -filename data-disk.vmdk -rawdisk $dataDiskImage
|
||||
echo "creating extra disk: data-disk.vdi"
|
||||
VBoxManage convertfromraw $dataDiskImage data-disk.vdi
|
||||
''}
|
||||
|
||||
echo "creating VirtualBox VM..."
|
||||
@@ -209,10 +209,10 @@ in {
|
||||
${lib.cli.toGNUCommandLineShell { } cfg.params}
|
||||
VBoxManage storagectl "$vmName" ${lib.cli.toGNUCommandLineShell { } cfg.storageController}
|
||||
VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 0 --device 0 --type hdd \
|
||||
--medium disk.vmdk
|
||||
--medium disk.vdi
|
||||
${optionalString (cfg.extraDisk != null) ''
|
||||
VBoxManage storageattach "$vmName" --storagectl ${cfg.storageController.name} --port 1 --device 0 --type hdd \
|
||||
--medium data-disk.vmdk
|
||||
--medium data-disk.vdi
|
||||
''}
|
||||
|
||||
echo "exporting VirtualBox VM..."
|
||||
|
||||
@@ -100,7 +100,6 @@ in rec {
|
||||
(onFullSupported "nixos.tests.login")
|
||||
(onFullSupported "nixos.tests.misc")
|
||||
(onFullSupported "nixos.tests.mutableUsers")
|
||||
(onFullSupported "nixos.tests.nat.firewall-conntrack")
|
||||
(onFullSupported "nixos.tests.nat.firewall")
|
||||
(onFullSupported "nixos.tests.nat.standalone")
|
||||
(onFullSupported "nixos.tests.networking.scripted.bond")
|
||||
|
||||
@@ -118,7 +118,6 @@ in rec {
|
||||
"nixos.tests.ipv6"
|
||||
"nixos.tests.login"
|
||||
"nixos.tests.misc"
|
||||
"nixos.tests.nat.firewall-conntrack"
|
||||
"nixos.tests.nat.firewall"
|
||||
"nixos.tests.nat.standalone"
|
||||
"nixos.tests.nfs3.simple"
|
||||
|
||||
@@ -433,10 +433,8 @@ in {
|
||||
nagios = handleTest ./nagios.nix {};
|
||||
nar-serve = handleTest ./nar-serve.nix {};
|
||||
nat.firewall = handleTest ./nat.nix { withFirewall = true; };
|
||||
nat.firewall-conntrack = handleTest ./nat.nix { withFirewall = true; withConntrackHelpers = true; };
|
||||
nat.standalone = handleTest ./nat.nix { withFirewall = false; };
|
||||
nat.nftables.firewall = handleTest ./nat.nix { withFirewall = true; nftables = true; };
|
||||
nat.nftables.firewall-conntrack = handleTest ./nat.nix { withFirewall = true; withConntrackHelpers = true; nftables = true; };
|
||||
nat.nftables.standalone = handleTest ./nat.nix { withFirewall = false; nftables = true; };
|
||||
nats = handleTest ./nats.nix {};
|
||||
navidrome = handleTest ./navidrome.nix {};
|
||||
|
||||
@@ -54,7 +54,7 @@ with lib;
|
||||
client.execute("echo 'sync_address = \"http://server:${toString testPort}\"' > ~/.config/atuin/config.toml")
|
||||
|
||||
# log in to atuin server on client node
|
||||
client.succeed(f"${atuin}/bin/atuin login -u ${testUser} -p ${testPass} -k {key}")
|
||||
client.succeed(f"${atuin}/bin/atuin login -u ${testUser} -p ${testPass} -k \"{key}\"")
|
||||
|
||||
# pull records from atuin server
|
||||
client.succeed("${atuin}/bin/atuin sync -f")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||
name = "clickhouse";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ ma27 ];
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ ];
|
||||
|
||||
nodes.machine = {
|
||||
services.clickhouse.enable = true;
|
||||
|
||||
+25
-2
@@ -1,6 +1,6 @@
|
||||
{ system ? builtins.currentSystem,
|
||||
config ? {},
|
||||
giteaPackage,
|
||||
giteaPackage ? pkgs.gitea,
|
||||
pkgs ? import ../.. { inherit system config; }
|
||||
}:
|
||||
|
||||
@@ -8,6 +8,21 @@ 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" ];
|
||||
makeGiteaTest = type: nameValuePair type (makeTest {
|
||||
name = "${giteaPackage.pname}-${type}";
|
||||
@@ -21,8 +36,9 @@ let
|
||||
database = { inherit type; };
|
||||
package = giteaPackage;
|
||||
settings.service.DISABLE_REGISTRATION = true;
|
||||
settings."repository.signing".SIGNING_KEY = signingPrivateKeyId;
|
||||
};
|
||||
environment.systemPackages = [ giteaPackage pkgs.jq ];
|
||||
environment.systemPackages = [ giteaPackage pkgs.gnupg pkgs.jq ];
|
||||
services.openssh.enable = true;
|
||||
};
|
||||
client1 = { config, pkgs, ... }: {
|
||||
@@ -58,6 +74,13 @@ let
|
||||
server.wait_for_open_port(3000)
|
||||
server.succeed("curl --fail http://localhost:3000/")
|
||||
|
||||
server.succeed(
|
||||
"su -l gitea -c 'gpg --homedir /var/lib/gitea/data/home/.gnupg "
|
||||
+ "--import ${toString (pkgs.writeText "gitea.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.'"
|
||||
|
||||
+3
-12
@@ -3,7 +3,7 @@
|
||||
# client on the inside network, a server on the outside network, and a
|
||||
# router connected to both that performs Network Address Translation
|
||||
# for the client.
|
||||
import ./make-test-python.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ? false, nftables ? false, ... }:
|
||||
import ./make-test-python.nix ({ pkgs, lib, withFirewall, nftables ? false, ... }:
|
||||
let
|
||||
unit = if nftables then "nftables" else (if withFirewall then "firewall" else "nat");
|
||||
|
||||
@@ -16,16 +16,11 @@ import ./make-test-python.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ?
|
||||
networking.nat.internalIPs = [ "192.168.1.0/24" ];
|
||||
networking.nat.externalInterface = "eth1";
|
||||
}
|
||||
(lib.optionalAttrs withConntrackHelpers {
|
||||
networking.firewall.connectionTrackingModules = [ "ftp" ];
|
||||
networking.firewall.autoLoadConntrackHelpers = true;
|
||||
})
|
||||
];
|
||||
in
|
||||
{
|
||||
name = "nat" + (lib.optionalString nftables "Nftables")
|
||||
+ (if withFirewall then "WithFirewall" else "Standalone")
|
||||
+ (lib.optionalString withConntrackHelpers "withConntrackHelpers");
|
||||
+ (if withFirewall then "WithFirewall" else "Standalone");
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ eelco rob ];
|
||||
};
|
||||
@@ -39,10 +34,6 @@ import ./make-test-python.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ?
|
||||
(pkgs.lib.head nodes.router.config.networking.interfaces.eth2.ipv4.addresses).address;
|
||||
networking.nftables.enable = nftables;
|
||||
}
|
||||
(lib.optionalAttrs withConntrackHelpers {
|
||||
networking.firewall.connectionTrackingModules = [ "ftp" ];
|
||||
networking.firewall.autoLoadConntrackHelpers = true;
|
||||
})
|
||||
];
|
||||
|
||||
router =
|
||||
@@ -95,7 +86,7 @@ import ./make-test-python.nix ({ pkgs, lib, withFirewall, withConntrackHelpers ?
|
||||
client.succeed("curl -v ftp://server/foo.txt >&2")
|
||||
|
||||
# Test whether active FTP works.
|
||||
client.${if withConntrackHelpers then "succeed" else "fail"}("curl -v -P - ftp://server/foo.txt >&2")
|
||||
client.fail("curl -v -P - ftp://server/foo.txt >&2")
|
||||
|
||||
# Test ICMP.
|
||||
client.succeed("ping -c 1 router >&2")
|
||||
|
||||
@@ -3,7 +3,7 @@ import ./make-test-python.nix ({ pkgs, ...}: let
|
||||
in {
|
||||
name = "phosh";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ zhaofengli ];
|
||||
maintainers = [ tomfitzhenry zhaofengli ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
|
||||
@@ -170,8 +170,8 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||
'';
|
||||
|
||||
hosts = nodes: ''
|
||||
${nodes.pleroma.config.networking.primaryIPAddress} pleroma.nixos.test
|
||||
${nodes.client.config.networking.primaryIPAddress} client.nixos.test
|
||||
${nodes.pleroma.networking.primaryIPAddress} pleroma.nixos.test
|
||||
${nodes.client.networking.primaryIPAddress} client.nixos.test
|
||||
'';
|
||||
in {
|
||||
name = "pleroma";
|
||||
|
||||
@@ -6,9 +6,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
|
||||
enable = true;
|
||||
emergencyAccess = true;
|
||||
};
|
||||
fileSystems = lib.mkVMOverride {
|
||||
"/".autoResize = true;
|
||||
};
|
||||
virtualisation.fileSystems."/".autoResize = true;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
|
||||
+49
-33
@@ -1,18 +1,28 @@
|
||||
{ system ? builtins.currentSystem
|
||||
, config ? { }
|
||||
, pkgs ? import ../.. { inherit system config; }
|
||||
, lib ? pkgs.lib
|
||||
}:
|
||||
|
||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||
|
||||
let
|
||||
minimal = { config, ... }: {
|
||||
services.teleport.enable = true;
|
||||
packages = with pkgs; {
|
||||
"default" = teleport;
|
||||
"11" = teleport_11;
|
||||
};
|
||||
|
||||
client = { config, ... }: {
|
||||
minimal = package: {
|
||||
services.teleport = {
|
||||
enable = true;
|
||||
inherit package;
|
||||
};
|
||||
};
|
||||
|
||||
client = package: {
|
||||
services.teleport = {
|
||||
enable = true;
|
||||
inherit package;
|
||||
settings = {
|
||||
teleport = {
|
||||
nodename = "client";
|
||||
@@ -37,9 +47,10 @@ let
|
||||
}];
|
||||
};
|
||||
|
||||
server = { config, ... }: {
|
||||
server = package: {
|
||||
services.teleport = {
|
||||
enable = true;
|
||||
inherit package;
|
||||
settings = {
|
||||
teleport = {
|
||||
nodename = "server";
|
||||
@@ -64,36 +75,41 @@ let
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
minimal = makeTest {
|
||||
# minimal setup should always work
|
||||
name = "teleport-minimal-setup";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ ymatsiuk ];
|
||||
nodes = { inherit minimal; };
|
||||
lib.concatMapAttrs
|
||||
(name: package: {
|
||||
"minimal_${name}" = makeTest {
|
||||
# minimal setup should always work
|
||||
name = "teleport-minimal-setup";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ justinas ];
|
||||
nodes.minimal = minimal package;
|
||||
|
||||
testScript = ''
|
||||
minimal.wait_for_open_port(3025)
|
||||
minimal.wait_for_open_port(3080)
|
||||
minimal.wait_for_open_port(3022)
|
||||
'';
|
||||
};
|
||||
testScript = ''
|
||||
minimal.wait_for_open_port(3025)
|
||||
minimal.wait_for_open_port(3080)
|
||||
minimal.wait_for_open_port(3022)
|
||||
'';
|
||||
};
|
||||
|
||||
basic = makeTest {
|
||||
# basic server and client test
|
||||
name = "teleport-server-client";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ ymatsiuk ];
|
||||
nodes = { inherit server client; };
|
||||
"basic_${name}" = makeTest {
|
||||
# basic server and client test
|
||||
name = "teleport-server-client";
|
||||
meta.maintainers = with pkgs.lib.maintainers; [ justinas ];
|
||||
nodes = {
|
||||
server = server package;
|
||||
client = client package;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
with subtest("teleport ready"):
|
||||
server.wait_for_open_port(3025)
|
||||
client.wait_for_open_port(3022)
|
||||
testScript = ''
|
||||
with subtest("teleport ready"):
|
||||
server.wait_for_open_port(3025)
|
||||
client.wait_for_open_port(3022)
|
||||
|
||||
with subtest("check applied configuration"):
|
||||
server.wait_until_succeeds("tctl get nodes --format=json | ${pkgs.jq}/bin/jq -e '.[] | select(.spec.hostname==\"client\") | .metadata.labels.role==\"client\"'")
|
||||
server.wait_for_open_port(3000)
|
||||
client.succeed("journalctl -u teleport.service --grep='DEBU'")
|
||||
server.succeed("journalctl -u teleport.service --grep='Starting teleport in insecure mode.'")
|
||||
'';
|
||||
};
|
||||
}
|
||||
with subtest("check applied configuration"):
|
||||
server.wait_until_succeeds("tctl get nodes --format=json | ${pkgs.jq}/bin/jq -e '.[] | select(.spec.hostname==\"client\") | .metadata.labels.role==\"client\"'")
|
||||
server.wait_for_open_port(3000)
|
||||
client.succeed("journalctl -u teleport.service --grep='DEBU'")
|
||||
server.succeed("journalctl -u teleport.service --grep='Starting teleport in insecure mode.'")
|
||||
'';
|
||||
};
|
||||
})
|
||||
packages
|
||||
|
||||
@@ -39,6 +39,7 @@ import ../make-test-python.nix ({ pkgs, lib, kernelPackages ? null, ... } : {
|
||||
preSetup = ''
|
||||
ip netns add ${interfaceNamespace}
|
||||
'';
|
||||
mtu = 1280;
|
||||
inherit interfaceNamespace;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
, gtk3
|
||||
, wayland
|
||||
, wayland-protocols
|
||||
, libbsd
|
||||
, libxml2
|
||||
, libxkbcommon
|
||||
, rustPlatform
|
||||
@@ -21,7 +22,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "squeekboard";
|
||||
version = "1.20.0";
|
||||
version = "1.21.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
@@ -29,7 +30,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "Phosh";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-wx3fKRX/SPYGAFuR9u03JAvVRhtYIPUvW8mAsCdx83I=";
|
||||
hash = "sha256-Mn0E+R/UzBLHPvarQHlEN4JBpf4VAaXdKdWLsFEyQE4=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
@@ -39,7 +40,7 @@ stdenv.mkDerivation rec {
|
||||
cp Cargo.lock.newer Cargo.lock
|
||||
'';
|
||||
name = "${pname}-${version}";
|
||||
sha256 = "sha256-BbNkapqnqEW/NglrCse10Tm80SXYVQWWrOC5dTN6oi0=";
|
||||
hash = "sha256-F2mef0HvD9WZRx05DEpQ1AO1skMwcchHZzJa74AHmsM=";
|
||||
};
|
||||
|
||||
mesonFlags = [
|
||||
@@ -64,6 +65,7 @@ stdenv.mkDerivation rec {
|
||||
gnome-desktop
|
||||
wayland
|
||||
wayland-protocols
|
||||
libbsd
|
||||
libxml2
|
||||
libxkbcommon
|
||||
feedbackd
|
||||
|
||||
@@ -61,13 +61,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "audacity";
|
||||
version = "3.2.4";
|
||||
version = "3.2.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "Audacity-${version}";
|
||||
hash = "sha256-gz2o0Rj4364nJAvJmMQzwIQycoQmqz2/43DBvd3qbho=";
|
||||
hash = "sha256-tMz55fZh+TfvLEyApDqC0QMd2hEQLJsNQ6y2Xy0xgaQ=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ft2-clone";
|
||||
version = "1.63";
|
||||
version = "1.65";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "8bitbubsy";
|
||||
repo = "ft2-clone";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-uDAW97lTeL15PPpR5vlIS371EZ7BBNd86ETPEB8joSU=";
|
||||
sha256 = "sha256-Jo1qs0d8/o9FWR7jboWCJ7ntawBGTlm7yPzxxUnZLsI=";
|
||||
};
|
||||
|
||||
# Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
# gcc only supports objc on darwin
|
||||
buildGoModule.override { stdenv = clangStdenv; } rec {
|
||||
pname = "go-musicfox";
|
||||
version = "3.7.0";
|
||||
version = "3.7.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "anhoder";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-IXB5eOXVtoe21WbQa9x5SKcgUpgyjVx48998vdccMPM=";
|
||||
hash = "sha256-Wc9HFvBSLQA7jT+LJj+tyHzRbszhR2XD1/3C+SdrAGA=";
|
||||
};
|
||||
|
||||
deleteVendor = true;
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "grandorgue";
|
||||
version = "3.9.5-1";
|
||||
version = "3.10.1-1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "GrandOrgue";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
fetchSubmodules = true;
|
||||
sha256 = "sha256-5OqTQBOYE6XU3BRiVwXOHrn22bVZzIIeZI8pgsWxhPw=";
|
||||
sha256 = "sha256-QuOHeEgDOXvNFMfMoq0GOnmHKyMG1S8y1lgO9heMk3I=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "JMusicBot";
|
||||
version = "0.3.8";
|
||||
version = "0.3.9";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/jagrosh/MusicBot/releases/download/${version}/JMusicBot-${version}.jar";
|
||||
sha256 = "sha256-wzmrh9moY6oo3RqOy9Zl1X70BZlvbJkQmz8BaBIFtIM=";
|
||||
sha256 = "sha256-2A1yo2e1MawGLMTM6jWwpQJJuKOmljxFriORv90Jqg8=";
|
||||
};
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
@@ -1,33 +1,30 @@
|
||||
{lib, gcc10Stdenv, fetchurl}:
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchzip
|
||||
, cmake
|
||||
}:
|
||||
|
||||
gcc10Stdenv.mkDerivation rec {
|
||||
version = "3.99-u4-b5";
|
||||
pname = "monkeys-audio-old";
|
||||
stdenv.mkDerivation rec {
|
||||
version = "9.20";
|
||||
pname = "monkeys-audio";
|
||||
|
||||
patches = [ ./buildfix.diff ];
|
||||
|
||||
src = fetchurl {
|
||||
/*
|
||||
The real homepage is <https://monkeysaudio.com/>, but in fact we are
|
||||
getting an old, ported to Linux version of the sources, made by (quoting
|
||||
from the AUTHORS file found in the source):
|
||||
|
||||
Frank Klemm : First port to linux (with makefile)
|
||||
|
||||
SuperMMX <SuperMMX AT GMail DOT com> : Package the source, include the frontend and shared lib,
|
||||
porting to Big Endian platform and adding other non-win32 enhancement.
|
||||
*/
|
||||
url = "https://deb-multimedia.org/pool/main/m/${pname}/${pname}_${version}.orig.tar.gz";
|
||||
sha256 = "0kjfwzfxfx7f958b2b1kf8yj655lp0ppmn0sh57gbkjvj8lml7nz";
|
||||
src = fetchzip {
|
||||
url = "https://monkeysaudio.com/files/MAC_${
|
||||
builtins.concatStringsSep "" (lib.strings.splitString "." version)}_SDK.zip";
|
||||
sha256 = "sha256-8cJ88plR9jrrLdzRHzRotGBrn6qIqOWvl+oOTXxY/TE=";
|
||||
stripRoot = false;
|
||||
};
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Lossless audio codec";
|
||||
description = "APE codec and decompressor";
|
||||
platforms = platforms.linux;
|
||||
# This is not considered a GPL license, but it seems rather free although
|
||||
# it's not standard, see a quote of it:
|
||||
# https://github.com/NixOS/nixpkgs/pull/171682#issuecomment-1120260551
|
||||
license = licenses.free;
|
||||
maintainers = [ ];
|
||||
maintainers = with maintainers; [ doronbehar ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,23 +1,25 @@
|
||||
{ lib, fetchFromGitHub
|
||||
, pkg-config, meson ,ninja
|
||||
, python3Packages
|
||||
, gdk-pixbuf, glib, gobject-introspection, gtk3
|
||||
, libnotify
|
||||
, intltool
|
||||
, wrapGAppsHook }:
|
||||
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "mpdevil";
|
||||
version = "1.4.1";
|
||||
version = "1.10.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SoongNoonien";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1a5nhlbgi3ahnkcq16c2vgiaghgswy5lxg64pcrlbqssg1pj5gma";
|
||||
sha256 = "sha256-w31e8cJvdep/ZzmDBCfdCZotrPunQBl1cTTWjs3sE1w=";
|
||||
};
|
||||
|
||||
format = "other";
|
||||
|
||||
nativeBuildInputs = [
|
||||
glib.dev gobject-introspection gtk3 intltool wrapGAppsHook
|
||||
glib.dev gobject-introspection gtk3 pkg-config meson ninja wrapGAppsHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -11,17 +11,18 @@
|
||||
, pcre2
|
||||
, gzip
|
||||
, perl
|
||||
, jq
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mympd";
|
||||
version = "9.5.4";
|
||||
version = "10.2.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jcorporation";
|
||||
repo = "myMPD";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-0X/rEVfJ6zzX75R72xVntOfuCt8srp9PkiYOq3XbWPs=";
|
||||
sha256 = "sha256-12hCIAwrLQkwiU9t9nNPBdIiHfMidfErSWOA0FPfhBQ=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -29,6 +30,7 @@ stdenv.mkDerivation rec {
|
||||
cmake
|
||||
gzip
|
||||
perl
|
||||
jq
|
||||
];
|
||||
preConfigure = ''
|
||||
env MYMPD_BUILDDIR=$PWD/build ./build.sh createassets
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
}:
|
||||
|
||||
mkDerivation rec {
|
||||
version = "0.9.8";
|
||||
version = "0.9.9";
|
||||
pname = "qjackctl";
|
||||
|
||||
# some dependencies such as killall have to be installed additionally
|
||||
@@ -14,7 +14,7 @@ mkDerivation rec {
|
||||
owner = "rncbc";
|
||||
repo = "qjackctl";
|
||||
rev = "${pname}_${lib.replaceStrings ["."] ["_"] version}";
|
||||
sha256 = "sha256-GEnxxYul4qir/92hGq4L+29dnpy1MxHonM1llkzSLPw=";
|
||||
sha256 = "sha256-6mVvLr+4kSkjp0Mc/XtFxSaO/OblhdsvicrV1luq8I8=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
|
||||
mkDerivation rec {
|
||||
pname = "qpwgraph";
|
||||
version = "0.3.9";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "rncbc";
|
||||
repo = "qpwgraph";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-KGZ67FF3WlKwUzVV3qz1DR/7i1mXsfXVVyuNoIR9uP0=";
|
||||
sha256 = "sha256-bOg+7bNEhnemhb+Xi3x77ZEjqKFjUXSCFgvcLXrxz/E=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
|
||||
let
|
||||
pname = "sonixd";
|
||||
version = "0.15.3";
|
||||
version = "0.15.4";
|
||||
src = fetchurl {
|
||||
url = "https://github.com/jeffvli/sonixd/releases/download/v${version}/Sonixd-${version}-linux-x86_64.AppImage";
|
||||
sha256 = "sha256-+4L3XAuR7T/z5a58SXre6yUiVi7TvSAs8vPgEC7hcIw=";
|
||||
sha256 = "sha256-n4n16S8ktPiVc0iyjVNNIyo9oEIBwGIuzj0xgm/ETeo=";
|
||||
};
|
||||
appimageContents = appimageTools.extractType2 { inherit pname version src; };
|
||||
in
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
{ lib
|
||||
, pkg-config
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, autoPatchelfHook
|
||||
, alsa-lib
|
||||
, cmake
|
||||
, freetype
|
||||
, libGL
|
||||
, libX11
|
||||
, libXcursor
|
||||
, libXext
|
||||
, libXinerama
|
||||
, libXrandr
|
||||
, libjack2
|
||||
, libopus
|
||||
, curl
|
||||
, gtk3
|
||||
, webkitgtk
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sonobus";
|
||||
version = "1.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sonosaurus";
|
||||
repo = "sonobus";
|
||||
rev = version;
|
||||
sha256 = "sha256-/Pb+PYmoCYA6Qcy/tR1Ejyt+rZ3pfJeWV4j7bQWYE58=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
autoPatchelfHook
|
||||
cmake
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
alsa-lib
|
||||
freetype
|
||||
libjack2
|
||||
libopus
|
||||
curl
|
||||
gtk3
|
||||
webkitgtk
|
||||
];
|
||||
|
||||
runtimeDependencies = [
|
||||
libGL
|
||||
libX11
|
||||
libXcursor
|
||||
libXext
|
||||
libXinerama
|
||||
libXrandr
|
||||
];
|
||||
|
||||
postPatch = lib.optionalString (stdenv.isLinux) ''
|
||||
# needs special setup on Linux, dunno if it can work on Darwin
|
||||
# https://github.com/NixOS/nixpkgs/issues/19098
|
||||
# Also, I get issues with linking without that, not sure why
|
||||
sed -i -e '/juce::juce_recommended_lto_flags/d' CMakeLists.txt
|
||||
patchShebangs linux/install.sh
|
||||
'';
|
||||
|
||||
# The program does not provide any CMake install instructions
|
||||
installPhase = lib.optionalString (stdenv.isLinux) ''
|
||||
runHook preInstall
|
||||
cd ../linux
|
||||
./install.sh "$out"
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "High-quality network audio streaming";
|
||||
homepage = "https://sonobus.net/";
|
||||
license = with licenses; [ gpl3Plus ];
|
||||
maintainers = with maintainers; [ PowerUser64 ];
|
||||
platforms = platforms.unix;
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
||||
@@ -7,13 +7,13 @@
|
||||
}:
|
||||
python3Packages.buildPythonApplication rec {
|
||||
pname = "chia-dev-tools";
|
||||
version = "1.1.4";
|
||||
version = "1.1.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Chia-Network";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-lE7FTSDqVS6AstcxZSMdQwgygMvcvh1fqYVTTSSNZpA=";
|
||||
hash = "sha256-qWWLQ+SkoRu5cLytwwrslqsKORy+4ebO8brULEFGaF0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -22,11 +22,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "clightning";
|
||||
version = "22.11.1";
|
||||
version = "23.02";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
|
||||
sha256 = "sha256-F48jmG9voNp6+IMRVkJi6O0DXVQxKyYkOA0UBCKktIw=";
|
||||
sha256 = "sha256-uvk7sApIwlrkH8eERBetf/nsAkN2d35T/IEtICFflzY=";
|
||||
};
|
||||
|
||||
# when building on darwin we need dawin.cctools to provide the correct libtool
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
let
|
||||
pname = "ledger-live-desktop";
|
||||
version = "2.53.2";
|
||||
version = "2.54.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.live.ledger.com/${pname}-${version}-linux-x86_64.AppImage";
|
||||
hash = "sha256-RGeJWUMZagXM/8SHHOpTpcnsz+BShnGp2yvt31qo5lI=";
|
||||
hash = "sha256-3UCsMzpoHq4gD4bw/MT1qbl8AnXQnFJqpMi1mlPvv5w=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
@@ -27,8 +27,8 @@ appimageTools.wrapType2 rec {
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Wallet app for Ledger Nano S and Ledger Blue";
|
||||
homepage = "https://www.ledger.com/live";
|
||||
description = "App for Ledger hardware wallets";
|
||||
homepage = "https://www.ledger.com/ledger-live/";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ andresilva thedavidmeister nyanloutre RaghavSood th0rgal WeebSorceress ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
|
||||
@@ -6,16 +6,32 @@
|
||||
, trezorSupport ? true, libusb1, protobuf, python3
|
||||
}:
|
||||
|
||||
let
|
||||
# submodules
|
||||
supercop = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "supercop";
|
||||
rev = "633500ad8c8759995049ccd022107d1fa8a1bbc9";
|
||||
sha256 = "26UmESotSWnQ21VbAYEappLpkEMyl0jiuCaezRYd/sE=";
|
||||
};
|
||||
trezor-common = fetchFromGitHub {
|
||||
owner = "trezor";
|
||||
repo = "trezor-common";
|
||||
rev = "bff7fdfe436c727982cc553bdfb29a9021b423b0";
|
||||
sha256 = "VNypeEz9AV0ts8X3vINwYMOgO8VpNmyUPC4iY3OOuZI=";
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "monero-cli";
|
||||
version = "0.18.1.2";
|
||||
version = "0.18.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "monero";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-yV1ysoesEcjL+JX6hkmcrBDmazOWBvYK6EjshxJzcAw=";
|
||||
fetchSubmodules = true;
|
||||
sha256 = "n2e5U3p0eG2atPYV86H2UAURwsIkeSOBm8iwYsDVAoc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -23,8 +39,10 @@ stdenv.mkDerivation rec {
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
# remove vendored libraries
|
||||
rm -r external/{miniupnp,randomx,rapidjson}
|
||||
# manually install submodules
|
||||
rmdir external/{supercop,trezor-common}
|
||||
ln -sf ${supercop} external/supercop
|
||||
ln -sf ${trezor-common} external/trezor-common
|
||||
# export patched source for monero-gui
|
||||
cp -r . $source
|
||||
'';
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "monero-gui";
|
||||
version = "0.18.1.2";
|
||||
version = "0.18.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "monero-project";
|
||||
repo = "monero-gui";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-GBILqNkYQUkil1qvYnJTkHwgK3dzKR9I9GVbbLy/0UU=";
|
||||
sha256 = "Bm6OpK1jjdWVqdp6HpirqP6+3GcMSZfZ/e70wcu+rQc=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -43,7 +43,7 @@ stdenv.mkDerivation rec {
|
||||
store historical records of the ledger and participate in consensus.
|
||||
'';
|
||||
homepage = "https://www.stellar.org/";
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ ];
|
||||
license = licenses.asl20;
|
||||
};
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,77 +1,80 @@
|
||||
{ lib
|
||||
, stdenv
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, llvmPackages
|
||||
, openssl
|
||||
, perl
|
||||
, protobuf
|
||||
, rustfmt
|
||||
, Security
|
||||
, SystemConfiguration
|
||||
, stdenv
|
||||
, darwin
|
||||
, pkg-config
|
||||
, openssl
|
||||
}:
|
||||
|
||||
let
|
||||
version = "0.1.2";
|
||||
version = "0.2.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "talaia-labs";
|
||||
repo = "rust-teos";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-N+srREYsADMTqz3uDXpeCuXrZZ62FopXO7DClGfyk9U=";
|
||||
hash = "sha256-UrzH9xmhVq12TcSUQ1AihCG1sNGcy/N8LDsZINVKFkY=";
|
||||
};
|
||||
|
||||
common.meta = with lib; {
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/talaia-labs/rust-teos";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ seberm ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
|
||||
cargoPatches = [ ./add-cargo-lock.patch ];
|
||||
|
||||
buildInputs = [
|
||||
openssl
|
||||
] ++ lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
perl # used by openssl-sys to configure
|
||||
protobuf
|
||||
rustfmt
|
||||
rustPlatform.bindgenHook
|
||||
];
|
||||
in
|
||||
{
|
||||
teos = rustPlatform.buildRustPackage {
|
||||
pname = "teos";
|
||||
cargoSha256 = "sha256-7VYYYSMJ2JP1KuA8sD0X3wInubH/jbA/sgzsTsomyEc=";
|
||||
inherit version src;
|
||||
|
||||
cargoHash = "sha256-U0imKEPszlBOaS6xEd3kfzy/w2SYe3EY/E1e0L+ViDk=";
|
||||
|
||||
buildAndTestSubdir = "teos";
|
||||
|
||||
inherit version src cargoPatches buildInputs nativeBuildInputs;
|
||||
nativeBuildInputs = [
|
||||
protobuf
|
||||
rustfmt
|
||||
];
|
||||
|
||||
meta = common.meta // {
|
||||
buildInputs = lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.Security
|
||||
];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = meta // {
|
||||
description = "A Lightning watchtower compliant with BOLT13, written in Rust";
|
||||
};
|
||||
|
||||
cargoTestFlags = [
|
||||
"--workspace"
|
||||
];
|
||||
};
|
||||
|
||||
teos-watchtower-plugin = rustPlatform.buildRustPackage {
|
||||
pname = "teos-watchtower-plugin";
|
||||
cargoSha256 = "sha256-xL+DiEfgBYJQ1UJm7LAr1/f34pkU8FRl4Seic8MFAlM=";
|
||||
inherit version src;
|
||||
|
||||
cargoHash = "sha256-3ke1qTFw/4I5dPLuPjIGp1n2C/eRfPB7A6ErMFfwUzE=";
|
||||
|
||||
buildAndTestSubdir = "watchtower-plugin";
|
||||
|
||||
inherit version src cargoPatches buildInputs nativeBuildInputs;
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
protobuf
|
||||
rustfmt
|
||||
];
|
||||
|
||||
meta = common.meta // {
|
||||
buildInputs = [
|
||||
openssl
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
darwin.apple_sdk.frameworks.SystemConfiguration
|
||||
];
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = meta // {
|
||||
description = "A Lightning watchtower plugin for clightning";
|
||||
mainProgram = "watchtower-client";
|
||||
};
|
||||
|
||||
# The test is skipped due to following error:
|
||||
# thread 'retrier::tests::test_manage_retry_unreachable' panicked at 'assertion failed:
|
||||
# wt_client.lock().unwrap().towers.get(&tower_id).unwrap().status.is_unreachable()', watchtower-plugin/src/retrier.rs:518:9
|
||||
checkFlags = lib.optionals (stdenv.isDarwin && stdenv.isAarch64) [ "--skip=retrier::tests::test_manage_retry_unreachable" ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -31,11 +31,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "wasabiwallet";
|
||||
version = "2.0.2.1";
|
||||
version = "2.0.2.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/zkSNACKs/WalletWasabi/releases/download/v${version}/Wasabi-${version}.tar.gz";
|
||||
sha256 = "sha256-kvUwWRZZmalJQL65tRNdgTg7ZQHhmIbfmsfHbHBYz7w=";
|
||||
sha256 = "sha256-Mwr2TwJsA7+G5U2FHOC6SMgiYxuy6fAiA3t7oJGSVaA=";
|
||||
};
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
@@ -38,13 +38,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cudatext";
|
||||
version = "1.186.0";
|
||||
version = "1.186.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Alexey-T";
|
||||
repo = "CudaText";
|
||||
rev = version;
|
||||
hash = "sha256-CzCPz/Bny57nkxR21ACXjhAoplVVm4TVSbH6De+fKfI=";
|
||||
hash = "sha256-qpxYzman93e+u0BHxdhBUyfnZOR4hjQpTuNikGDNQCA=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
+2
-2
@@ -16,8 +16,8 @@
|
||||
},
|
||||
"ATSynEdit": {
|
||||
"owner": "Alexey-T",
|
||||
"rev": "2023.02.25",
|
||||
"hash": "sha256-iTdb+eI1alS6chCn2rEbUAy9iVAgVvsNGURxds/2f7s="
|
||||
"rev": "2023.03.02",
|
||||
"hash": "sha256-rZzcWED8c68wtejUho71kbPtLyDyOlXpS/eg8Ti0r2A="
|
||||
},
|
||||
"ATSynEdit_Cmp": {
|
||||
"owner": "Alexey-T",
|
||||
|
||||
@@ -366,6 +366,21 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
beframe = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "beframe";
|
||||
ename = "beframe";
|
||||
version = "0.1.11";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/beframe-0.1.11.tar";
|
||||
sha256 = "1r5wlg2xaih197fi3jk0qmnhpy7mc6xrwraxfnygsjwr63dxhnq2";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/beframe.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
bind-key = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "bind-key";
|
||||
@@ -1659,16 +1674,16 @@
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
erc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
erc = callPackage ({ compat, elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "erc";
|
||||
ename = "erc";
|
||||
version = "5.4.1";
|
||||
version = "5.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/erc-5.4.1.tar";
|
||||
sha256 = "0hghqwqrx11f8qa1zhyhjqp99w01l686azsmd24z9w0l93fz598a";
|
||||
url = "https://elpa.gnu.org/packages/erc-5.5.tar";
|
||||
sha256 = "02649ijnpyalk0k1yq1dcinj92awhbnkia2x9sdb9xjk80xw1gqp";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
packageRequires = [ compat emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/erc.html";
|
||||
license = lib.licenses.free;
|
||||
@@ -2612,10 +2627,10 @@
|
||||
elpaBuild {
|
||||
pname = "kind-icon";
|
||||
ename = "kind-icon";
|
||||
version = "0.1.9";
|
||||
version = "0.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/kind-icon-0.1.9.tar";
|
||||
sha256 = "0phssrcpmcidzlwy1577f3f02qwjs6hpavb416302y0n8kkhwvli";
|
||||
url = "https://elpa.gnu.org/packages/kind-icon-0.2.0.tar";
|
||||
sha256 = "1vgwbd99vx793iy04albkxl24c7vq598s7bg0raqwmgx84abww6r";
|
||||
};
|
||||
packageRequires = [ emacs svg-lib ];
|
||||
meta = {
|
||||
@@ -3047,10 +3062,10 @@
|
||||
elpaBuild {
|
||||
pname = "modus-themes";
|
||||
ename = "modus-themes";
|
||||
version = "3.0.0";
|
||||
version = "4.1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/modus-themes-3.0.0.tar";
|
||||
sha256 = "1c3rls175nmc4n01hfzwqxv2nhyv8n6i8d4pv93k28z6c30n8lhs";
|
||||
url = "https://elpa.gnu.org/packages/modus-themes-4.1.1.tar";
|
||||
sha256 = "06lp7mpazby7iiwzw4naym983plg9r63ba9vmaszh3609d2gm0s9";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
@@ -3731,10 +3746,10 @@
|
||||
elpaBuild {
|
||||
pname = "phps-mode";
|
||||
ename = "phps-mode";
|
||||
version = "0.4.39";
|
||||
version = "0.4.42";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/phps-mode-0.4.39.tar";
|
||||
sha256 = "0wixalji4c4hjqb41n1yvxfy3qfl2ipfsjawbgk9wdwb7jkhjr1i";
|
||||
url = "https://elpa.gnu.org/packages/phps-mode-0.4.42.tar";
|
||||
sha256 = "040wrmz9wl0x86vdgzyfdwxdciscd94v9nfgfz0ir2ghwhw6j9x3";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
@@ -3821,10 +3836,10 @@
|
||||
elpaBuild {
|
||||
pname = "posframe";
|
||||
ename = "posframe";
|
||||
version = "1.3.3";
|
||||
version = "1.4.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/posframe-1.3.3.tar";
|
||||
sha256 = "07hgbhvhwj6zfhlg6znavwrj3gp7cv4c758chrhkvk33a3slhw6b";
|
||||
url = "https://elpa.gnu.org/packages/posframe-1.4.0.tar";
|
||||
sha256 = "0pqy7scdi3qxj518xm0bbr3979byfxqxxh64wny37xzhd4apsw5j";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
@@ -4422,10 +4437,10 @@
|
||||
elpaBuild {
|
||||
pname = "shell-command-plus";
|
||||
ename = "shell-command+";
|
||||
version = "2.4.1";
|
||||
version = "2.4.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/shell-command+-2.4.1.tar";
|
||||
sha256 = "1pbv5g58647gq83vn5pg8c6kjhvjn3lj0wggz3iz3695yvl8aw4i";
|
||||
url = "https://elpa.gnu.org/packages/shell-command+-2.4.2.tar";
|
||||
sha256 = "1ldvil6hjs8c7wpdwx0jwaar867dil5qh6vy2k27i1alffr9nnqm";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
@@ -4896,10 +4911,10 @@
|
||||
elpaBuild {
|
||||
pname = "taxy-magit-section";
|
||||
ename = "taxy-magit-section";
|
||||
version = "0.12.1";
|
||||
version = "0.12.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/taxy-magit-section-0.12.1.tar";
|
||||
sha256 = "0bs00y8pl51dji23zx5w64h6la0y109q0jv2q1nggizk6q5bsxmg";
|
||||
url = "https://elpa.gnu.org/packages/taxy-magit-section-0.12.2.tar";
|
||||
sha256 = "1pf83zz5ibhqqlqgcxig0dsl1rnkk5r6v16s5ngvbc37q40vkwn1";
|
||||
};
|
||||
packageRequires = [ emacs magit-section taxy ];
|
||||
meta = {
|
||||
@@ -5035,10 +5050,10 @@
|
||||
elpaBuild {
|
||||
pname = "tramp";
|
||||
ename = "tramp";
|
||||
version = "2.6.0.1";
|
||||
version = "2.6.0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.6.0.1.tar";
|
||||
sha256 = "1mxkl8v40wdcyvsyjayw9yj7ghn5zrnzgaapwh1prxs42scw85x8";
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.6.0.2.tar";
|
||||
sha256 = "0pfrsgci1rqrykkfyxm9wsn7f0l3rzc2vj1fas27w925l0k0lrci";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
@@ -5140,10 +5155,10 @@
|
||||
elpaBuild {
|
||||
pname = "triples";
|
||||
ename = "triples";
|
||||
version = "0.2.3";
|
||||
version = "0.2.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/triples-0.2.3.tar";
|
||||
sha256 = "1p6vijaab3a7h9lqlxxhyipwd9rkr15r3rm0iyxxanlcggi04a39";
|
||||
url = "https://elpa.gnu.org/packages/triples-0.2.6.tar";
|
||||
sha256 = "09vr8r78vpycpxglacbgy2fy01khmvhh42panilwz2n9nhjy6xzm";
|
||||
};
|
||||
packageRequires = [ emacs seq ];
|
||||
meta = {
|
||||
@@ -5411,10 +5426,10 @@
|
||||
elpaBuild {
|
||||
pname = "vertico-posframe";
|
||||
ename = "vertico-posframe";
|
||||
version = "0.7.1";
|
||||
version = "0.7.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/vertico-posframe-0.7.1.tar";
|
||||
sha256 = "18a65hnacavy375ry5qmfj454b10h2yg9p6wbx1wdx30fwpi247a";
|
||||
url = "https://elpa.gnu.org/packages/vertico-posframe-0.7.2.tar";
|
||||
sha256 = "1sbgg0syyk24phwzji40lyw5dmwxssgvwv2fs8mbmkhv0q44f9ny";
|
||||
};
|
||||
packageRequires = [ emacs posframe vertico ];
|
||||
meta = {
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
{ lib, pkgs }:
|
||||
|
||||
self: with self; {
|
||||
|
||||
self:
|
||||
let
|
||||
inherit (pkgs) callPackage;
|
||||
in
|
||||
{
|
||||
agda-input = callPackage ./manual-packages/agda-input { };
|
||||
|
||||
agda2-mode = callPackage ./manual-packages/agda2-mode { };
|
||||
|
||||
bqn-mode = callPackage ./manual-packages/bqn-mode { };
|
||||
|
||||
cask = callPackage ./manual-packages/cask { };
|
||||
|
||||
control-lock = callPackage ./manual-packages/control-lock { };
|
||||
@@ -86,8 +87,8 @@ self: with self; {
|
||||
sunrise-commander = callPackage ./manual-packages/sunrise-commander { };
|
||||
|
||||
# camelCase aliases for some of the kebab-case expressions above
|
||||
colorThemeSolarized = color-theme-solarized;
|
||||
emacsSessionManagement = session-management-for-emacs;
|
||||
rectMark = rect-mark;
|
||||
sunriseCommander = sunrise-commander;
|
||||
colorThemeSolarized = self.color-theme-solarized;
|
||||
emacsSessionManagement = self.session-management-for-emacs;
|
||||
rectMark = self.rect-mark;
|
||||
sunriseCommander = self.sunrise-commander;
|
||||
}
|
||||
|
||||
@@ -1,22 +0,0 @@
|
||||
{ lib
|
||||
, trivialBuild
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
trivialBuild {
|
||||
pname = "bqn-mode";
|
||||
version = "0.pre+date=2022-09-14";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "museoa";
|
||||
repo = "bqn-mode";
|
||||
rev = "3e3d4758c0054b35f047bf6d9e03b1bea425d013";
|
||||
hash = "sha256:0pz3m4jp4dn8bsmc9n51sxwdk6g52mxb6y6f6a4g4hggb35shy2a";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
description = "Emacs mode for BQN programming language";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ sternenseemann AndersonTorres ];
|
||||
};
|
||||
}
|
||||
@@ -425,6 +425,18 @@ let
|
||||
|
||||
rtags-xref = dontConfigure super.rtags;
|
||||
|
||||
rime = super.rime.overrideAttrs (old: {
|
||||
buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.librime ];
|
||||
preBuild = (old.preBuild or "") + ''
|
||||
make lib
|
||||
mkdir -p /build/rime-lib
|
||||
cp *.so /build/rime-lib
|
||||
'';
|
||||
postInstall = (old.postInstall or "") + ''
|
||||
install -m444 -t $out/share/emacs/site-lisp/elpa/rime-* /build/rime-lib/*.so
|
||||
'';
|
||||
});
|
||||
|
||||
shm = super.shm.overrideAttrs (attrs: {
|
||||
propagatedUserEnvPkgs = [ pkgs.haskellPackages.structured-haskell-mode ];
|
||||
});
|
||||
|
||||
@@ -3182,10 +3182,10 @@
|
||||
elpaBuild {
|
||||
pname = "xah-fly-keys";
|
||||
ename = "xah-fly-keys";
|
||||
version = "22.9.20230207171612";
|
||||
version = "22.12.20230301220803";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-22.9.20230207171612.tar";
|
||||
sha256 = "0m633k8rx2k3gwbh3hndkmn3k804pg7j7xmqw6yf8j2a2ym4893b";
|
||||
url = "https://elpa.nongnu.org/nongnu/xah-fly-keys-22.12.20230301220803.tar";
|
||||
sha256 = "0m1wyhxqsih7777hchjk4v742ar16frdjvxyspa72az881yinv5g";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,12 +1,12 @@
|
||||
{ lib, fetchFromGitHub }:
|
||||
rec {
|
||||
version = "9.0.1275";
|
||||
version = "9.0.1369";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "vim";
|
||||
repo = "vim";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-WDnlYi9o2Kv/f3Fh1MHcfTlBTe1fxw4UyKJlKY04fyA=";
|
||||
hash = "sha256-2YjWd07RMyiITnuI3/L0D9MiAxl2+9QVT1nrMBA9/dI=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -91,6 +91,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/latex-lsp/tree-sitter-bibtex";
|
||||
};
|
||||
bicep = buildGrammar {
|
||||
language = "bicep";
|
||||
version = "b94a098";
|
||||
src = fetchFromGitHub {
|
||||
owner = "amaanq";
|
||||
repo = "tree-sitter-bicep";
|
||||
rev = "b94a0983b69ebb75e9129329a188199ad6ebcec0";
|
||||
hash = "sha256-YCVOgLmtCWd4FwfwmQUZhSzP2wS2ZDLwXP1BRrpE0Ls=";
|
||||
};
|
||||
meta.homepage = "https://github.com/amaanq/tree-sitter-bicep";
|
||||
};
|
||||
blueprint = buildGrammar {
|
||||
language = "blueprint";
|
||||
version = "6ef91ca";
|
||||
@@ -104,34 +115,34 @@
|
||||
};
|
||||
c = buildGrammar {
|
||||
language = "c";
|
||||
version = "7175a6d";
|
||||
version = "f357890";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-c";
|
||||
rev = "7175a6dd5fc1cee660dce6fe23f6043d75af424a";
|
||||
hash = "sha256-G9kVqX8walvpI7gPvPzS8g7X8RVM9y5wJHGOcyjJA/A=";
|
||||
rev = "f35789006ccbe5be8db21d1a2dd4cc0b5a1286f2";
|
||||
hash = "sha256-TLaqolQEN3m3YuNo8JbuRyaEmbWQCWyJJUaDDv4GFDY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
|
||||
};
|
||||
c_sharp = buildGrammar {
|
||||
language = "c_sharp";
|
||||
version = "5b6c4d0";
|
||||
version = "fcacbeb";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-c-sharp";
|
||||
rev = "5b6c4d0d19d79b05c69ad752e11829910e3b4610";
|
||||
hash = "sha256-Ax9AuxqQK9gSlkxM2k6E32CskudUmduWm0luC031P5U=";
|
||||
rev = "fcacbeb4af6bcdcfb4527978a997bb03f4fe086d";
|
||||
hash = "sha256-sMNNnp1Ypljou0RZ9V0M4qVP/2Osrk1L8NCiyEGY1pw=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c-sharp";
|
||||
};
|
||||
capnp = buildGrammar {
|
||||
language = "capnp";
|
||||
version = "cb85cdd";
|
||||
version = "fc6e2ad";
|
||||
src = fetchFromGitHub {
|
||||
owner = "amaanq";
|
||||
repo = "tree-sitter-capnp";
|
||||
rev = "cb85cddfdf398530110c807ba046822dbaee6afb";
|
||||
hash = "sha256-VB8fNF8EtTAkKBLIAByazczPHJYdBULCeoGQ1ZLLRhI=";
|
||||
rev = "fc6e2addf103861b9b3dffb82c543eb6b71061aa";
|
||||
hash = "sha256-FKzh0c/mTURLss8mv/c/p3dNXQxE/r5P063GEM8un70=";
|
||||
};
|
||||
meta.homepage = "https://github.com/amaanq/tree-sitter-capnp";
|
||||
};
|
||||
@@ -148,12 +159,12 @@
|
||||
};
|
||||
clojure = buildGrammar {
|
||||
language = "clojure";
|
||||
version = "262d6d6";
|
||||
version = "421546c";
|
||||
src = fetchFromGitHub {
|
||||
owner = "sogaiu";
|
||||
repo = "tree-sitter-clojure";
|
||||
rev = "262d6d60f39f0f77b3dd08da8ec895bd5a044416";
|
||||
hash = "sha256-9+tMkv329FfxYzALxkr6QZBEmJJBKUDBK4RzIsNL7S0=";
|
||||
rev = "421546c2547c74d1d9a0d8c296c412071d37e7ca";
|
||||
hash = "sha256-GfDaUZjvTELXkRzJXK303QyPDQr7ozfrz/4iOQNDQTU=";
|
||||
};
|
||||
meta.homepage = "https://github.com/sogaiu/tree-sitter-clojure";
|
||||
};
|
||||
@@ -201,14 +212,25 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/addcninblue/tree-sitter-cooklang";
|
||||
};
|
||||
cpon = buildGrammar {
|
||||
language = "cpon";
|
||||
version = "eedb93b";
|
||||
src = fetchFromGitHub {
|
||||
owner = "amaanq";
|
||||
repo = "tree-sitter-cpon";
|
||||
rev = "eedb93bf9e22e82ed6a67e6c57fd78731b44f591";
|
||||
hash = "sha256-8x+oUbiwt7prGc5cli5HabHoH3q/mBnQzO1Wy2Bauac=";
|
||||
};
|
||||
meta.homepage = "https://github.com/amaanq/tree-sitter-cpon";
|
||||
};
|
||||
cpp = buildGrammar {
|
||||
language = "cpp";
|
||||
version = "56cec4c";
|
||||
version = "03fa93d";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-cpp";
|
||||
rev = "56cec4c2eb5d6af3d2942e69e35db15ae2433740";
|
||||
hash = "sha256-CWh5p0tlBQizABjwBRN1VoxeEriOPhTy3lFZI9PjsTA=";
|
||||
rev = "03fa93db133d6048a77d4de154a7b17ea8b9d076";
|
||||
hash = "sha256-0KYGEgAWmKFialuCy2zTfadDYezaftRRWjnr7sua9/c=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp";
|
||||
};
|
||||
@@ -225,15 +247,26 @@
|
||||
};
|
||||
cuda = buildGrammar {
|
||||
language = "cuda";
|
||||
version = "a02c214";
|
||||
version = "91c3ca3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "theHamsta";
|
||||
repo = "tree-sitter-cuda";
|
||||
rev = "a02c21408c592e6e6856eaabe4727faa97cf8d85";
|
||||
hash = "sha256-bgyisXPNZXlvPF0nRPD5LeVhvbTx0TLgnToue9IFHwI=";
|
||||
rev = "91c3ca3e42326e0f7b83c82765940bbf7f91c847";
|
||||
hash = "sha256-0jDO8Wkqkn9ol4mfga/h/9yMMWkMF9Z/33rTxB8n1dg=";
|
||||
};
|
||||
meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda";
|
||||
};
|
||||
cue = buildGrammar {
|
||||
language = "cue";
|
||||
version = "4ffcda8";
|
||||
src = fetchFromGitHub {
|
||||
owner = "eonpatapon";
|
||||
repo = "tree-sitter-cue";
|
||||
rev = "4ffcda8c2bdfee1c2ba786cd503d0508ea92cca2";
|
||||
hash = "sha256-a72Z67LXmEuHF/mKIaxi1Y9TNzqLjAiPYR3+VUu9fso=";
|
||||
};
|
||||
meta.homepage = "https://github.com/eonpatapon/tree-sitter-cue";
|
||||
};
|
||||
d = buildGrammar {
|
||||
language = "d";
|
||||
version = "c2fbf21";
|
||||
@@ -269,6 +302,17 @@
|
||||
generate = true;
|
||||
meta.homepage = "https://github.com/joelspadin/tree-sitter-devicetree";
|
||||
};
|
||||
dhall = buildGrammar {
|
||||
language = "dhall";
|
||||
version = "affb6ee";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jbellerb";
|
||||
repo = "tree-sitter-dhall";
|
||||
rev = "affb6ee38d629c9296749767ab832d69bb0d9ea8";
|
||||
hash = "sha256-q9OkKmp0Nor+YkFc8pBVAOoXoWzwjjzg9lBUKAUnjmQ=";
|
||||
};
|
||||
meta.homepage = "https://github.com/jbellerb/tree-sitter-dhall";
|
||||
};
|
||||
diff = buildGrammar {
|
||||
language = "diff";
|
||||
version = "f69bde8";
|
||||
@@ -382,12 +426,12 @@
|
||||
};
|
||||
erlang = buildGrammar {
|
||||
language = "erlang";
|
||||
version = "2422bc9";
|
||||
version = "9fe5cdf";
|
||||
src = fetchFromGitHub {
|
||||
owner = "WhatsApp";
|
||||
repo = "tree-sitter-erlang";
|
||||
rev = "2422bc9373094bfa97653ac540e08759f812523c";
|
||||
hash = "sha256-DTIA3EP2RQtts6Hl6FThSxN1SwEUbRVJJig8zOUQRCo=";
|
||||
rev = "9fe5cdfab0f0d753112e9949a3501f64b75a3d92";
|
||||
hash = "sha256-nJikCiksuOAEXEvX2eQ2jZoVmzPQLJ36l4mk0irPW3c=";
|
||||
};
|
||||
meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang";
|
||||
};
|
||||
@@ -426,12 +470,12 @@
|
||||
};
|
||||
fortran = buildGrammar {
|
||||
language = "fortran";
|
||||
version = "67cf1c9";
|
||||
version = "31552ac";
|
||||
src = fetchFromGitHub {
|
||||
owner = "stadelmanma";
|
||||
repo = "tree-sitter-fortran";
|
||||
rev = "67cf1c96fd0dd92edd7812a95626c86c9be0781a";
|
||||
hash = "sha256-OImEGuPlks3XfWSWXLekz5nSPJUHNS9uDm6ugrFPfdQ=";
|
||||
rev = "31552ac43ecaffa443a12ebea68cc526d334892f";
|
||||
hash = "sha256-6ywdhlQGjivA2RV5345A0BiybAJOn9cIM03GMHjVoiM=";
|
||||
};
|
||||
meta.homepage = "https://github.com/stadelmanma/tree-sitter-fortran";
|
||||
};
|
||||
@@ -470,12 +514,12 @@
|
||||
};
|
||||
gdscript = buildGrammar {
|
||||
language = "gdscript";
|
||||
version = "31ebb7c";
|
||||
version = "a4b57cc";
|
||||
src = fetchFromGitHub {
|
||||
owner = "PrestonKnopp";
|
||||
repo = "tree-sitter-gdscript";
|
||||
rev = "31ebb7cd0b880ea53a152eaf9d4df73f737181cc";
|
||||
hash = "sha256-9fP6Us3mDMjJFM1Kxg0KiulCvyVv5qdo8+tyRgzGxUw=";
|
||||
rev = "a4b57cc3bcbfc24550e858159647e9238e7ad1ac";
|
||||
hash = "sha256-31FQlLVn5T/9858bPsZQkvejGVjO0ok5T5A13a+S91Y=";
|
||||
};
|
||||
meta.homepage = "https://github.com/PrestonKnopp/tree-sitter-gdscript";
|
||||
};
|
||||
@@ -637,12 +681,12 @@
|
||||
};
|
||||
haskell = buildGrammar {
|
||||
language = "haskell";
|
||||
version = "3bdba07";
|
||||
version = "0da7f82";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-haskell";
|
||||
rev = "3bdba07c7a8eec23f87fa59ce9eb2ea4823348b3";
|
||||
hash = "sha256-/aGUdyVxXqXCvjruI8rqiKzfTsyxzOKaXSAUG5xK4cE=";
|
||||
rev = "0da7f826e85b3e589e217adf69a6fd89ee4301b9";
|
||||
hash = "sha256-5PCwcbF+UOmn4HE99RgBoDvC7w/QP1lo870+11S6cok=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-haskell";
|
||||
};
|
||||
@@ -692,12 +736,12 @@
|
||||
};
|
||||
hlsl = buildGrammar {
|
||||
language = "hlsl";
|
||||
version = "8e2f090";
|
||||
version = "306d485";
|
||||
src = fetchFromGitHub {
|
||||
owner = "theHamsta";
|
||||
repo = "tree-sitter-hlsl";
|
||||
rev = "8e2f0907e8d2e17a88a375025e70054bafdaa8b0";
|
||||
hash = "sha256-kBSigaBR6uM4E9uHI79gYlxBrN0E5i1zTW8syMPIQdI=";
|
||||
rev = "306d48516a6b3dbb18a184692e8edffa8403018f";
|
||||
hash = "sha256-PvraHZYbTF3FFIQoooRr1Lx4ZrBLzzxWd5YoqibBQfM=";
|
||||
};
|
||||
meta.homepage = "https://github.com/theHamsta/tree-sitter-hlsl";
|
||||
};
|
||||
@@ -758,23 +802,23 @@
|
||||
};
|
||||
java = buildGrammar {
|
||||
language = "java";
|
||||
version = "dd597f1";
|
||||
version = "3c24aa9";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-java";
|
||||
rev = "dd597f13eb9bab0c1bccc9aec390e8e6ebf9e0a6";
|
||||
hash = "sha256-JeQZ4TMpt6Lfbcfc6m/PzhFZEgTdouasJ3b1sPISy2s=";
|
||||
rev = "3c24aa9365985830421a3a7b6791b415961ea770";
|
||||
hash = "sha256-06spTQhAIJvixfZ858vPKKv6FJ1AC4JElQzkugxfTuo=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-java";
|
||||
};
|
||||
javascript = buildGrammar {
|
||||
language = "javascript";
|
||||
version = "15e85e8";
|
||||
version = "5720b24";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-javascript";
|
||||
rev = "15e85e80b851983fab6b12dce5a535f5a0df0f9c";
|
||||
hash = "sha256-2SAJBnY8pmynGqB8OVqHeeAKovskO+C/XiJbLTKSlcM=";
|
||||
rev = "5720b249490b3c17245ba772f6be4a43edb4e3b7";
|
||||
hash = "sha256-rSkLSXdthOS9wzXsC8D1Z1P0vmOT+APzeesvlN7ta6U=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-javascript";
|
||||
};
|
||||
@@ -857,12 +901,12 @@
|
||||
};
|
||||
kdl = buildGrammar {
|
||||
language = "kdl";
|
||||
version = "c3c4856";
|
||||
version = "e36f054";
|
||||
src = fetchFromGitHub {
|
||||
owner = "amaanq";
|
||||
repo = "tree-sitter-kdl";
|
||||
rev = "c3c4856464842e05366b1f3ebc4434c9194cad43";
|
||||
hash = "sha256-vYvyX9NWIFsWkxZvA5k32gFBh5Ykwgy0YrCBPAH6bcg=";
|
||||
rev = "e36f054a60c4d9e5ae29567d439fdb8790b53b30";
|
||||
hash = "sha256-ZZLe7WBDIX1x1lmuHE1lmZ93YWXTW3iwPgXXbxXR/n4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/amaanq/tree-sitter-kdl";
|
||||
};
|
||||
@@ -890,12 +934,12 @@
|
||||
};
|
||||
latex = buildGrammar {
|
||||
language = "latex";
|
||||
version = "6b7ea83";
|
||||
version = "376f640";
|
||||
src = fetchFromGitHub {
|
||||
owner = "latex-lsp";
|
||||
repo = "tree-sitter-latex";
|
||||
rev = "6b7ea839307670e6bda011f888717d3a882ecc09";
|
||||
hash = "sha256-fmMm6HM9ZCnTyDxKmouoKFPYWkbrM//gHwVEFsICzUs=";
|
||||
rev = "376f64097b7a26691a2ca60dc94e4dfa417be932";
|
||||
hash = "sha256-9hcmCr9HfhKt5dkNN24haubrOySqpxzMoLVEGO53lxk=";
|
||||
};
|
||||
meta.homepage = "https://github.com/latex-lsp/tree-sitter-latex";
|
||||
};
|
||||
@@ -932,6 +976,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/MunifTanjim/tree-sitter-lua";
|
||||
};
|
||||
luap = buildGrammar {
|
||||
language = "luap";
|
||||
version = "bfb38d2";
|
||||
src = fetchFromGitHub {
|
||||
owner = "amaanq";
|
||||
repo = "tree-sitter-luap";
|
||||
rev = "bfb38d254f380362e26b5c559a4086ba6e92ba77";
|
||||
hash = "sha256-HpKqesIa+x3EQGnWV07jv2uEW9A9TEN4bPNuecXEaFI=";
|
||||
};
|
||||
meta.homepage = "https://github.com/amaanq/tree-sitter-luap";
|
||||
};
|
||||
m68k = buildGrammar {
|
||||
language = "m68k";
|
||||
version = "d097b12";
|
||||
@@ -956,28 +1011,39 @@
|
||||
};
|
||||
markdown = buildGrammar {
|
||||
language = "markdown";
|
||||
version = "7e7aa9a";
|
||||
version = "fa6bfd5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MDeiml";
|
||||
repo = "tree-sitter-markdown";
|
||||
rev = "7e7aa9a25ca9729db9fe22912f8f47bdb403a979";
|
||||
hash = "sha256-KsE9oYzD+vVqgR35JdL0NmPfNGJqpC12sEsZVIs7NX0=";
|
||||
rev = "fa6bfd51727e4bef99f7eec5f43947f73d64ea7d";
|
||||
hash = "sha256-P31TiBW5JqDfYJhWH6pGqD2aWan0Bo1Tl0ONEg7ePnM=";
|
||||
};
|
||||
location = "tree-sitter-markdown";
|
||||
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
||||
};
|
||||
markdown_inline = buildGrammar {
|
||||
language = "markdown_inline";
|
||||
version = "7e7aa9a";
|
||||
version = "fa6bfd5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "MDeiml";
|
||||
repo = "tree-sitter-markdown";
|
||||
rev = "7e7aa9a25ca9729db9fe22912f8f47bdb403a979";
|
||||
hash = "sha256-KsE9oYzD+vVqgR35JdL0NmPfNGJqpC12sEsZVIs7NX0=";
|
||||
rev = "fa6bfd51727e4bef99f7eec5f43947f73d64ea7d";
|
||||
hash = "sha256-P31TiBW5JqDfYJhWH6pGqD2aWan0Bo1Tl0ONEg7ePnM=";
|
||||
};
|
||||
location = "tree-sitter-markdown-inline";
|
||||
meta.homepage = "https://github.com/MDeiml/tree-sitter-markdown";
|
||||
};
|
||||
matlab = buildGrammar {
|
||||
language = "matlab";
|
||||
version = "2d5d3d5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "mstanciu552";
|
||||
repo = "tree-sitter-matlab";
|
||||
rev = "2d5d3d5193718a86477d4335aba5b34e79147326";
|
||||
hash = "sha256-Rpa/F3MIFRmHunJFsuvbs3h3vDlR3U7UZ+sTN5tJS8U=";
|
||||
};
|
||||
meta.homepage = "https://github.com/mstanciu552/tree-sitter-matlab";
|
||||
};
|
||||
menhir = buildGrammar {
|
||||
language = "menhir";
|
||||
version = "db7953a";
|
||||
@@ -1002,12 +1068,12 @@
|
||||
};
|
||||
meson = buildGrammar {
|
||||
language = "meson";
|
||||
version = "5f3138d";
|
||||
version = "3d6dfbd";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Decodetalkers";
|
||||
repo = "tree-sitter-meson";
|
||||
rev = "5f3138d555aceef976ec9a1d4a3f78e13b31e45f";
|
||||
hash = "sha256-P0S2JpRjAznDLaU97NMzLuuNyPqqy4RNqBa+PKvyl6s=";
|
||||
rev = "3d6dfbdb2432603bc84ca7dc009bb39ed9a8a7b1";
|
||||
hash = "sha256-NRiecSr5UjISlFtmtvy3SYaWSmXMf0bKCKQVA83Jx+Y=";
|
||||
};
|
||||
meta.homepage = "https://github.com/Decodetalkers/tree-sitter-meson";
|
||||
};
|
||||
@@ -1113,14 +1179,25 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/Isopod/tree-sitter-pascal.git";
|
||||
};
|
||||
passwd = buildGrammar {
|
||||
language = "passwd";
|
||||
version = "2023939";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ath3";
|
||||
repo = "tree-sitter-passwd";
|
||||
rev = "20239395eacdc2e0923a7e5683ad3605aee7b716";
|
||||
hash = "sha256-3UfuyJeblQBKjqZvLYyO3GoCvYJp+DvBwQGkR3pFQQ4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/ath3/tree-sitter-passwd";
|
||||
};
|
||||
perl = buildGrammar {
|
||||
language = "perl";
|
||||
version = "749d26f";
|
||||
version = "ff1f0ac";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ganezdragon";
|
||||
repo = "tree-sitter-perl";
|
||||
rev = "749d26fe13fb131b92e6515416096e572575b981";
|
||||
hash = "sha256-VOLvfgh1ZbuDk1BKBW9ln/9b/seudFv0PTIOFe1AtNE=";
|
||||
rev = "ff1f0ac0f1c678a23f68d0140e75a0da8e11b7b5";
|
||||
hash = "sha256-RFSDtd8iJJEX7dawMzaGwJUB4t/nr11hmG2EdTp11s4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/ganezdragon/tree-sitter-perl";
|
||||
};
|
||||
@@ -1157,6 +1234,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/leo60228/tree-sitter-pioasm";
|
||||
};
|
||||
po = buildGrammar {
|
||||
language = "po";
|
||||
version = "d6aed22";
|
||||
src = fetchFromGitHub {
|
||||
owner = "erasin";
|
||||
repo = "tree-sitter-po";
|
||||
rev = "d6aed225290bc71a15ab6f06305cb11419360c56";
|
||||
hash = "sha256-fz4DGPA+KtOvLBmVMXqwnEMeXhupFecQC1xfhMbWCJg=";
|
||||
};
|
||||
meta.homepage = "https://github.com/erasin/tree-sitter-po";
|
||||
};
|
||||
poe_filter = buildGrammar {
|
||||
language = "poe_filter";
|
||||
version = "80dc101";
|
||||
@@ -1190,6 +1278,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/mitchellh/tree-sitter-proto";
|
||||
};
|
||||
prql = buildGrammar {
|
||||
language = "prql";
|
||||
version = "5f6c4e4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "PRQL";
|
||||
repo = "tree-sitter-prql";
|
||||
rev = "5f6c4e4a90633b19e2077c1d37248989789d64be";
|
||||
hash = "sha256-unmRen1XJgT60lMfsIsp0PBghfBGqMoiEN9nB8Hu6gQ=";
|
||||
};
|
||||
meta.homepage = "https://github.com/PRQL/tree-sitter-prql";
|
||||
};
|
||||
pug = buildGrammar {
|
||||
language = "pug";
|
||||
version = "884e225";
|
||||
@@ -1203,12 +1302,12 @@
|
||||
};
|
||||
python = buildGrammar {
|
||||
language = "python";
|
||||
version = "528855e";
|
||||
version = "6282715";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-python";
|
||||
rev = "528855eee2665210e1bf5556de48b8d8dacb8932";
|
||||
hash = "sha256-H2RWMbbKIMbfH/TMC5SKbO9qEB9RfFUOYrczwmDdrVo=";
|
||||
rev = "62827156d01c74dc1538266344e788da74536b8a";
|
||||
hash = "sha256-hVtX4Dyqrq+cSvKTmKMxLbAplcCdR8dfFDoIZNtPFA0=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-python";
|
||||
};
|
||||
@@ -1223,6 +1322,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ql";
|
||||
};
|
||||
qmldir = buildGrammar {
|
||||
language = "qmldir";
|
||||
version = "6b2b5e4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Decodetalkers";
|
||||
repo = "tree-sitter-qmldir";
|
||||
rev = "6b2b5e41734bd6f07ea4c36ac20fb6f14061c841";
|
||||
hash = "sha256-7ic9Xd+1G0JM25bY0f8N5r6YZx5NV5HrJXXHp6pXvo4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/Decodetalkers/tree-sitter-qmldir";
|
||||
};
|
||||
qmljs = buildGrammar {
|
||||
language = "qmljs";
|
||||
version = "ab75be9";
|
||||
@@ -1258,12 +1368,12 @@
|
||||
};
|
||||
racket = buildGrammar {
|
||||
language = "racket";
|
||||
version = "1a5df02";
|
||||
version = "c2f7baa";
|
||||
src = fetchFromGitHub {
|
||||
owner = "6cdh";
|
||||
repo = "tree-sitter-racket";
|
||||
rev = "1a5df0206b25a05cb1b35a68d2105fc7493df39b";
|
||||
hash = "sha256-cKRShvkpg6M8vxUvp5wKHvX9ZJOUyv7m2hNyfeKw/Bk=";
|
||||
rev = "c2f7baa22053a66b4dba852cdba3f14f34bb6985";
|
||||
hash = "sha256-P6p2IOECsqCLBgtLE+xqzZuMS8d/lTfAHfTeONClVbY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/6cdh/tree-sitter-racket";
|
||||
};
|
||||
@@ -1346,12 +1456,12 @@
|
||||
};
|
||||
rust = buildGrammar {
|
||||
language = "rust";
|
||||
version = "f7fb205";
|
||||
version = "fbf9e50";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-rust";
|
||||
rev = "f7fb205c424b0962de59b26b931fe484e1262b35";
|
||||
hash = "sha256-Onk8i2vGHySsjg/O3OZvl7OlDpg3b5/7481f+jJMPCU=";
|
||||
rev = "fbf9e507d09d8b3c0bb9dfc4d46c31039a47dc4a";
|
||||
hash = "sha256-hWooQfE7sWXfOkGai3hREoEulcwWT6XPT4xAc+dfjKk=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-rust";
|
||||
};
|
||||
@@ -1401,12 +1511,12 @@
|
||||
};
|
||||
smali = buildGrammar {
|
||||
language = "smali";
|
||||
version = "5a742af";
|
||||
version = "a67a429";
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~yotam";
|
||||
repo = "tree-sitter-smali";
|
||||
rev = "5a742af7388864a3ff2ce8421328a33e7246a2d5";
|
||||
hash = "sha256-8FpmeyGzaQDUWXs/XanNi1u0jHsKP9wq7y7XNaQIlXM=";
|
||||
rev = "a67a429784dafa0ca4342d71e6530137ca803883";
|
||||
hash = "sha256-Pby6RZKPXyPR41E9m2iRsLgVt7bOn2AZyyb4lvcwYwY=";
|
||||
};
|
||||
meta.homepage = "https://git.sr.ht/~yotam/tree-sitter-smali";
|
||||
};
|
||||
@@ -1423,14 +1533,14 @@
|
||||
};
|
||||
solidity = buildGrammar {
|
||||
language = "solidity";
|
||||
version = "52ed088";
|
||||
version = "1680203";
|
||||
src = fetchFromGitHub {
|
||||
owner = "YongJieYongJie";
|
||||
owner = "JoranHonig";
|
||||
repo = "tree-sitter-solidity";
|
||||
rev = "52ed0880c0126df2f2c7693f215fe6f38e4a2e0a";
|
||||
hash = "sha256-ZyeUYtE0pyQIPnZhza6u6yQO0Mx8brgAUmUpIXYZwb4=";
|
||||
rev = "168020304759ad5d8b4a88a541a699134e3730c5";
|
||||
hash = "sha256-GCSBXB9nNIYpcXlA6v7P1ejn1ojmfXdPzr1sWejB560=";
|
||||
};
|
||||
meta.homepage = "https://github.com/YongJieYongJie/tree-sitter-solidity";
|
||||
meta.homepage = "https://github.com/JoranHonig/tree-sitter-solidity";
|
||||
};
|
||||
sparql = buildGrammar {
|
||||
language = "sparql";
|
||||
@@ -1445,16 +1555,27 @@
|
||||
};
|
||||
sql = buildGrammar {
|
||||
language = "sql";
|
||||
version = "3a3f92b";
|
||||
version = "1cb7c7a";
|
||||
src = fetchFromGitHub {
|
||||
owner = "derekstride";
|
||||
repo = "tree-sitter-sql";
|
||||
rev = "3a3f92b29c880488a08bc2baaf1aca6432ec3380";
|
||||
hash = "sha256-UdvsZOpnZsfWomKHBmtpHYDsgYZgIZvw2d+JNUphycs=";
|
||||
rev = "1cb7c7a11015983f6d173847d5a3574f8e20107b";
|
||||
hash = "sha256-zdaFE5G19MLH4W5ZF0HfRNNMJV9Evp+X70eXHDmD/pA=";
|
||||
};
|
||||
generate = true;
|
||||
meta.homepage = "https://github.com/derekstride/tree-sitter-sql";
|
||||
};
|
||||
starlark = buildGrammar {
|
||||
language = "starlark";
|
||||
version = "8ad93a7";
|
||||
src = fetchFromGitHub {
|
||||
owner = "amaanq";
|
||||
repo = "tree-sitter-starlark";
|
||||
rev = "8ad93a74c2a880bc16325affba3cc66c14bb2bde";
|
||||
hash = "sha256-HHGE7P/QAPCyu7wecRiDLrQIm8lndFjKOOb9xiyXsfc=";
|
||||
};
|
||||
meta.homepage = "https://github.com/amaanq/tree-sitter-starlark";
|
||||
};
|
||||
supercollider = buildGrammar {
|
||||
language = "supercollider";
|
||||
version = "90c6d9f";
|
||||
@@ -1490,12 +1611,12 @@
|
||||
};
|
||||
swift = buildGrammar {
|
||||
language = "swift";
|
||||
version = "0c32d29";
|
||||
version = "fe2e325";
|
||||
src = fetchFromGitHub {
|
||||
owner = "alex-pinkus";
|
||||
repo = "tree-sitter-swift";
|
||||
rev = "0c32d2948b79939b6464d9ced40fca43912cd486";
|
||||
hash = "sha256-LyeK/fOQBO10blHCXYyGvmzk/U3uIj4tfjdH+p6aVs4=";
|
||||
rev = "fe2e325a45056cdb3fcda821c03b8cef0d79e508";
|
||||
hash = "sha256-ldPHpYhuAbodMPY8t8X7UiMY8kcds28r75R3Hqnlqv8=";
|
||||
};
|
||||
generate = true;
|
||||
meta.homepage = "https://github.com/alex-pinkus/tree-sitter-swift";
|
||||
@@ -1604,12 +1725,12 @@
|
||||
};
|
||||
tsx = buildGrammar {
|
||||
language = "tsx";
|
||||
version = "5d20856";
|
||||
version = "c6e56d4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-typescript";
|
||||
rev = "5d20856f34315b068c41edaee2ac8a100081d259";
|
||||
hash = "sha256-cpOAtfvlffS57BrXaoa2xa9NUYw0AsHxVI8PrcpgZCQ=";
|
||||
rev = "c6e56d44c686a67c89e29e773e662567285d610f";
|
||||
hash = "sha256-usZAbf2sTNO78ldiiex6i94dh73kH6QOV0jjf5StuO0=";
|
||||
};
|
||||
location = "tsx";
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript";
|
||||
@@ -1638,24 +1759,35 @@
|
||||
};
|
||||
typescript = buildGrammar {
|
||||
language = "typescript";
|
||||
version = "5d20856";
|
||||
version = "c6e56d4";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-typescript";
|
||||
rev = "5d20856f34315b068c41edaee2ac8a100081d259";
|
||||
hash = "sha256-cpOAtfvlffS57BrXaoa2xa9NUYw0AsHxVI8PrcpgZCQ=";
|
||||
rev = "c6e56d44c686a67c89e29e773e662567285d610f";
|
||||
hash = "sha256-usZAbf2sTNO78ldiiex6i94dh73kH6QOV0jjf5StuO0=";
|
||||
};
|
||||
location = "typescript";
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-typescript";
|
||||
};
|
||||
ungrammar = buildGrammar {
|
||||
language = "ungrammar";
|
||||
version = "debd26f";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Philipp-M";
|
||||
repo = "tree-sitter-ungrammar";
|
||||
rev = "debd26fed283d80456ebafa33a06957b0c52e451";
|
||||
hash = "sha256-ftvcD8I+hYqH3EGxaRZ0w8FHjBA34OSTTsrUsAOtayU=";
|
||||
};
|
||||
meta.homepage = "https://github.com/Philipp-M/tree-sitter-ungrammar";
|
||||
};
|
||||
v = buildGrammar {
|
||||
language = "v";
|
||||
version = "136f3a0";
|
||||
version = "66cf9d3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "vlang";
|
||||
repo = "vls";
|
||||
rev = "136f3a0ad91ab8a781c2d4eb419df0a981839f69";
|
||||
hash = "sha256-zmbR2Of/XEJuGvNmXAJ+C4aAMem51LVS3e1rSqjaSb0=";
|
||||
rev = "66cf9d3086fb5ecc827cb32c64c5d812ab17d2c6";
|
||||
hash = "sha256-/dNdUAmfG/HNMzeWi3PSSM9pwA60/zOjLi4NFXfn6YU=";
|
||||
};
|
||||
location = "tree_sitter_v";
|
||||
meta.homepage = "https://github.com/vlang/vls";
|
||||
@@ -1759,14 +1891,25 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/Hubro/tree-sitter-yang";
|
||||
};
|
||||
yuck = buildGrammar {
|
||||
language = "yuck";
|
||||
version = "48af129";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Philipp-M";
|
||||
repo = "tree-sitter-yuck";
|
||||
rev = "48af129ab5411cd6f7ae2b36f53c1192572fa030";
|
||||
hash = "sha256-G/aY771G7R78FhS7WxktlMf/0K+PR80WqfwmH+gQhwQ=";
|
||||
};
|
||||
meta.homepage = "https://github.com/Philipp-M/tree-sitter-yuck";
|
||||
};
|
||||
zig = buildGrammar {
|
||||
language = "zig";
|
||||
version = "6b3f578";
|
||||
version = "f3bc9ff";
|
||||
src = fetchFromGitHub {
|
||||
owner = "maxxnino";
|
||||
repo = "tree-sitter-zig";
|
||||
rev = "6b3f5788f38be900b45f5af5a753bf6a37d614b8";
|
||||
hash = "sha256-KwMo1gwre8/AXkXXwQqPHZIEPXM26PK8SI0p3tmkt24=";
|
||||
rev = "f3bc9ffe9ca10f52dee01999b5b6ce9a4074b0ac";
|
||||
hash = "sha256-/Bk7UGdPOHmGc01eCNPHsXFMF4pAxE/gkhVxvRItZZ8=";
|
||||
};
|
||||
meta.homepage = "https://github.com/maxxnino/tree-sitter-zig";
|
||||
};
|
||||
|
||||
@@ -39,6 +39,7 @@
|
||||
, statix
|
||||
, stylish-haskell
|
||||
, tabnine
|
||||
, taskwarrior
|
||||
, tmux
|
||||
, tup
|
||||
, vim
|
||||
@@ -894,6 +895,10 @@ self: super: {
|
||||
};
|
||||
});
|
||||
|
||||
taskwarrior = buildVimPluginFrom2Nix {
|
||||
inherit (taskwarrior) version pname;
|
||||
src = "${taskwarrior.src}/scripts/vim";
|
||||
};
|
||||
telescope-cheat-nvim = super.telescope-cheat-nvim.overrideAttrs (old: {
|
||||
dependencies = with self; [ sqlite-lua telescope-nvim ];
|
||||
});
|
||||
|
||||
@@ -18,17 +18,17 @@ let
|
||||
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "0661qkcljxdpi5f6cyfqr8vyf87p94amzdspcg8hjrz18j1adb0h";
|
||||
x86_64-darwin = "0781ad52vcqgam3iprm56kvcv5v12pba0i5spazr5zssnn3w3ym0";
|
||||
aarch64-linux = "0fwl12yngq3z2f18hp43q7nmnjdikly05q9rar9vcjc63h2pzfc5";
|
||||
aarch64-darwin = "1nldkg14zvk6nc72l50w4lv9k490vn34ms6z9x2b9zkx15d09v7x";
|
||||
armv7l-linux = "0mhriqi6hzn7wwfzl98dvcghkpkfa4rbbxvmyvzzc5ycgbs6r1mx";
|
||||
x86_64-linux = "00n7mykr8dyn9chiwsp0s8pk53c39by4wl0hyx1inb0zqxaszw25";
|
||||
x86_64-darwin = "1q41x23jbpisbwcxgmx18g0bcdsj5g1w3pbj9m6mxlssvbc2xiw6";
|
||||
aarch64-linux = "1kaj8g50m8imk34whf6sq41a2b1751mjqxvpwnprlx0i7xj2l832";
|
||||
aarch64-darwin = "1h6plmyv3xkkbpwka5rrkc1bdrgj9d8jp0q6qyhch368x8mp781m";
|
||||
armv7l-linux = "0q46nzhn8agsif9s50dbdbx6ds3ll39yp5lrp9n7y9a26m4cwjmv";
|
||||
}.${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.75.1";
|
||||
version = "1.76.0";
|
||||
pname = "vscode";
|
||||
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
|
||||
@@ -31,13 +31,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "cemu";
|
||||
version = "2.0-26";
|
||||
version = "2.0-28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cemu-project";
|
||||
repo = "Cemu";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-+y+PJE2biRvuxIwrFVMjmkZyD8/zhHVMw6vzNKlsOZE=";
|
||||
hash = "sha256-qKrj3XPtFVy0/KH18D0oCeVUQQmIdkYJYrCKD82c/+s=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -1,10 +1,15 @@
|
||||
{ alsa-lib
|
||||
, copyDesktopItems
|
||||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, SDL2
|
||||
, SDL2_image
|
||||
, SDL2_net
|
||||
, alsa-lib
|
||||
, copyDesktopItems
|
||||
, fluidsynth
|
||||
, glib
|
||||
, gtest
|
||||
, lib
|
||||
, irr1
|
||||
, libGL
|
||||
, libGLU
|
||||
, libjack2
|
||||
@@ -20,22 +25,17 @@
|
||||
, ninja
|
||||
, opusfile
|
||||
, pkg-config
|
||||
, irr1
|
||||
, SDL2
|
||||
, SDL2_image
|
||||
, SDL2_net
|
||||
, speexdsp
|
||||
, stdenv
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (self: {
|
||||
pname = "dosbox-staging";
|
||||
version = "0.80.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
owner = "dosbox-staging";
|
||||
repo = "dosbox-staging";
|
||||
rev = "v${self.version}";
|
||||
hash = "sha256-I90poBeLSq1c8PXyjrx7/UcbfqFNnnNiXfJdWhLPGMc=";
|
||||
};
|
||||
|
||||
@@ -91,17 +91,16 @@ stdenv.mkDerivation rec {
|
||||
# original dosbox. Doing it this way allows us to work with frontends and
|
||||
# launchers that expect the binary to be named dosbox, but get out of the
|
||||
# way of vanilla dosbox if the user desires to install that as well.
|
||||
mv $out/bin/dosbox $out/bin/${pname}
|
||||
mv $out/bin/dosbox $out/bin/dosbox-staging
|
||||
makeWrapper $out/bin/dosbox-staging $out/bin/dosbox
|
||||
|
||||
# Create a symlink to dosbox manual instead of merely copying it
|
||||
# Create a symlink to dosbox manual instead of copying it
|
||||
pushd $out/share/man/man1/
|
||||
mv dosbox.1.gz ${pname}.1.gz
|
||||
ln -s ${pname}.1.gz dosbox.1.gz
|
||||
ln -s dosbox.1.gz dosbox-staging.1.gz
|
||||
popd
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
homepage = "https://dosbox-staging.github.io/";
|
||||
description = "A modernized DOS emulator";
|
||||
longDescription = ''
|
||||
@@ -110,10 +109,10 @@ stdenv.mkDerivation rec {
|
||||
existing DOSBox codebase while leveraging modern development tools and
|
||||
practices.
|
||||
'';
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ joshuafern AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [ joshuafern AndersonTorres ];
|
||||
platforms = lib.platforms.unix;
|
||||
priority = 101;
|
||||
};
|
||||
}
|
||||
})
|
||||
# TODO: report upstream about not finding SDL2_net
|
||||
|
||||
@@ -145,8 +145,8 @@ in rec {
|
||||
|
||||
winetricks = fetchFromGitHub rec {
|
||||
# https://github.com/Winetricks/winetricks/releases
|
||||
version = "20220411";
|
||||
hash = "sha256-FjH10nZDYbqXI6/vKpZJKfv2maXSVkahNDf5UTU3eyU=";
|
||||
version = "20230212";
|
||||
hash = "sha256-pd37QTcqY5ZaVBssGecuqziOIq1p0JH0ZDB+oLmp9JU=";
|
||||
owner = "Winetricks";
|
||||
repo = "winetricks";
|
||||
rev = version;
|
||||
|
||||
@@ -5,20 +5,21 @@
|
||||
, SDL2
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (self: {
|
||||
pname = "yapesdl";
|
||||
version = "0.70.2";
|
||||
version = "0.71.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "calmopyrin";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-51P6wNaSfVA3twu+yRUKXguEmVBvuuEnHxH1Zl1vsCc=";
|
||||
repo = "yapesdl";
|
||||
rev = "v${self.version}";
|
||||
hash = "sha256-QGF3aS/YSzdGxHONKyA/iTewEVYsjBAsKARVMXkFV2k=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
SDL2
|
||||
];
|
||||
@@ -27,17 +28,17 @@ stdenv.mkDerivation rec {
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
install --directory $out/bin $out/share/doc/$pname
|
||||
install yapesdl $out/bin/
|
||||
install README.SDL $out/share/doc/$pname/
|
||||
install -Dm755 yapesdl -t $out/bin/
|
||||
install -Dm755 README.SDL -t $out/share/doc/yapesdl/
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
homepage = "http://yape.plus4.net/";
|
||||
description = "Multiplatform Commodore 64 and 264 family emulator";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
platforms = platforms.unix;
|
||||
license = lib.licenses.gpl2Plus;
|
||||
maintainers = with lib.maintainers; [ AndersonTorres ];
|
||||
platforms = lib.platforms.unix;
|
||||
broken = stdenv.isDarwin;
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
{ lib
|
||||
, python3
|
||||
, xorg
|
||||
, argyllcms
|
||||
, wrapGAppsHook
|
||||
, gtk3
|
||||
, librsvg
|
||||
}:
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "displaycal";
|
||||
version = "3.9.10";
|
||||
format = "setuptools";
|
||||
|
||||
src = python3.pkgs.fetchPypi {
|
||||
pname = "DisplayCAL";
|
||||
inherit version;
|
||||
hash = "sha256-oDHDVb0zuAC49yPfmNe7xuFKaA1BRZGr75XwsLqugHs=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
wrapGAppsHook
|
||||
gtk3
|
||||
];
|
||||
|
||||
propagatedBuildInputs = with python3.pkgs; [
|
||||
build
|
||||
certifi
|
||||
wxPython_4_2
|
||||
dbus-python
|
||||
distro
|
||||
PyChromecast
|
||||
send2trash
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
librsvg
|
||||
] ++ (with xorg; [
|
||||
libX11
|
||||
libXxf86vm
|
||||
libXext
|
||||
libXinerama
|
||||
libXrandr
|
||||
]);
|
||||
|
||||
doCheck = false; # Tests try to access an X11 session and dbus in weird locations.
|
||||
|
||||
pythonImportsCheck = [ "DisplayCAL" ];
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
preFixup = ''
|
||||
makeWrapperArgs+=(
|
||||
''${gappsWrapperArgs[@]}
|
||||
--prefix PATH : ${lib.makeBinPath [ argyllcms ]}
|
||||
--prefix PYTHONPATH : $PYTHONPATH
|
||||
)
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Display calibration and characterization powered by Argyll CMS (Migrated to Python 3)";
|
||||
homepage = "https://github.com/eoyilmaz/displaycal-py3";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ toastal ];
|
||||
};
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
{ lib, stdenv, fetchFromGitHub, pkg-config, autoconf, automake, gettext, intltool
|
||||
{ lib, stdenv, fetchFromGitHub, pkg-config, meson, ninja, xxd, gettext, intltool
|
||||
, gtk3, lcms2, exiv2, libchamplain, clutter-gtk, ffmpegthumbnailer, fbida
|
||||
, libarchive, djvulibre, libheif, openjpeg, libjxl, libraw, lua5_3, poppler
|
||||
, gspell, libtiff, libwebp
|
||||
, wrapGAppsHook, fetchpatch, doxygen
|
||||
, nix-update-script
|
||||
}:
|
||||
@@ -12,31 +14,26 @@ stdenv.mkDerivation rec {
|
||||
owner = "BestImageViewer";
|
||||
repo = "geeqie";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-O+yz/uNxueR+naEJG8EZ+k/JutRjJ5wwbB9DYb8YNLw=";
|
||||
sha256 = "sha256-0GOX77vZ4KZkvwnR1vlv52tlbR+ciwl3ycxbOIcDOqU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Do not build the changelog as this requires markdown.
|
||||
(fetchpatch {
|
||||
name = "geeqie-1.4-goodbye-changelog.patch";
|
||||
url = "https://src.fedoraproject.org/rpms/geeqie/raw/132fb04a1a5e74ddb333d2474f7edb9a39dc8d27/f/geeqie-1.4-goodbye-changelog.patch";
|
||||
sha256 = "00a35dds44kjjdqsbbfk0x9y82jspvsbpm2makcm1ivzlhjjgszn";
|
||||
})
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs .
|
||||
# libtiff detection is broken and looks for liblibtiff...
|
||||
# fixed upstream, to remove for 2.1
|
||||
substituteInPlace meson.build --replace 'libtiff' 'tiff'
|
||||
'';
|
||||
|
||||
preConfigure = "./autogen.sh";
|
||||
|
||||
nativeBuildInputs =
|
||||
[ pkg-config autoconf automake gettext intltool
|
||||
[ pkg-config gettext intltool
|
||||
wrapGAppsHook doxygen
|
||||
meson ninja xxd
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
gtk3 lcms2 exiv2 libchamplain clutter-gtk ffmpegthumbnailer fbida
|
||||
libarchive djvulibre libheif openjpeg libjxl libraw lua5_3 poppler
|
||||
gspell libtiff libwebp
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
||||
@@ -10,17 +10,13 @@ with lib;
|
||||
|
||||
perlPackages.buildPerlPackage rec {
|
||||
pname = "gscan2pdf";
|
||||
version = "2.12.8";
|
||||
version = "2.13.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/gscan2pdf/gscan2pdf-${version}.tar.xz";
|
||||
hash = "sha256-dmN2fMBDZqgvdHQryQgjmBHeH/h2dihRH8LkflFYzTk=";
|
||||
hash = "sha256-NGz6DUa7TdChpgwmD9pcGdvYr3R+Ft3jPPSJpybCW4Q=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./ffmpeg5-compat.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook ];
|
||||
|
||||
buildInputs =
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
--- a/t/351_unpaper.t
|
||||
+++ b/t/351_unpaper.t
|
||||
@@ -88,8 +88,10 @@
|
||||
|
||||
# if we use unlike, we no longer
|
||||
# know how many tests there will be
|
||||
- if ( $msg !~
|
||||
-/(deprecated|Encoder did not produce proper pts, making some up)/
|
||||
+ if ( $msg !~ /( deprecated |
|
||||
+ \Qdoes not contain an image sequence pattern\E |
|
||||
+ \QEncoder did not produce proper pts, making some up\E |
|
||||
+ \Quse the -update option\E )/x
|
||||
)
|
||||
{
|
||||
fail 'no warnings';
|
||||
@@ -13,16 +13,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "menyoki";
|
||||
version = "1.6.1";
|
||||
version = "1.7.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "orhun";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-z0OpRnjVfU6vcyZsxkdD2x3l+a9GkDHZcFveGunDYww=";
|
||||
sha256 = "sha256-owP3G1Rygraifdc4iPURQ1Es0msNhYZIlfrtj0CSU6Y=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-uSoyfgPlsHeUwnTHE49ErrlB65wcfl5dxn/YrW5EKZw=";
|
||||
cargoSha256 = "sha256-NtXjlGkX8AzSw98xHPymzdnTipMIunyDbpSr4eVowa0=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ]
|
||||
++ lib.optional stdenv.isLinux pkg-config;
|
||||
|
||||
@@ -2,16 +2,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "pdfcpu";
|
||||
version = "0.3.13";
|
||||
version = "0.4.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "pdfcpu";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-CFKo8YEAXAniX+jL2A0naJUOn3KAWwcrPsabdiZevhI=";
|
||||
sha256 = "sha256-l3vJDF2c6h/trfnAGxu7XEoDoj7bB4tATBUlxKFYfUs=";
|
||||
};
|
||||
|
||||
vendorSha256 = "sha256-3y42rbhurGhCI9PuSayxmLem0tv/nTjBwYxF3Dk6/yM=";
|
||||
vendorSha256 = "sha256-611eLYm+OPIdmax2KwYNjuQEGqyZd6SXvhUHzRdLzaI=";
|
||||
|
||||
# No tests
|
||||
doCheck = false;
|
||||
|
||||
@@ -23,19 +23,19 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rnote";
|
||||
version = "0.5.14";
|
||||
version = "0.5.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "flxzt";
|
||||
repo = "rnote";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-55hB8UyK+EPJ6/Yj5yNK6endNU9Ux/kZmQNjcrYq6KU=";
|
||||
hash = "sha256-blpANUfFam46Vyyc3vaB7vX07CRMtdMZR2n7FOLGgaU=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
inherit src;
|
||||
name = "${pname}-${version}";
|
||||
hash = "sha256-NPRImc0nVhYgq9JfGoSM1mT1Z6KQjVWgoLIagOUCM5M=";
|
||||
hash = "sha256-vVU/OVwtIPRw1Ohe5EIqovhyd4oYOR7CPISz8Zo74r0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1 +1 @@
|
||||
WGET_ARGS=( https://download.kde.org/stable/release-service/22.12.2/src -A '*.tar.xz' )
|
||||
WGET_ARGS=( https://download.kde.org/stable/release-service/22.12.3/src -A '*.tar.xz' )
|
||||
|
||||
+936
-936
File diff suppressed because it is too large
Load Diff
@@ -2,13 +2,13 @@
|
||||
|
||||
let
|
||||
pname = "anytype";
|
||||
version = "0.30.0";
|
||||
version = "0.31.0";
|
||||
name = "Anytype-${version}";
|
||||
nameExecutable = pname;
|
||||
src = fetchurl {
|
||||
url = "https://at9412003.fra1.digitaloceanspaces.com/Anytype-${version}.AppImage";
|
||||
name = "Anytype-${version}.AppImage";
|
||||
sha256 = "sha256-LifJc5mLbnt5wBXGM1n1uice0B6mCY80LYf3kEFJy90=";
|
||||
sha256 = "sha256-s8al0R9G478A+PymQcdcdRpw6tpKkG+WIZsXZYEvf/o=";
|
||||
};
|
||||
appimageContents = appimageTools.extractType2 { inherit name src; };
|
||||
in
|
||||
|
||||
@@ -1,14 +1,10 @@
|
||||
{ stdenv, lib, fetchFromGitHub, fetchpatch, cairo, libxkbcommon
|
||||
, pango, fribidi, harfbuzz, pcre, pkg-config
|
||||
, ncursesSupport ? true, ncurses ? null
|
||||
, waylandSupport ? true, wayland ? null, wayland-protocols ? null
|
||||
, x11Support ? true, xorg ? null
|
||||
, pango, fribidi, harfbuzz, pcre, pkg-config, scdoc
|
||||
, ncursesSupport ? true, ncurses
|
||||
, waylandSupport ? true, wayland, wayland-protocols, wayland-scanner
|
||||
, x11Support ? true, xorg
|
||||
}:
|
||||
|
||||
assert ncursesSupport -> ncurses != null;
|
||||
assert waylandSupport -> ! lib.elem null [wayland wayland-protocols];
|
||||
assert x11Support -> xorg != null;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bemenu";
|
||||
version = "0.6.14";
|
||||
@@ -20,14 +16,9 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "sha256-bMnnuT+LNNKphmvVcD1aaNZxasSGOEcAveC4stCieG8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config pcre ];
|
||||
|
||||
makeFlags = ["PREFIX=$(out)"];
|
||||
|
||||
buildFlags = ["clients"]
|
||||
++ lib.optional ncursesSupport "curses"
|
||||
++ lib.optional waylandSupport "wayland"
|
||||
++ lib.optional x11Support "x11";
|
||||
strictDeps = true;
|
||||
nativeBuildInputs = [ pkg-config scdoc ]
|
||||
++ lib.optionals waylandSupport [ wayland-scanner ];
|
||||
|
||||
buildInputs = with lib; [
|
||||
cairo
|
||||
@@ -42,6 +33,13 @@ stdenv.mkDerivation rec {
|
||||
xorg.libXdmcp xorg.libpthreadstubs xorg.libxcb
|
||||
];
|
||||
|
||||
makeFlags = ["PREFIX=$(out)"];
|
||||
|
||||
buildFlags = ["clients"]
|
||||
++ lib.optional ncursesSupport "curses"
|
||||
++ lib.optional waylandSupport "wayland"
|
||||
++ lib.optional x11Support "x11";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/Cloudef/bemenu";
|
||||
description = "Dynamic menu library and client program inspired by dmenu";
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
name = "cotp";
|
||||
version = "1.2.1";
|
||||
version = "1.2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "replydev";
|
||||
repo = "cotp";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-DIb/lgJxwg+QuqzN/0YoUV1iZwRqh6PAN0KRK7TbWDs=";
|
||||
hash = "sha256-Pg07iq2jj8cUA4iQsY52cujmUZLYrbTG5Zj+lITxpls=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-uvH4mdI8ya/MJJngXQ98oXjG7JjUdvPwIzvJrdwlOEE=";
|
||||
cargoHash = "sha256-gH9axiM0Qgl2TdJUpnDONHtU2I5l03SrKEe+2l5V21Y=";
|
||||
|
||||
buildInputs = lib.optionals stdenv.isLinux [ libxcb ]
|
||||
++ lib.optionals stdenv.isDarwin [ AppKit ];
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "effitask";
|
||||
version = "1.4.1";
|
||||
version = "1.4.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "sanpii";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-nZn+mINIqAnaCKZCiywG8/BOPx6TlSe0rKV/8gcW/B4=";
|
||||
sha256 = "sha256-6BA/TCCqVh5rtgGkUgk8nIqUzozipC5rrkbXMDWYpdQ=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-aCjZRJNsxx75ghK0N95Q9w0h5H5mW9/77j/fumDrvyM=";
|
||||
cargoHash = "sha256-ScqDNfWMFT8a1HOPjpw4J8EBrVSusIkOYReYeArZvZ8=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
|
||||
@@ -7,6 +7,13 @@
|
||||
let
|
||||
python = python3.override {
|
||||
packageOverrides = self: super: {
|
||||
flask = super.flask.overridePythonAttrs (old: rec {
|
||||
version = "2.0.3";
|
||||
src = old.src.override {
|
||||
inherit version;
|
||||
sha256 = "sha256-4RIMIoyi9VO0cN9KX6knq2YlhGdSYGmYGz6wqRkCaH0=";
|
||||
};
|
||||
});
|
||||
flask-wtf = super.flask-wtf.overridePythonAttrs (old: rec {
|
||||
version = "0.15.1";
|
||||
src = old.src.override {
|
||||
@@ -16,6 +23,11 @@ let
|
||||
disabledTests = [
|
||||
"test_outside_request"
|
||||
];
|
||||
disabledTestPaths = [
|
||||
"tests/test_form.py"
|
||||
"tests/test_html5.py"
|
||||
];
|
||||
patches = [ ];
|
||||
});
|
||||
werkzeug = super.werkzeug.overridePythonAttrs (old: rec {
|
||||
version = "2.0.3";
|
||||
@@ -24,16 +36,6 @@ let
|
||||
sha256 = "b863f8ff057c522164b6067c9e28b041161b4be5ba4d0daceeaa50a163822d3c";
|
||||
};
|
||||
});
|
||||
wtforms = super.wtforms.overridePythonAttrs (old: rec {
|
||||
version = "2.3.3";
|
||||
src = old.src.override {
|
||||
inherit version;
|
||||
sha256 = "81195de0ac94fbc8368abbaf9197b88c4f3ffd6c2719b5bf5fc9da744f3d829c";
|
||||
};
|
||||
checkPhase = ''
|
||||
${self.python.interpreter} tests/runtests.py
|
||||
'';
|
||||
});
|
||||
};
|
||||
};
|
||||
in python.pkgs.buildPythonApplication rec {
|
||||
@@ -52,6 +54,7 @@ in python.pkgs.buildPythonApplication rec {
|
||||
flask
|
||||
flask-wtf
|
||||
msgpack
|
||||
setuptools
|
||||
(python.pkgs.toPythonModule (radicale3.override { python3 = python; }))
|
||||
requests
|
||||
] ++ requests.optional-dependencies.socks;
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
{ lib, stdenv, fetchFromSourcehut, python3, help2man }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fead";
|
||||
version = "0.1.3";
|
||||
|
||||
src = fetchFromSourcehut {
|
||||
owner = "~cnx";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-cW0GxyvC9url2QAAWD0M2pR4gBiPA3eeAaw77TwMV/0=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ help2man ];
|
||||
buildInputs = [ python3 ];
|
||||
|
||||
# Needed for man page generation in build phase
|
||||
postPatch = ''
|
||||
patchShebangs src/fead.py
|
||||
'';
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
# Already done in postPatch phase
|
||||
dontPatchShebangs = true;
|
||||
|
||||
# The package has no tests.
|
||||
doCheck = false;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Advert generator from web feeds";
|
||||
homepage = "https://git.sr.ht/~cnx/fead";
|
||||
license = licenses.agpl3Plus;
|
||||
changelog = "https://git.sr.ht/~cnx/fead/refs/${version}";
|
||||
maintainers = with maintainers; [ McSinyx ];
|
||||
};
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user