Compare commits

...

9 commits

14 changed files with 6693 additions and 264 deletions

2
.envrc Normal file
View file

@ -0,0 +1,2 @@
use flake
watch_file flake.nix

1
.gitignore vendored
View file

@ -1,6 +1,5 @@
*.swp *.swp
.direnv .direnv
.envrc
Deployments/syncserver.nix Deployments/syncserver.nix
examples examples
result result

6622
flake.lock Normal file

File diff suppressed because it is too large Load diff

15
flake.nix Normal file
View file

@ -0,0 +1,15 @@
{
description = "mio-ops deployment";
inputs = {
cardano-node.url = "github:input-output-hk/cardano-node/?ref=1.35.7";
daedalus.url = "github:input-output-hk/daedalus/?ref=5.2.0";
iohkNix.url = "github:input-output-hk/iohk-nix/?ref=df1da282f996ec46b33379407df99613a1fbafdd";
nix.url = "github:NixOS/nix/?ref=2.13.3";
nixpkgs.url = github:NixOS/nixpkgs/?ref=nixos-23.05;
nixpkgsUnstable.url = github:NixOS/nixpkgs/?ref=nixos-unstable;
utils.url = "github:numtide/flake-utils";
};
outputs = {...} @ args: import ./outputs.nix args;
}

View file

