2020-01-15 00:15:23 -08:00
|
|
|
{ pkgs, lib, config, ... }:
|
|
|
|
let
|
|
|
|
userLib = import ../users/lib.nix { inherit lib; };
|
|
|
|
|
|
|
|
sources = import ../nix/sources.nix;
|
2020-08-07 19:59:15 +02:00
|
|
|
nixpkgs-update = import sources.nixpkgs-update { };
|
2020-04-17 17:34:57 +01:00
|
|
|
|
2020-08-01 09:54:23 -07:00
|
|
|
nixpkgs-update-bin = "${nixpkgs-update}/bin/nixpkgs-update";
|
|
|
|
|
2020-01-15 00:15:23 -08:00
|
|
|
nixpkgsUpdateSystemDependencies = with pkgs; [
|
2020-07-21 06:28:51 -07:00
|
|
|
nix # for nix-shell used by python packges to update fetchers
|
2020-10-11 07:21:54 -07:00
|
|
|
git # used by update-scripts
|
2020-03-29 23:59:38 -07:00
|
|
|
gnugrep
|
2021-08-21 10:25:47 -07:00
|
|
|
gnused
|
2020-02-05 20:33:57 -08:00
|
|
|
curl
|
2020-08-01 09:54:23 -07:00
|
|
|
];
|
2020-01-15 00:15:23 -08:00
|
|
|
|
2020-01-25 15:05:09 -08:00
|
|
|
nixpkgs-update-github-releases = "${sources.nixpkgs-update-github-releases}/main.py";
|
2020-03-29 23:59:38 -07:00
|
|
|
nixpkgs-update-pypi-releases = "${sources.nixpkgs-update-pypi-releases}/main.py";
|
2020-01-25 15:05:09 -08:00
|
|
|
|
2021-08-12 21:43:34 -07:00
|
|
|
mkNixpkgsUpdateService = name: {
|
|
|
|
description = "nixpkgs-update ${name} service";
|
2020-06-13 20:23:50 -07:00
|
|
|
enable = true;
|
2021-08-12 21:43:34 -07:00
|
|
|
startAt = "daily";
|
2020-01-25 18:33:04 -08:00
|
|
|
restartIfChanged = false;
|
2020-01-15 00:15:23 -08:00
|
|
|
path = nixpkgsUpdateSystemDependencies;
|
2021-08-12 21:43:34 -07:00
|
|
|
environment.XDG_CONFIG_HOME = "/var/lib/nixpkgs-update/${name}";
|
|
|
|
environment.XDG_CACHE_HOME = "/var/cache/nixpkgs-update/${name}";
|
|
|
|
environment.XDG_RUNTIME_DIR = "/run/nixpkgs-update/${name}"; # for nix-update update scripts
|
2020-01-25 15:05:09 -08:00
|
|
|
# API_TOKEN is used by nixpkgs-update-github-releases
|
2020-01-25 15:15:27 -08:00
|
|
|
environment.API_TOKEN_FILE = "/var/lib/nixpkgs-update/github_token_with_username.txt";
|
2020-01-25 18:33:04 -08:00
|
|
|
# Used by nixpkgs-update-github-releases to install python dependencies
|
2020-05-03 09:00:11 -07:00
|
|
|
# Used by nixpkgs-update-pypi-releases
|
2021-08-12 21:43:34 -07:00
|
|
|
environment.NIX_PATH = "nixpkgs=/var/cache/nixpkgs-update/${name}/nixpkgs";
|
2020-01-15 00:15:23 -08:00
|
|
|
|
2021-01-03 00:07:49 +01:00
|
|
|
serviceConfig = {
|
2020-10-11 10:07:31 -07:00
|
|
|
Type = "simple";
|
|
|
|
User = "r-ryantm";
|
|
|
|
Group = "r-ryantm";
|
2021-08-12 21:43:34 -07:00
|
|
|
WorkingDirectory = "/var/lib/nixpkgs-update/${name}";
|
|
|
|
StateDirectory = "nixpkgs-update/${name}";
|
2020-10-11 10:07:31 -07:00
|
|
|
StateDirectoryMode = "700";
|
2021-08-12 21:43:34 -07:00
|
|
|
CacheDirectory = "nixpkgs-update/${name}";
|
2020-10-11 10:07:31 -07:00
|
|
|
CacheDirectoryMode = "700";
|
2021-08-12 21:43:34 -07:00
|
|
|
LogsDirectory = "nixpkgs-update/${name}";
|
2020-10-11 10:07:31 -07:00
|
|
|
LogsDirectoryMode = "755";
|
2021-08-12 21:43:34 -07:00
|
|
|
RuntimeDirectory = "nixpkgs-update/${name}";
|
2020-10-24 14:00:47 -07:00
|
|
|
RuntimeDirectoryMode = "700";
|
2020-10-11 10:07:31 -07:00
|
|
|
StandardOutput = "journal";
|
|
|
|
};
|
2021-08-12 21:43:34 -07:00
|
|
|
};
|
|
|
|
|
2021-08-27 13:17:06 -07:00
|
|
|
nixpkgs-update-command = "${nixpkgs-update-bin} update-list --pr --outpaths --nixpkgs-review";
|
|
|
|
|
2021-08-12 21:43:34 -07:00
|
|
|
in
|
|
|
|
{
|
2021-09-25 22:35:51 +02:00
|
|
|
sops.secrets.github-r-ryantm-key = {
|
|
|
|
path = "/home/r-ryantm/.ssh/id_rsa";
|
|
|
|
owner = "r-ryantm";
|
|
|
|
group = "r-ryantm";
|
|
|
|
};
|
|
|
|
|
|
|
|
sops.secrets.github-r-ryantm-token = {
|
|
|
|
path = "/var/lib/nixpkgs-update/github_token.txt";
|
|
|
|
owner = "r-ryantm";
|
|
|
|
group = "r-ryantm";
|
|
|
|
};
|
|
|
|
|
|
|
|
sops.secrets.github-token-with-username = {
|
|
|
|
path = "/var/lib/nixpkgs-update/github_token_with_username.txt";
|
|
|
|
owner = "r-ryantm";
|
|
|
|
group = "r-ryantm";
|
|
|
|
};
|
|
|
|
|
|
|
|
sops.secrets.cachix-dhall = {
|
|
|
|
path = "/var/lib/nixpkgs-update/cachix/cachix.dhall";
|
|
|
|
owner = "r-ryantm";
|
|
|
|
group = "r-ryantm";
|
|
|
|
};
|
2021-08-12 21:43:34 -07:00
|
|
|
|
|
|
|
users.groups.r-ryantm = { };
|
|
|
|
users.users.r-ryantm = {
|
|
|
|
useDefaultShell = true;
|
|
|
|
isNormalUser = true; # The hub cli seems to really want stuff to be set up like a normal user
|
|
|
|
uid = userLib.mkUid "rrtm";
|
|
|
|
extraGroups = [ "r-ryantm" ];
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.services.nixpkgs-update-repology = mkNixpkgsUpdateService "repology" // {
|
2020-10-11 10:07:31 -07:00
|
|
|
script = ''
|
2020-08-01 09:54:23 -07:00
|
|
|
${nixpkgs-update-bin} delete-done --delete
|
2021-08-21 10:25:47 -07:00
|
|
|
${nixpkgs-update-bin} fetch-repology > /var/lib/nixpkgs-update/repology/packages-to-update-regular.txt
|
|
|
|
# reverse list
|
|
|
|
sed '1!G;h;$!d' /var/lib/nixpkgs-update/repology/packages-to-update-regular.txt > /var/lib/nixpkgs-update/repology/packages-to-update.txt
|
2021-08-27 13:17:06 -07:00
|
|
|
${nixpkgs-update-command}
|
2020-01-21 01:55:01 -08:00
|
|
|
'';
|
2020-01-15 00:15:23 -08:00
|
|
|
};
|
|
|
|
|
2021-08-12 21:43:34 -07:00
|
|
|
systemd.services.nixpkgs-update-github = mkNixpkgsUpdateService "github" // {
|
|
|
|
script = ''
|
|
|
|
${nixpkgs-update-bin} delete-done --delete
|
|
|
|
${nixpkgs-update-github-releases} > /var/lib/nixpkgs-update/github/packages-to-update.txt
|
2021-08-27 13:17:06 -07:00
|
|
|
${nixpkgs-update-command}
|
2021-08-12 21:43:34 -07:00
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.services.nixpkgs-update-pypi = mkNixpkgsUpdateService "pypi" // {
|
|
|
|
script = ''
|
|
|
|
${nixpkgs-update-bin} delete-done --delete
|
|
|
|
grep -rl $XDG_CACHE_HOME/nixpkgs -e buildPython | grep default | \
|
|
|
|
${nixpkgs-update-pypi-releases} --nixpkgs=/var/cache/nixpkgs-update/pypi/nixpkgs > /var/lib/nixpkgs-update/pypi/packages-to-update.txt
|
2021-08-27 13:17:06 -07:00
|
|
|
${nixpkgs-update-command}
|
|
|
|
'';
|
|
|
|
};
|
|
|
|
|
|
|
|
systemd.services.nixpkgs-update-updatescript = mkNixpkgsUpdateService "updatescript" // {
|
|
|
|
script = ''
|
|
|
|
${pkgs.nixUnstable}/bin/nix eval --raw -f ${./packages-with-update-script.nix} > /var/lib/nixpkgs-update/updatescript/packages-to-update.txt
|
|
|
|
${nixpkgs-update-bin} update-list --pr --outpaths --nixpkgs-review --attrpath
|
|
|
|
${nixpkgs-update-bin} delete-done --delete
|
2021-08-12 21:43:34 -07:00
|
|
|
'';
|
2020-01-15 00:15:23 -08:00
|
|
|
};
|
|
|
|
|
2021-09-22 21:21:09 -07:00
|
|
|
systemd.tmpfiles.rules = [
|
|
|
|
"e /var/cache/nixpkgs-update/repology/nixpkgs-review - - - 1d -"
|
|
|
|
"e /var/cache/nixpkgs-update/github/nixpkgs-review - - - 1d -"
|
|
|
|
"e /var/cache/nixpkgs-update/pypi/nixpkgs-review - - - 1d -"
|
|
|
|
"e /var/cache/nixpkgs-update/updatescript/nixpkgs-review - - - 1d -"
|
|
|
|
];
|
|
|
|
|
2020-03-21 19:05:01 -07:00
|
|
|
services.nginx.virtualHosts."r.ryantm.com" = {
|
|
|
|
forceSSL = true;
|
|
|
|
enableACME = true;
|
|
|
|
locations."/log/" = {
|
|
|
|
alias = "/var/log/nixpkgs-update/";
|
2020-07-03 20:26:52 -07:00
|
|
|
extraConfig = ''
|
|
|
|
charset utf-8;
|
|
|
|
autoindex on;
|
|
|
|
'';
|
2020-03-21 19:05:01 -07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2020-01-15 00:15:23 -08:00
|
|
|
}
|