Compare commits
5 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| bc66ec89c6 | |||
| 395e13acd2 | |||
| b6a85631f3 | |||
| f82d084030 | |||
| 3674a0e6c4 |
@@ -0,0 +1,62 @@
|
|||||||
|
{ self, inputs, ... }: {
|
||||||
|
flake.modules.nixos.forgejo = {config, pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.forgejo;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.forgejo = {
|
||||||
|
enable = lib.mkEnableOption "Enable Forgejo backed with PostgreSQL";
|
||||||
|
|
||||||
|
port = lib.mkOption {
|
||||||
|
type = lib.types.port;
|
||||||
|
default = 3000;
|
||||||
|
description = "TCP port for the Forgejo web interface.";
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Open the Forgejo web interface port in the firewall.";
|
||||||
|
};
|
||||||
|
|
||||||
|
https = lib.mkEnableOption "Open the Forgejo web interface port in the firewall.";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
networking.firewall.allowedTCPPorts = lib.optionals cfg.openFirewall [ cfg.port ];
|
||||||
|
|
||||||
|
services.forgejo = {
|
||||||
|
enable = true;
|
||||||
|
lfs.enable = true;
|
||||||
|
settings.server = lib.mkMerge [
|
||||||
|
{
|
||||||
|
HTTP_PORT = cfg.port;
|
||||||
|
DISABLE_SSH = true;
|
||||||
|
}
|
||||||
|
(lib.mkIf cfg.https {
|
||||||
|
ROOT_URL = "https://forgejo.john-stream.com";
|
||||||
|
PROTOCOL = "https";
|
||||||
|
COOKIE_SECURE = true;
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
database = {
|
||||||
|
type = "postgres";
|
||||||
|
port = config.services.postgresql.settings.port;
|
||||||
|
# createDatabase = false;
|
||||||
|
};
|
||||||
|
# dump = {
|
||||||
|
# enable = true;
|
||||||
|
# interval = "12h";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
|
||||||
|
services.postgresql = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
# https://github.com/glabrie/dotfiles/blob/main/modules/system/settings/greetd.nix
|
# https://github.com/glabrie/dotfiles/blob/main/modules/system/settings/greetd.nix
|
||||||
{ inputs, ... }: {
|
{ inputs, ... }: {
|
||||||
flake.module.nixos.greetd = { pkgs, lib, ... }: {
|
flake.modules.nixos.greetd = { pkgs, lib, ... }: {
|
||||||
services.greetd = {
|
services.greetd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ in
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
environment.systemPackages = with pkgs; lib.optionals cfg.enable [
|
environment.systemPackages = with pkgs; lib.optionals cfg.enable [
|
||||||
step-cli
|
# step-cli
|
||||||
(mkMtlsGenerateScript {
|
(mkMtlsGenerateScript {
|
||||||
inherit (cfg) subject provisioner san lifetime;
|
inherit (cfg) subject provisioner san lifetime;
|
||||||
inherit pkgs tlsCert tlsKey mtlsBundle;
|
inherit pkgs tlsCert tlsKey mtlsBundle;
|
||||||
@@ -308,7 +308,7 @@ in
|
|||||||
|
|
||||||
config = {
|
config = {
|
||||||
home.packages = with pkgs; lib.optionals cfg.enable [
|
home.packages = with pkgs; lib.optionals cfg.enable [
|
||||||
step-cli
|
# step-cli
|
||||||
(mkMtlsGenerateScript {
|
(mkMtlsGenerateScript {
|
||||||
inherit (cfg) subject provisioner san lifetime;
|
inherit (cfg) subject provisioner san lifetime;
|
||||||
inherit pkgs tlsCert tlsKey mtlsBundle;
|
inherit pkgs tlsCert tlsKey mtlsBundle;
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ let
|
|||||||
hostname = "janus";
|
hostname = "janus";
|
||||||
ca-url = "https://janus.john-stream.com/";
|
ca-url = "https://janus.john-stream.com/";
|
||||||
fingerprint = "2036c44f7b5901566ff7611ea6c927291ecc6d2dd00779c0eead70ec77fa10d6";
|
fingerprint = "2036c44f7b5901566ff7611ea6c927291ecc6d2dd00779c0eead70ec77fa10d6";
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
flake.modules.nixos.janus-ca = { config, lib, ... }:
|
flake.modules.nixos.janus-ca = { config, lib, ... }:
|
||||||
@@ -73,4 +72,24 @@ in
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
flake-file.inputs = {
|
||||||
|
wrappers = {
|
||||||
|
url = "github:lassulus/wrappers";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
perSystem = { pkgs, lib, ... }: {
|
||||||
|
packages.janus-ca = inputs.wrappers.lib.wrapPackage {
|
||||||
|
inherit pkgs;
|
||||||
|
package = pkgs.step-cli;
|
||||||
|
binName = "janus-cert";
|
||||||
|
args = [
|
||||||
|
"ca" "certificate"
|
||||||
|
"--ca-url=${ca-url}"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -3,7 +3,7 @@ let
|
|||||||
username = "john";
|
username = "john";
|
||||||
hostname = "john-pc-ubuntu";
|
hostname = "john-pc-ubuntu";
|
||||||
|
|
||||||
testHost = "soteria";
|
testHost = "soteria"; # which host to test build
|
||||||
testTarget = "fded:fb16:653e:25da:be24:11ff:fea0:753f"; # test-nix
|
testTarget = "fded:fb16:653e:25da:be24:11ff:fea0:753f"; # test-nix
|
||||||
# testTarget = "fded:fb16:653e:25da:be24:11ff:fe89:1cc3"; # soteria
|
# testTarget = "fded:fb16:653e:25da:be24:11ff:fe89:1cc3"; # soteria
|
||||||
|
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ in
|
|||||||
nixos.docker
|
nixos.docker
|
||||||
nixos.mtls
|
nixos.mtls
|
||||||
nixos.janus-ca
|
nixos.janus-ca
|
||||||
|
nixos.forgejo
|
||||||
# nixos.restic-server
|
# nixos.restic-server
|
||||||
# nixos.restic-envoy
|
# nixos.restic-envoy
|
||||||
({ pkgs, ... }: {
|
({ pkgs, ... }: {
|
||||||
@@ -60,6 +61,12 @@ in
|
|||||||
homeManager."${hostname}"
|
homeManager."${hostname}"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = [
|
||||||
|
inputs.self.packages.${pkgs.stdenv.hostPlatform.system}.janus-ca
|
||||||
|
];
|
||||||
|
|
||||||
|
forgejo.enable = true;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -87,6 +87,19 @@
|
|||||||
${echoCmd} "Testing the evaulation of the nixos config for $HOSTNAME"
|
${echoCmd} "Testing the evaulation of the nixos config for $HOSTNAME"
|
||||||
${lib.getExe nix} eval ${flakeDir}#nixosConfigurations.$HOSTNAME.config.system.build.toplevel.drvPath
|
${lib.getExe nix} eval ${flakeDir}#nixosConfigurations.$HOSTNAME.config.system.build.toplevel.drvPath
|
||||||
'')
|
'')
|
||||||
|
|
||||||
|
(writeShellScriptBin "cleanup" ''
|
||||||
|
set -e
|
||||||
|
DAYS=$1
|
||||||
|
if [ -z "$DAYS" ]; then
|
||||||
|
${echoCmd} "usage: cleanup <days>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
${lib.getExe home-manager} expire-generations "-$DAYS days"
|
||||||
|
${lib.getExe nix} profile wipe-history --older-than "''${DAYS}d"
|
||||||
|
${lib.getExe nix} store gc
|
||||||
|
${lib.getExe nix} store optimise
|
||||||
|
'')
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -18,16 +18,13 @@
|
|||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
home = "/home/${username}";
|
home = "/home/${username}";
|
||||||
shell = lib.mkIf config.programs.zsh.enable pkgs.zsh;
|
shell = lib.mkIf config.programs.zsh.enable pkgs.zsh;
|
||||||
extraGroups = [
|
extraGroups = [ "input" "networkmanager" ]
|
||||||
"input"
|
++ lib.optional isAdmin "wheel"
|
||||||
"networkmanager"
|
++ lib.optional config.virtualisation.docker.enable "docker"
|
||||||
] ++ lib.optionals isAdmin [
|
++ lib.optional (isAdmin && config.services.forgejo.enable) config.services.forgejo.group
|
||||||
"docker"
|
++ lib.optional (isAdmin && config.services.postgresql.enable) config.services.postgresql.group;
|
||||||
"wheel"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
security.sudo-rs.enable = lib.mkIf isAdmin true;
|
security.sudo-rs.enable = lib.mkIf isAdmin true;
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
|
|||||||
@@ -7,10 +7,11 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
perSystem = { system, pkgs, ... }: {
|
perSystem = { system, pkgs, ... }: {
|
||||||
packages.my-neovim = (inputs.nvf.lib.neovimConfiguration {
|
packages.my-neovim = ((inputs.nvf.lib.neovimConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
|
# https://nvf.notashelf.dev/search.html
|
||||||
config.vim = {
|
config.vim = {
|
||||||
options = {
|
options = {
|
||||||
number = true;
|
number = true;
|
||||||
@@ -19,6 +20,9 @@
|
|||||||
shiftwidth = 4;
|
shiftwidth = 4;
|
||||||
tabstop = 4;
|
tabstop = 4;
|
||||||
softtabstop = 4;
|
softtabstop = 4;
|
||||||
|
|
||||||
|
wrap = true;
|
||||||
|
linebreak = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
syntaxHighlighting = true;
|
syntaxHighlighting = true;
|
||||||
@@ -28,10 +32,27 @@
|
|||||||
theme.name = "catppuccin";
|
theme.name = "catppuccin";
|
||||||
theme.style = "mocha";
|
theme.style = "mocha";
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
filetree.neo-tree = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
lazy = {
|
lazy = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# globals = {
|
||||||
|
# SimpylFold_docstring_preview = 1;
|
||||||
|
# SimpylFold_fold_blank = 0;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# extraPlugins = with pkgs.vimPlugins; {
|
||||||
|
# SimpylFold.package = SimpylFold;
|
||||||
|
# };
|
||||||
|
|
||||||
telescope = {
|
telescope = {
|
||||||
enable = true;
|
enable = true;
|
||||||
extensions = [
|
extensions = [
|
||||||
@@ -46,7 +67,7 @@
|
|||||||
# Enable Treesitter
|
# Enable Treesitter
|
||||||
treesitter = {
|
treesitter = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# grammars = [ "python" ];
|
grammars = with pkgs.vimPlugins.nvim-treesitter-parsers; [ python ];
|
||||||
};
|
};
|
||||||
|
|
||||||
lsp.enable = true;
|
lsp.enable = true;
|
||||||
@@ -54,6 +75,24 @@
|
|||||||
languages = {
|
languages = {
|
||||||
enableTreesitter = true;
|
enableTreesitter = true;
|
||||||
enableFormat = true;
|
enableFormat = true;
|
||||||
|
|
||||||
|
markdown = {
|
||||||
|
enable = true;
|
||||||
|
extensions = {
|
||||||
|
# render-markdown-nvim.enable = true;
|
||||||
|
markview-nvim.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
bash.enable = true;
|
||||||
|
css.enable = true;
|
||||||
|
yaml.enable = true;
|
||||||
|
toml.enable = true;
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
python = {
|
python = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dap.enable = true;
|
dap.enable = true;
|
||||||
@@ -63,16 +102,24 @@
|
|||||||
|
|
||||||
keymaps = [
|
keymaps = [
|
||||||
{
|
{
|
||||||
key = "<leader>m";
|
key = "<leader>fd";
|
||||||
|
mode = "n";
|
||||||
|
silent = false;
|
||||||
|
action = ":Telescope find_files";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
key = "<C-b>";
|
||||||
mode = "n";
|
mode = "n";
|
||||||
silent = true;
|
silent = true;
|
||||||
action = ":make<CR>";
|
action = ":Neotree";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
})
|
}).neovim).overrideAttrs (old: {
|
||||||
.neovim;
|
pname = "my-neovim";
|
||||||
|
version = "custom";
|
||||||
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@@ -33,7 +33,7 @@
|
|||||||
networking.nameservers = [ "192.168.1.150" ];
|
networking.nameservers = [ "192.168.1.150" ];
|
||||||
networking.dhcpcd.extraConfig = "nohook resolv.conf";
|
networking.dhcpcd.extraConfig = "nohook resolv.conf";
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
step-cli
|
# step-cli
|
||||||
(writeShellScriptBin "ssh-host-cert-renew" ''
|
(writeShellScriptBin "ssh-host-cert-renew" ''
|
||||||
${lib.getExe pkgs.step-cli} ssh certificate \
|
${lib.getExe pkgs.step-cli} ssh certificate \
|
||||||
--host --sign \
|
--host --sign \
|
||||||
@@ -51,7 +51,7 @@
|
|||||||
wantedBy = [ ];
|
wantedBy = [ ];
|
||||||
after = [ "network-online.target" ];
|
after = [ "network-online.target" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
path = [ pkgs.step-cli pkgs.openssh pkgs.coreutils pkgs.systemd ];
|
path = with pkgs; [ coreutils systemd step-cli openssh ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
Type = "oneshot";
|
Type = "oneshot";
|
||||||
User = "root";
|
User = "root";
|
||||||
|
|||||||
@@ -17,6 +17,9 @@ in
|
|||||||
crt = "";
|
crt = "";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
environment.systemPackages = with pkgs; [ step-ca step-cli ];
|
environment.systemPackages = with pkgs; [
|
||||||
|
step-ca
|
||||||
|
step-cli
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user