@ -1,95 +0,0 @@
{
"cardano-node": {
"branch": "refs/tags/1.35.7",
"description": "The core component that is used to participate in a Cardano decentralised blockchain.",
"homepage": "https://cardano.org",
"owner": "input-output-hk",
"repo": "cardano-node",
"rev": "f0b4ac897dcbefba9fa0d247b204a24543cf55f6",
"sha256": "0s2jkj4mwl03hxg4ff9kyw41s32xbf31rnhag2m1qrglgsh8wzw9",
"type": "tarball",
"url": "https://github.com/input-output-hk/cardano-node/archive/f0b4ac897dcbefba9fa0d247b204a24543cf55f6.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"daedalus": {
"branch": "release/5.2.0",
"description": "The open source cryptocurrency wallet for ada, built to grow with the community",
"homepage": "https://daedaluswallet.io/",
"owner": "input-output-hk",
"repo": "daedalus",
"rev": "2990f5a44189097b3de2e7e7a19caa8062a8ae7b",
"sha256": "1w2w7qfashbqimcywzvhh0z5jrlfaja04sgi6p5hp08adwad6r92",
"type": "tarball",
"url": "https://github.com/input-output-hk/daedalus/archive/2990f5a44189097b3de2e7e7a19caa8062a8ae7b.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"iohk-nix": {
"branch": "master",
"description": "nix scripts shared across projects",
"homepage": null,
"owner": "input-output-hk",
"repo": "iohk-nix",
"rev": "df1da282f996ec46b33379407df99613a1fbafdd",
"sha256": "0vpcyrswxkynn2q37qsrhvf62whk2ijpcwqnamxcchcq6lwfpn0l",
"type": "tarball",
"url": "https://github.com/input-output-hk/iohk-nix/archive/df1da282f996ec46b33379407df99613a1fbafdd.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"mcwhirter-io": {
"branch": "consensus",
"rev": "a53a2f8a8a23eb0579ba6d0ec1c6e749bfcf8467",
"sha256": "1b72841hbj6wqsb37ma4y148lx287qjmcbr9p1dbzras6k4xvdlz",
"type": "tarball",
"url": "https://source.mcwhirter.io/craige/mcwhirter.io/archive/a53a2f8a8a23eb0579ba6d0ec1c6e749bfcf8467.tar.gz",
"url_template": "https://source.mcwhirter.io/craige/mcwhirter.io/archive/<rev>.tar.gz"
},
"niv": {
"branch": "master",
"description": "Easy dependency management for Nix projects",
"homepage": "https://github.com/nmattia/niv",
"owner": "nmattia",
"repo": "niv",
"rev": "82e5cd1ad3c387863f0545d7591512e76ab0fc41",
"sha256": "090l219mzc0gi33i3psgph6s2pwsc8qy4lyrqjdj4qzkvmaj65a7",
"type": "tarball",
"url": "https://github.com/nmattia/niv/archive/82e5cd1ad3c387863f0545d7591512e76ab0fc41.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixos2111": {
"branch": "nixos-21.11",
"description": "Nix Packages collection",
"homepage": "",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "63198c9ccefdbd337cef0d85db0ea2689f4ce418",
"sha256": "05gc6xyv8a2dppngm1q44j85j769lr90lg20s6jv62gfg344i50r",
"type": "tarball",
"url": "https://github.com/nixos/nixpkgs/archive/63198c9ccefdbd337cef0d85db0ea2689f4ce418.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgs": {
"branch": "nixos-23.05",
"builtin": false,
"description": "A read-only mirror of NixOS/nixpkgs tracking the released channels. Send issues and PRs to",
"homepage": "https://github.com/NixOS/nixpkgs",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "6da4bc6cb07cba1b8e53d139cbf1d2fb8061d967",
"sha256": "0jgcqcbj41g04w4b48c6z4x2mrjx41i36lp6rzh9h4r1cdm74prm",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/6da4bc6cb07cba1b8e53d139cbf1d2fb8061d967.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
"nixpkgsUnstable": {
"branch": "nixos-unstable",
"description": "Nix Packages collection",
"homepage": "",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0",
"sha256": "0f4f9xh4rkgk9in2hzwm371vahppdixbdb73ki1v5dq1r2iv015h",
"type": "tarball",
"url": "https://github.com/nixos/nixpkgs/archive/da45bf6ec7bbcc5d1e14d3795c025199f28e0de0.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
}
}

View file

@ -1,141 +0,0 @@
# This file has been generated by Niv.
let
#
# The fetchers. fetch_<type> fetches specs of type <type>.
#
fetch_file = pkgs: spec:
if spec.builtin or true
then builtins_fetchurl {inherit (spec) url sha256;}
else pkgs.fetchurl {inherit (spec) url sha256;};
fetch_tarball = pkgs: spec:
if spec.builtin or true
then builtins_fetchTarball {inherit (spec) url sha256;}
else pkgs.fetchzip {inherit (spec) url sha256;};
fetch_git = spec:
builtins.fetchGit {
url = spec.repo;
inherit (spec) rev ref;
};
fetch_builtin-tarball = spec:
builtins.trace ''
WARNING:
The niv type "builtin-tarball" will soon be deprecated. You should
instead use `builtin = true`.
$ niv modify <package> -a type=tarball -a builtin=true
''
builtins_fetchTarball {inherit (spec) url sha256;};
fetch_builtin-url = spec:
builtins.trace ''
WARNING:
The niv type "builtin-url" will soon be deprecated. You should
instead use `builtin = true`.
$ niv modify <package> -a type=file -a builtin=true
'' (builtins_fetchurl {inherit (spec) url sha256;});
#
# Various helpers
#
# The set of packages used when specs are fetched using non-builtins.
mkPkgs = sources: let
sourcesNixpkgs =
import (builtins_fetchTarball {inherit (sources.nixpkgs) url sha256;})
{};
hasNixpkgsPath = builtins.any (x: x.prefix == "nixpkgs") builtins.nixPath;
hasThisAsNixpkgsPath = <nixpkgs> == ./.;
in
if builtins.hasAttr "nixpkgs" sources
then sourcesNixpkgs
else if hasNixpkgsPath && !hasThisAsNixpkgsPath
then import <nixpkgs> {}
else
abort ''
Please specify either <nixpkgs> (through -I or NIX_PATH=nixpkgs=...) or
add a package called "nixpkgs" to your sources.json.
'';
# The actual fetching function.
fetch = pkgs: name: spec:
if !builtins.hasAttr "type" spec
then abort "ERROR: niv spec ${name} does not have a 'type' attribute"
else if spec.type == "file"
then fetch_file pkgs spec
else if spec.type == "tarball"
then fetch_tarball pkgs spec
else if spec.type == "git"
then fetch_git spec
else if spec.type == "builtin-tarball"
then fetch_builtin-tarball spec
else if spec.type == "builtin-url"
then fetch_builtin-url spec
else
abort
"ERROR: niv spec ${name} has unknown type ${builtins.toJSON spec.type}";
# Ports of functions for older nix versions
# a Nix version of mapAttrs if the built-in doesn't exist
mapAttrs =
builtins.mapAttrs
or (f: set:
with builtins;
listToAttrs (map (attr: {
name = attr;
value = f attr set.${attr};
}) (attrNames set)));
# fetchTarball version that is compatible between all the versions of Nix
builtins_fetchTarball = {
url,
sha256,
} @ attrs: let
inherit (builtins) lessThan nixVersion fetchTarball;
in
if lessThan nixVersion "1.12"
then fetchTarball {inherit url;}
else fetchTarball attrs;
# fetchurl version that is compatible between all the versions of Nix
builtins_fetchurl = {
url,
sha256,
} @ attrs: let
inherit (builtins) lessThan nixVersion fetchurl;
in
if lessThan nixVersion "1.12"
then fetchurl {inherit url;}
else fetchurl attrs;
# Create the final "sources" from the config
mkSources = config:
mapAttrs (name: spec:
if builtins.hasAttr "outPath" spec
then
abort
"The values in sources.json should not have an 'outPath' attribute"
else spec // {outPath = fetch config.pkgs name spec;})
config.sources;
# The "config" used by the fetchers
mkConfig = {
sourcesFile ? ./sources.json,
sources ? builtins.fromJSON (builtins.readFile sourcesFile),
pkgs ? mkPkgs sources,
}: rec {
# The sources, i.e. the attribute set of spec name to spec
inherit sources;
# The "pkgs" (evaluated nixpkgs) to use for e.g. non-builtin fetchers
inherit pkgs;
};
in
mkSources (mkConfig {})
// {
__functor = _: settings: mkSources (mkConfig settings);
}

21
outputs.nix Normal file
View file

@ -0,0 +1,21 @@
{
self,
daedalus,
nix,
nixpkgs,
nixpkgsUnstable,
utils,
...
} @ inputs:
(utils.lib.eachDefaultSystem (system: let
pkgs = nixpkgs.legacyPackages."${system}";
in {
devShell =
pkgs.callPackage
./shell.nix {
inherit (nix.packages."${pkgs.system}") nix;
inherit (nixpkgsUnstable.legacyPackages."${pkgs.system}") alejandra;
};
}))
// {
}

View file

@ -3,15 +3,15 @@
config, config,
pkgs, pkgs,
lib, lib,
cardano-node,
iohkNix,
... ...
}: let }: let
sources = import ../nix/sources.nix; cardanoNodeProject = import (cardano-node + "/nix") {
cardanoNodeProject = import (sources.cardano-node + "/nix") { gitrev = cardano-node.rev;
gitrev = sources.cardano-node.rev;
}; };
iohkNix = import (sources.iohk-nix) {};
in { in {
imports = [../secrets/cardano/producers.nix "${sources.cardano-node}/nix/nixos"]; imports = [../secrets/cardano/producers.nix "${cardano-node.cardano-node}/nix/nixos"];
environment.systemPackages = [cardanoNodeProject.cardano-cli]; environment.systemPackages = [cardanoNodeProject.cardano-cli];

View file

@ -2,11 +2,11 @@
{ {
config, config,
pkgs, pkgs,
daedalus,
lib, lib,
... ...
}: let }: let
sources = import ../nix/sources.nix; daedalusProject = import daedalus.daedalus {};
daedalusProject = import sources.daedalus {};
daedalusMainnet = daedalusProject.daedalus; daedalusMainnet = daedalusProject.daedalus;
#daedalusFlight = daedalusProject.daedalus {--argstr cluster mainnet_flight -o daedalusFlight}; #daedalusFlight = daedalusProject.daedalus {--argstr cluster mainnet_flight -o daedalusFlight};
in { in {

View file

@ -3,12 +3,10 @@
config, config,
pkgs, pkgs,
lib, lib,
sources, nixpkgsUnstable,
... ...
}: let }:
sources = import ../nix/sources.nix; {
unstable = import sources.nixpkgsUnstable {};
in {
services.gitea = { services.gitea = {
enable = true; # Enable Forgejo enable = true; # Enable Forgejo
appName = "mcwhirter.io: Forgejo Service"; # Give the site a name appName = "mcwhirter.io: Forgejo Service"; # Give the site a name
@ -20,7 +18,7 @@ in {
domain = "source.mcwhirter.io"; # Domain name domain = "source.mcwhirter.io"; # Domain name
rootUrl = "https://source.mcwhirter.io/"; # Root web URL rootUrl = "https://source.mcwhirter.io/"; # Root web URL
httpPort = 3002; # Provided unique port httpPort = 3002; # Provided unique port
package = unstable.forgejo; # a soft fork of gitea package = nixpkgsUnstable.forgejo; # a soft fork of gitea
settings = let settings = let
docutils = pkgs.python39.withPackages (ps: docutils = pkgs.python39.withPackages (ps:
with ps; [ with ps; [

View file

@ -2,11 +2,9 @@
{ {
config, config,
pkgs, pkgs,
nixpkgsUnstable,
... ...
}: let }: {
sources = import ../nix/sources.nix;
unstable = import sources.nixpkgsUnstable {};
in {
imports = [ imports = [
../profiles/minecraftClient.nix # Play Minecraft :-) ../profiles/minecraftClient.nix # Play Minecraft :-)
]; ];
@ -20,7 +18,7 @@ in {
freeciv # Multiplayer (or single player), turn-based strategy game freeciv # Multiplayer (or single player), turn-based strategy game
freedroidrpg # Isometric 3D RPG similar to game Diablo freedroidrpg # Isometric 3D RPG similar to game Diablo
gcompris # Educational software suite, kids aged 2 to 10 gcompris # Educational software suite, kids aged 2 to 10
unstable.grapejuice # Simple Wine+Roblox management tool nixpkgsUnstable.grapejuice # Simple Wine+Roblox management tool
#lincity_ng # City building game #lincity_ng # City building game
meritous # Action-adventure dungeon crawl game meritous # Action-adventure dungeon crawl game
minetest # Infinite-world block sandbox game minetest # Infinite-world block sandbox game

View file

@ -3,15 +3,13 @@
config, config,
pkgs, pkgs,
lib, lib,
nix,
... ...
}: let }: {
sources = import ../nix/sources.nix;
nixVersion = (import sources.nixpkgs {}).nixVersions.nix_2_13;
in {
imports = [../profiles/terminal-recording.nix ../profiles/nix-direnv.nix]; imports = [../profiles/terminal-recording.nix ../profiles/nix-direnv.nix];
nix = { nix = {
package = nixVersion; package = nix;
settings = { settings = {
substituters = [ substituters = [
"https://cache.nixos.org" "https://cache.nixos.org"

View file

@ -4,10 +4,7 @@
pkgs, pkgs,
lib, lib,
... ...
}: let }: {
sources = import ../nix/sources.nix;
nixpkgs2111 = (import sources.nixos2111 {}).pkgs;
in {
imports = [ imports = [
../profiles/openssh.nix ../profiles/openssh.nix
../secrets/user-craige.nix ../secrets/user-craige.nix

15
shell.nix Normal file
View file

@ -0,0 +1,15 @@
{
pkgs ? import <nixpkgs> {},
mkShell,
alejandra,
nix,
}:
with pkgs;
mkShell {
buildInputs = [
alejandra # The Uncompromising Nix Code Formatter
nix # Powerful package manager, makes packaging reliable & reproducible
tea # Gitea official CLI client
treefmt # one CLI to format the code tree
];
}