Compare commits
20 Commits
Author | SHA1 | Date | |
---|---|---|---|
31f2f445f3 | |||
bce1f0e912 | |||
1caa0cc7be | |||
752141f97f | |||
23c1c17607 | |||
9560eab82b | |||
5e4ededab3
|
|||
7fb3e29d7b
|
|||
9053dda57c
|
|||
4ab133e541 | |||
e5b38cd2c1 | |||
3e156a8649 | |||
b40cde891e | |||
dca6862045 | |||
4e44da29b5 | |||
ca9ac0e0fc | |||
c8d29c363f | |||
e387656be8 | |||
48a5f4e79e
|
|||
29c4029486
|
25
.mailmap
Normal file
25
.mailmap
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
Daniel Løvbrøtte Olsen <danio@pvv.ntnu.no> <daniel.olsen99@gmail.com>
|
||||||
|
Daniel Løvbrøtte Olsen <danio@pvv.ntnu.no> Daniel <danio@pvv.ntnu.no>
|
||||||
|
Daniel Løvbrøtte Olsen <danio@pvv.ntnu.no> Daniel Lovbrotte Olsen <danio@pvv.ntnu.no>
|
||||||
|
Daniel Løvbrøtte Olsen <danio@pvv.ntnu.no> Daniel Olsen <danio@pvv.ntnu.no>
|
||||||
|
Daniel Løvbrøtte Olsen <danio@pvv.ntnu.no> danio <danio@pvv.ntnu.no>
|
||||||
|
Daniel Løvbrøtte Olsen <danio@pvv.ntnu.no> Daniel Olsen <danio@bicep.pvv.ntnu.no>
|
||||||
|
|
||||||
|
|
||||||
|
Øystein Kristoffer Tveit <oysteikt@pvv.ntnu.no> h7x4 <h7x4@nani.wtf>
|
||||||
|
Øystein Kristoffer Tveit <oysteikt@pvv.ntnu.no> Øystein Tveit <oysteikt@pvv.ntnu.no>
|
||||||
|
Øystein Kristoffer Tveit <oysteikt@pvv.ntnu.no> oysteikt <oysteikt@pvv.ntnu.no>
|
||||||
|
Øystein Kristoffer Tveit <oysteikt@pvv.ntnu.no> Øystein <oysteikt@pvv.org>
|
||||||
|
Øystein Kristoffer Tveit <oysteikt@pvv.ntnu.no> Oystein Kristoffer Tveit <oysteikt@pvv.ntnu.no>
|
||||||
|
|
||||||
|
Felix Albrigtsen <felixalb@pvv.ntnu.no> <felix@albrigtsen.it>
|
||||||
|
Felix Albrigtsen <felixalb@pvv.ntnu.no> <felixalbrigtsen@gmail.com>
|
||||||
|
Felix Albrigtsen <felixalb@pvv.ntnu.no> felixalb <felixalb@pvv.ntnu.no>
|
||||||
|
|
||||||
|
Peder Bergebakken Sundt <pederbs@pvv.ntnu.no> <pbsds@hotmail.com>
|
||||||
|
|
||||||
|
Adrian Gunnar Lauterer <adriangl@pvv.ntnu.no> Adrian G L <adrian@lauterer.it>
|
||||||
|
Adrian Gunnar Lauterer <adriangl@pvv.ntnu.no> Adrian Gunnar Lauterer <adrian@lauterer.it>
|
||||||
|
|
||||||
|
Fredrik Robertsen <frero@pvv.ntnu.no> frero <frero@pvv.ntnu.no>
|
||||||
|
Fredrik Robertsen <frero@pvv.ntnu.no> fredrikr79 <fredrikrobertsen7@gmail.com>
|
@@ -7,8 +7,10 @@
|
|||||||
|
|
||||||
./networking.nix
|
./networking.nix
|
||||||
./nix.nix
|
./nix.nix
|
||||||
|
./vm.nix
|
||||||
|
|
||||||
./services/acme.nix
|
./services/acme.nix
|
||||||
|
./services/uptimed.nix
|
||||||
./services/auto-upgrade.nix
|
./services/auto-upgrade.nix
|
||||||
./services/dbus.nix
|
./services/dbus.nix
|
||||||
./services/fwupd.nix
|
./services/fwupd.nix
|
||||||
@@ -76,4 +78,3 @@
|
|||||||
# Trusted users on the nix builder machines
|
# Trusted users on the nix builder machines
|
||||||
users.groups."nix-builder-users".name = "nix-builder-users";
|
users.groups."nix-builder-users".name = "nix-builder-users";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,16 +1,27 @@
|
|||||||
{ inputs, pkgs, lib, ... }:
|
{ inputs, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
inputUrls = lib.mapAttrs (input: value: value.url) (import "${inputs.self}/flake.nix").inputs;
|
||||||
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
system.autoUpgrade = {
|
system.autoUpgrade = {
|
||||||
enable = true;
|
enable = true;
|
||||||
flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git";
|
flake = "git+https://git.pvv.ntnu.no/Drift/pvv-nixos-config.git";
|
||||||
flags = [
|
flags = [
|
||||||
# --update-input is deprecated since nix 2.22, and removed in lix 2.90
|
|
||||||
# https://git.lix.systems/lix-project/lix/issues/400
|
|
||||||
"--refresh"
|
"--refresh"
|
||||||
"--override-input" "nixpkgs" "github:nixos/nixpkgs/nixos-25.05-small"
|
|
||||||
"--override-input" "nixpkgs-unstable" "github:nixos/nixpkgs/nixos-unstable-small"
|
|
||||||
"--no-write-lock-file"
|
"--no-write-lock-file"
|
||||||
];
|
# --update-input is deprecated since nix 2.22, and removed in lix 2.90
|
||||||
|
# as such we instead use --override-input combined with --refresh
|
||||||
|
# https://git.lix.systems/lix-project/lix/issues/400
|
||||||
|
] ++ (lib.pipe inputUrls [
|
||||||
|
(lib.intersectAttrs {
|
||||||
|
nixpkgs = { };
|
||||||
|
nixpkgs-unstable = { };
|
||||||
|
})
|
||||||
|
(lib.mapAttrsToList (input: url: ["--override-input" input url]))
|
||||||
|
lib.concatLists
|
||||||
|
]);
|
||||||
};
|
};
|
||||||
|
|
||||||
# workaround for https://github.com/NixOS/nix/issues/6895
|
# workaround for https://github.com/NixOS/nix/issues/6895
|
||||||
|
59
base/services/uptimed.nix
Normal file
59
base/services/uptimed.nix
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.services.uptimed;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.uptimed.settings = lib.mkOption {
|
||||||
|
description = "";
|
||||||
|
default = { };
|
||||||
|
type = lib.types.submodule {
|
||||||
|
freeformType = with lib.types; attrsOf (either str (listOf str));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
services.uptimed = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = let
|
||||||
|
stateDir = "/var/lib/uptimed";
|
||||||
|
in {
|
||||||
|
PIDFILE = "${stateDir}/pid";
|
||||||
|
SENDMAIL = lib.mkDefault "${pkgs.system-sendmail}/bin/sendmail -t";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.uptimed = lib.mkIf (cfg.enable) {
|
||||||
|
serviceConfig = let
|
||||||
|
uptimed = pkgs.uptimed.overrideAttrs (prev: {
|
||||||
|
postPatch = ''
|
||||||
|
substituteInPlace Makefile.am \
|
||||||
|
--replace-fail '$(sysconfdir)/uptimed.conf' '/var/lib/uptimed/uptimed.conf'
|
||||||
|
substituteInPlace src/Makefile.am \
|
||||||
|
--replace-fail '$(sysconfdir)/uptimed.conf' '/var/lib/uptimed/uptimed.conf'
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
in {
|
||||||
|
Type = "notify";
|
||||||
|
|
||||||
|
ExecStart = lib.mkForce "${uptimed}/sbin/uptimed -f";
|
||||||
|
|
||||||
|
BindReadOnlyPaths = let
|
||||||
|
configFile = lib.pipe cfg.settings [
|
||||||
|
(lib.mapAttrsToList
|
||||||
|
(k: v:
|
||||||
|
if builtins.isList v
|
||||||
|
then lib.mapConcatStringsSep "\n" (v': "${k}=${v'}") v
|
||||||
|
else "${k}=${v}")
|
||||||
|
)
|
||||||
|
(lib.concatStringsSep "\n")
|
||||||
|
(pkgs.writeText "uptimed.conf")
|
||||||
|
];
|
||||||
|
in [
|
||||||
|
"${configFile}:/var/lib/uptimed/uptimed.conf"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
15
base/vm.nix
Normal file
15
base/vm.nix
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{ lib, ... }:
|
||||||
|
|
||||||
|
# This enables
|
||||||
|
# lib.mkIf (!config.virtualisation.isVmVariant) { ... }
|
||||||
|
|
||||||
|
{
|
||||||
|
options.virtualisation.isVmVariant = lib.mkOption {
|
||||||
|
description = "`true` if system is build with 'nixos-rebuild build-vm'";
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
};
|
||||||
|
config.virtualisation.vmVariant = {
|
||||||
|
virtualisation.isVmVariant = true;
|
||||||
|
};
|
||||||
|
}
|
62
flake.lock
generated
62
flake.lock
generated
@@ -7,11 +7,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747742835,
|
"lastModified": 1745502102,
|
||||||
"narHash": "sha256-kYL4GCwwznsypvsnA20oyvW8zB/Dvn6K5G/tgMjVMT4=",
|
"narHash": "sha256-LqhRwzvIVPEjH0TaPgwzqpyhW6DtCrvz7FnUJDoUZh8=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "disko",
|
"repo": "disko",
|
||||||
"rev": "df522e787fdffc4f32ed3e1fca9ed0968a384d62",
|
"rev": "ca27b88c88948d96feeee9ed814cbd34f53d0d70",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
@@ -139,34 +139,28 @@
|
|||||||
},
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748085680,
|
"lastModified": 1748615477,
|
||||||
"narHash": "sha256-XG90Q/040NiV70gAVvoYbXg1lULbiwIzfkWmwSINyGQ=",
|
"narHash": "sha256-8sjG4sNIonQPK2olCGvq3/j1qtjwPaTOFU5nkz1gj2Q=",
|
||||||
"owner": "NixOS",
|
"rev": "97d3ce1ceb663a24184aac92b7e9e8f5452111c1",
|
||||||
"repo": "nixpkgs",
|
"type": "tarball",
|
||||||
"rev": "4e6eeca5ed45465087274fc9dc6bc2011254a0f3",
|
"url": "https://releases.nixos.org/nixos/24.11-small/nixos-24.11.718472.97d3ce1ceb66/nixexprs.tar.xz?rev=97d3ce1ceb663a24184aac92b7e9e8f5452111c1"
|
||||||
"type": "github"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"type": "tarball",
|
||||||
"ref": "nixos-25.05-small",
|
"url": "https://nixos.org/channels/nixos-24.11-small/nixexprs.tar.xz"
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1748074755,
|
"lastModified": 1748588304,
|
||||||
"narHash": "sha256-b3SC3Q3cXr4tdCN3WVTFqMP8I9OwaXXcj1aVoSVaygw=",
|
"narHash": "sha256-YCnUqO9k39p0oMIBndxYTbu8m0fOA/KVcq3IekXPy9c=",
|
||||||
"owner": "NixOS",
|
"rev": "b8af95f4cf511c5f056b463c3a45d2b63c7cfb03",
|
||||||
"repo": "nixpkgs",
|
"type": "tarball",
|
||||||
"rev": "c3ee76c437067f1ae09d6e530df46a3f80977992",
|
"url": "https://releases.nixos.org/nixos/unstable-small/nixos-25.11pre807945.b8af95f4cf51/nixexprs.tar.xz?rev=b8af95f4cf511c5f056b463c3a45d2b63c7cfb03"
|
||||||
"type": "github"
|
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "NixOS",
|
"type": "tarball",
|
||||||
"ref": "nixos-unstable-small",
|
"url": "https://nixos.org/channels/nixos-unstable-small/nixexprs.tar.xz"
|
||||||
"repo": "nixpkgs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"pvv-calendar-bot": {
|
"pvv-calendar-bot": {
|
||||||
@@ -176,11 +170,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1742225512,
|
"lastModified": 1723850344,
|
||||||
"narHash": "sha256-OB0ndlrGLE5wMUeYP4lmxly9JUEpPCeZRQyMzITKCB0=",
|
"narHash": "sha256-aT37O9l9eclWEnqxASVNBL1dKwDHZUOqdbA4VO9DJvw=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "c4a6a02c84d8227abf00305dc995d7242176e6f6",
|
"rev": "38b66677ab8c01aee10cd59e745af9ce3ea88092",
|
||||||
"revCount": 21,
|
"revCount": 19,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/calendar-bot.git"
|
"url": "https://git.pvv.ntnu.no/Projects/calendar-bot.git"
|
||||||
},
|
},
|
||||||
@@ -196,11 +190,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1742344479,
|
"lastModified": 1741738148,
|
||||||
"narHash": "sha256-9vzkDdcJPkZIHJ+fQZjC6MepicBQiMzldNhjBR58qWY=",
|
"narHash": "sha256-cJo6nbcJEOjkazkZ194NDnlsZe0W0wpxeUh2/886uC8=",
|
||||||
"ref": "refs/heads/main",
|
"ref": "refs/heads/main",
|
||||||
"rev": "20bab54235488b66f30acceece4f7721f280ef85",
|
"rev": "c1802e7cf27c7cf8b4890354c982a4eef5b11593",
|
||||||
"revCount": 493,
|
"revCount": 486,
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://git.pvv.ntnu.no/Projects/nettsiden.git"
|
"url": "https://git.pvv.ntnu.no/Projects/nettsiden.git"
|
||||||
},
|
},
|
||||||
@@ -253,11 +247,11 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1747603214,
|
"lastModified": 1745310711,
|
||||||
"narHash": "sha256-lAblXm0VwifYCJ/ILPXJwlz0qNY07DDYdLD+9H+Wc8o=",
|
"narHash": "sha256-ePyTpKEJTgX0gvgNQWd7tQYQ3glIkbqcW778RpHlqgA=",
|
||||||
"owner": "Mic92",
|
"owner": "Mic92",
|
||||||
"repo": "sops-nix",
|
"repo": "sops-nix",
|
||||||
"rev": "8d215e1c981be3aa37e47aeabd4e61bb069548fd",
|
"rev": "5e3e92b16d6fdf9923425a8d4df7496b2434f39c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
10
flake.nix
10
flake.nix
@@ -2,8 +2,8 @@
|
|||||||
description = "PVV System flake";
|
description = "PVV System flake";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05-small"; # remember to also update the url in base/services/auto-upgrade.nix
|
nixpkgs.url = "https://nixos.org/channels/nixos-24.11-small/nixexprs.tar.xz";
|
||||||
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixos-unstable-small";
|
nixpkgs-unstable.url = "https://nixos.org/channels/nixos-unstable-small/nixexprs.tar.xz";
|
||||||
|
|
||||||
sops-nix.url = "github:Mic92/sops-nix";
|
sops-nix.url = "github:Mic92/sops-nix";
|
||||||
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
sops-nix.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
@@ -111,6 +111,12 @@
|
|||||||
inputs.pvv-nettsiden.nixosModules.default
|
inputs.pvv-nettsiden.nixosModules.default
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
bob = stableNixosConfig "bob" {
|
||||||
|
modules = [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
{ disko.devices.disk.disk1.device = "/dev/vda"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
ildkule = stableNixosConfig "ildkule" { };
|
ildkule = stableNixosConfig "ildkule" { };
|
||||||
#ildkule-unstable = unstableNixosConfig "ildkule" { };
|
#ildkule-unstable = unstableNixosConfig "ildkule" { };
|
||||||
shark = stableNixosConfig "shark" { };
|
shark = stableNixosConfig "shark" { };
|
||||||
|
@@ -17,7 +17,7 @@ in
|
|||||||
zip = false;
|
zip = false;
|
||||||
keep = 10;
|
keep = 10;
|
||||||
bare = true;
|
bare = true;
|
||||||
lfs = true;
|
lfs = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
instances = let
|
instances = let
|
||||||
@@ -59,7 +59,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
services.cgit = let
|
services.cgit = let
|
||||||
domain = "bicep.pvv.ntnu.no";
|
domain = "mirrors.pvv.ntnu.no";
|
||||||
in {
|
in {
|
||||||
${domain} = {
|
${domain} = {
|
||||||
enable = true;
|
enable = true;
|
||||||
@@ -81,7 +81,7 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.nginx.virtualHosts."bicep.pvv.ntnu.no" = {
|
services.nginx.virtualHosts."mirrors.pvv.ntnu.no" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ in
|
|||||||
in toString small-pvv-logo;
|
in toString small-pvv-logo;
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services."fcgiwrap-cgit-bicep.pvv.ntnu.no" = {
|
systemd.services."fcgiwrap-cgit-mirrors.pvv.ntnu.no" = {
|
||||||
serviceConfig.BindReadOnlyPaths = [ cfg.dataDir ];
|
serviceConfig.BindReadOnlyPaths = [ cfg.dataDir ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
46
hosts/bob/configuration.nix
Normal file
46
hosts/bob/configuration.nix
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
{ config, fp, pkgs, values, ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
(fp /base)
|
||||||
|
(fp /misc/metrics-exporters.nix)
|
||||||
|
./disks.nix
|
||||||
|
|
||||||
|
(fp /misc/builder.nix)
|
||||||
|
];
|
||||||
|
|
||||||
|
sops.defaultSopsFile = fp /secrets/bob/bob.yaml;
|
||||||
|
sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ];
|
||||||
|
sops.age.keyFile = "/var/lib/sops-nix/key.txt";
|
||||||
|
sops.age.generateKey = true;
|
||||||
|
|
||||||
|
boot.loader.grub = {
|
||||||
|
enable = true;
|
||||||
|
efiSupport = true;
|
||||||
|
efiInstallAsRemovable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.hostName = "bob"; # Define your hostname.
|
||||||
|
|
||||||
|
systemd.network.networks."30-all" = values.defaultNetworkConfig // {
|
||||||
|
matchConfig.Name = "en*";
|
||||||
|
DHCP = "yes";
|
||||||
|
gateway = [ ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# List packages installed in system profile
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
];
|
||||||
|
|
||||||
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
# This value determines the NixOS release from which the default
|
||||||
|
# settings for stateful data, like file locations and database versions
|
||||||
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
# this value at the release version of the first install of this system.
|
||||||
|
# Before changing this value read the documentation for this option
|
||||||
|
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||||
|
system.stateVersion = "23.05"; # Did you read the comment?
|
||||||
|
|
||||||
|
}
|
39
hosts/bob/disks.nix
Normal file
39
hosts/bob/disks.nix
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Example to create a bios compatible gpt partition
|
||||||
|
{ lib, ... }:
|
||||||
|
{
|
||||||
|
disko.devices = {
|
||||||
|
disk.disk1 = {
|
||||||
|
device = lib.mkDefault "/dev/sda";
|
||||||
|
type = "disk";
|
||||||
|
content = {
|
||||||
|
type = "gpt";
|
||||||
|
partitions = {
|
||||||
|
boot = {
|
||||||
|
name = "boot";
|
||||||
|
size = "1M";
|
||||||
|
type = "EF02";
|
||||||
|
};
|
||||||
|
esp = {
|
||||||
|
name = "ESP";
|
||||||
|
size = "500M";
|
||||||
|
type = "EF00";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "vfat";
|
||||||
|
mountpoint = "/boot";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
root = {
|
||||||
|
name = "root";
|
||||||
|
size = "100%";
|
||||||
|
content = {
|
||||||
|
type = "filesystem";
|
||||||
|
format = "ext4";
|
||||||
|
mountpoint = "/";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
24
hosts/bob/hardware-configuration.nix
Normal file
24
hosts/bob/hardware-configuration.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||||
|
# and may be overwritten by future invocations. Please make changes
|
||||||
|
# to /etc/nixos/configuration.nix instead.
|
||||||
|
{ config, lib, pkgs, modulesPath, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports =
|
||||||
|
[ (modulesPath + "/profiles/qemu-guest.nix")
|
||||||
|
];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_blk" ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||||
|
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||||
|
# still possible to use this option, but it's recommended to use it in conjunction
|
||||||
|
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||||
|
networking.useDHCP = lib.mkDefault true;
|
||||||
|
# networking.interfaces.ens3.useDHCP = lib.mkDefault true;
|
||||||
|
|
||||||
|
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||||
|
}
|
@@ -8,7 +8,7 @@
|
|||||||
|
|
||||||
(fp /modules/grzegorz.nix)
|
(fp /modules/grzegorz.nix)
|
||||||
];
|
];
|
||||||
|
services.spotifyd.enable = true;
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
boot.loader.efi.canTouchEfiVariables = true;
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
@@ -25,26 +25,6 @@
|
|||||||
|
|
||||||
# List services that you want to enable:
|
# List services that you want to enable:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
services.spotifyd = {
|
|
||||||
enable = true;
|
|
||||||
settings.global = {
|
|
||||||
device_name = "georg";
|
|
||||||
use_mpris = false;
|
|
||||||
#dbus_type = "system";
|
|
||||||
#zeroconf_port = 1234;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [
|
|
||||||
# config.services.spotifyd.settings.zeroconf_port
|
|
||||||
5353 # spotifyd is its own mDNS service wtf
|
|
||||||
];
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
# This value determines the NixOS release from which the default
|
||||||
# settings for stateful data, like file locations and database versions
|
# settings for stateful data, like file locations and database versions
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||||
|
@@ -3,7 +3,12 @@ let
|
|||||||
cfg = config.services.gitea;
|
cfg = config.services.gitea;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
services.gitea-themes.monokai = pkgs.gitea-theme-monokai;
|
services.gitea-themes = {
|
||||||
|
monokai = pkgs.gitea-theme-monokai;
|
||||||
|
earl-grey = pkgs.gitea-theme-earl-grey;
|
||||||
|
pitch-black = pkgs.gitea-theme-pitch-black;
|
||||||
|
catppuccin = pkgs.gitea-theme-catppuccin;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.gitea-customization = lib.mkIf cfg.enable {
|
systemd.services.gitea-customization = lib.mkIf cfg.enable {
|
||||||
description = "Install extra customization in gitea's CUSTOM_DIR";
|
description = "Install extra customization in gitea's CUSTOM_DIR";
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
{ config, values, lib, pkgs, ... }:
|
{ config, values, lib, unstablePkgs, ... }:
|
||||||
let
|
let
|
||||||
cfg = config.services.gitea;
|
cfg = config.services.gitea;
|
||||||
domain = "git.pvv.ntnu.no";
|
domain = "git.pvv.ntnu.no";
|
||||||
@@ -26,7 +26,7 @@ in {
|
|||||||
enable = true;
|
enable = true;
|
||||||
appName = "PVV Git";
|
appName = "PVV Git";
|
||||||
|
|
||||||
package = pkgs.gitea;
|
package = unstablePkgs.gitea;
|
||||||
|
|
||||||
database = {
|
database = {
|
||||||
type = "postgres";
|
type = "postgres";
|
||||||
|
57
justfile
57
justfile
@@ -1,25 +1,56 @@
|
|||||||
|
set positional-arguments # makes variables accesible as $1 $2 $@
|
||||||
export GUM_FILTER_HEIGHT := "15"
|
export GUM_FILTER_HEIGHT := "15"
|
||||||
nom := `if command -v nom >/dev/null; then echo nom; else echo nix; fi`
|
nom := `if [[ -t 2 ]] && command -v nom >/dev/null; then echo nom; else echo nix; fi`
|
||||||
|
nix_eval_opts := "--log-format raw --option warn-dirty false"
|
||||||
|
|
||||||
@_default:
|
@_default:
|
||||||
just "$(gum choose --ordered --header "Pick a recipie..." $(just --summary --unsorted))"
|
just "$(gum choose --ordered --header "Pick a recipie..." $(just --summary --unsorted))"
|
||||||
|
|
||||||
check:
|
check *_:
|
||||||
nix flake check --keep-going
|
nix flake check --keep-going "$@"
|
||||||
|
|
||||||
build-machine machine=`just _a_machine`:
|
build-machine machine=`just _a_machine` *_:
|
||||||
{{nom}} build .#nixosConfigurations.{{ machine }}.config.system.build.toplevel
|
{{nom}} build .#nixosConfigurations.{{ machine }}.config.system.build.toplevel "${@:2}"
|
||||||
|
|
||||||
run-vm machine=`just _a_machine`:
|
run-vm machine=`just _a_machine` *_:
|
||||||
nixos-rebuild build-vm --flake .#{{ machine }}
|
nixos-rebuild build-vm --flake .#{{ machine }} "${@:2}"
|
||||||
QEMU_NET_OPTS="hostfwd=tcp::8080-:80,hostfwd=tcp::8081-:443,hostfwd=tcp::2222-:22" ./result/bin/run-*-vm
|
QEMU_NET_OPTS="hostfwd=tcp::8080-:80,hostfwd=tcp::8081-:443,hostfwd=tcp::2222-:22" ./result/bin/run-*-vm
|
||||||
|
|
||||||
@update-inputs:
|
@update-inputs *_:
|
||||||
nix eval .#inputs --apply builtins.attrNames --json \
|
@git reset flake.lock
|
||||||
| jq '.[]' -r \
|
@git restore flake.lock
|
||||||
| gum choose --no-limit --height=15 \
|
nix eval {{nix_eval_opts}} --file flake.nix --apply 'x: builtins.attrNames x.inputs' --json \
|
||||||
| xargs -L 1 nix flake lock --update-input
|
| { printf "%s\n" --commit-lock-file; jq '.[]' -r | grep -vxF "self" ||:; } \
|
||||||
|
| gum choose --no-limit --header "Choose extra arguments:" \
|
||||||
|
| tee >(xargs -d'\n' echo + nix flake update "$@" >&2) \
|
||||||
|
| xargs -d'\n' nix flake update "$@"
|
||||||
|
|
||||||
|
@repl $machine=`just _a_machine` *_:
|
||||||
|
set -v; NIX_NO_NOM=1 nixos-rebuild --flake .#"$machine" repl "${@:2}"
|
||||||
|
|
||||||
|
@eval $machine=`just _a_machine` $attrpath="system.build.toplevel.outPath" *_:
|
||||||
|
set -v; nix eval {{nix_eval_opts}} ".#nixosConfigurations.\"$machine\".config.$attrpath" --show-trace "${@:3}"
|
||||||
|
|
||||||
|
@eval-vm $machine=`just _a_machine` $attrpath="system.build.toplevel.outPath" *_:
|
||||||
|
just eval "$machine" "virtualisation.vmVariant.$attrpath" "${@:3}"
|
||||||
|
|
||||||
|
|
||||||
|
# helpers
|
||||||
|
|
||||||
|
[no-exit-message]
|
||||||
_a_machine:
|
_a_machine:
|
||||||
nix eval .#nixosConfigurations --apply builtins.attrNames --json | jq .[] -r | gum filter
|
#!/usr/bin/env -S sh -euo pipefail
|
||||||
|
machines="$(
|
||||||
|
nix eval {{nix_eval_opts}} .#nixosConfigurations --apply builtins.attrNames --json | jq .[] -r
|
||||||
|
)"
|
||||||
|
[ -n "$machines" ] || { echo >&2 "ERROR: no machines found"; false; }
|
||||||
|
if [ -s .direnv/vars/last-machine.txt ]; then
|
||||||
|
machines="$(
|
||||||
|
grep <<<"$machines" -xF "$(cat .direnv/vars/last-machine.txt)" ||:
|
||||||
|
grep <<<"$machines" -xFv "$(cat .direnv/vars/last-machine.txt)" ||:
|
||||||
|
)"
|
||||||
|
fi
|
||||||
|
choice="$(gum filter <<<"$machines")"
|
||||||
|
mkdir -p .direnv/vars
|
||||||
|
cat <<<"$choice" >.direnv/vars/last-machine.txt
|
||||||
|
cat <<<"$choice"
|
||||||
|
12
shell.nix
12
shell.nix
@@ -1,6 +1,18 @@
|
|||||||
{ pkgs ? import <nixpkgs> {} }:
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
|
||||||
|
let
|
||||||
|
nixos-rebuild-nom = pkgs.writeScriptBin "nixos-rebuild" ''
|
||||||
|
if [[ -t 1 && -z "''${NIX_NO_NOM-}" ]]; then
|
||||||
|
exec ${pkgs.lib.getExe pkgs.nixos-rebuild} -L "$@" |& ${pkgs.lib.getExe pkgs.nix-output-monitor}
|
||||||
|
else
|
||||||
|
exec ${pkgs.lib.getExe pkgs.nixos-rebuild} -L "$@"
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
pkgs.mkShellNoCC {
|
pkgs.mkShellNoCC {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
|
nixos-rebuild-nom
|
||||||
just
|
just
|
||||||
jq
|
jq
|
||||||
gum
|
gum
|
||||||
|
@@ -41,6 +41,10 @@ in rec {
|
|||||||
ipv4 = pvv-ipv4 209;
|
ipv4 = pvv-ipv4 209;
|
||||||
ipv6 = pvv-ipv6 209;
|
ipv6 = pvv-ipv6 209;
|
||||||
};
|
};
|
||||||
|
bob = {
|
||||||
|
ipv4 = "129.241.152.254";
|
||||||
|
# ipv6 = ;
|
||||||
|
};
|
||||||
knutsen = {
|
knutsen = {
|
||||||
ipv4 = pvv-ipv4 191;
|
ipv4 = pvv-ipv4 191;
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user