initial cleanup work
This commit is contained in:
parent
9f85a364fb
commit
86d258c77f
|
@ -1,5 +0,0 @@
|
||||||
{tree, ...}: {
|
|
||||||
imports = with tree; [
|
|
||||||
home.apps.age
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,5 +0,0 @@
|
||||||
{tree, ...}: {
|
|
||||||
imports = with tree; [
|
|
||||||
home.programming.editors.nano
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,12 +0,0 @@
|
||||||
{tree, ...}: {
|
|
||||||
# basically everything apart from home.all.dev.debugging and extra archives
|
|
||||||
imports = with tree; [
|
|
||||||
home.dev.all.archives.common
|
|
||||||
home.dev.all.compression
|
|
||||||
home.dev.all.editors
|
|
||||||
home.dev.all.extra
|
|
||||||
home.dev.all.git
|
|
||||||
home.dev.all.info
|
|
||||||
home.dev.all.network
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
{...}: {
|
|
||||||
programs.ssh.matchBlocks."*".identityFile = "/home/chaos/.ssh/id_ed25519";
|
|
||||||
programs.git.extraConfig = {
|
|
||||||
gpg.format = "ssh";
|
|
||||||
commit.gpgsign = "true";
|
|
||||||
tag.gpgsign = "true";
|
|
||||||
user.signingKey = "/home/chaos/.ssh/id_ed25519";
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -11,8 +11,7 @@ in {
|
||||||
presets.nixos.serverHetzner
|
presets.nixos.serverHetzner
|
||||||
presets.nixos.serverEncryptedDrive
|
presets.nixos.serverEncryptedDrive
|
||||||
|
|
||||||
profiles.nginx
|
profiles.nixos.nginx
|
||||||
profiles.firewallAllow.httpCommon
|
|
||||||
|
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
|
@ -53,8 +52,6 @@ in {
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
# TODO: system.forbiddenDependenciesRegexes = ["libX11*"];
|
|
||||||
|
|
||||||
# For Containers
|
# For Containers
|
||||||
networking.nat = {
|
networking.nat = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -62,6 +59,11 @@ in {
|
||||||
externalInterface = "enp1s0";
|
externalInterface = "enp1s0";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
networking.firewall = {
|
||||||
|
allowedTCPPorts = [80 443];
|
||||||
|
allowedUDPPorts = [80 443];
|
||||||
|
};
|
||||||
|
|
||||||
networking.hostName = "hetzner-arm";
|
networking.hostName = "hetzner-arm";
|
||||||
|
|
||||||
home-manager.users.root.home.stateVersion = "24.05";
|
home-manager.users.root.home.stateVersion = "24.05";
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
{tree, ...}: {
|
|
||||||
imports = with tree; [
|
|
||||||
presets.nixos.encryptedDrive
|
|
||||||
];
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
loader = {
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
efi.canTouchEfiVariables = true;
|
|
||||||
};
|
|
||||||
initrd.availableKernelModules = [
|
|
||||||
# defaults from nixos-generate-config
|
|
||||||
"xhci_pci"
|
|
||||||
"nvme"
|
|
||||||
"usb_storage"
|
|
||||||
"usbhid"
|
|
||||||
"sd_mod"
|
|
||||||
"rtsx_pci_sdmmc"
|
|
||||||
];
|
|
||||||
kernelModules = ["kvm-intel"];
|
|
||||||
encryptedDrive.mode = "password";
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.cpu.intel.updateMicrocode = true;
|
|
||||||
}
|
|
|
@ -1,49 +0,0 @@
|
||||||
{tree, ...}: {
|
|
||||||
imports = with tree; [
|
|
||||||
users.root
|
|
||||||
users.chaos
|
|
||||||
profiles.sshd
|
|
||||||
|
|
||||||
presets.nixos.desktopGnome
|
|
||||||
presets.nixos.laptop
|
|
||||||
presets.nixos.encryptedUSB
|
|
||||||
|
|
||||||
profiles.cross.arm64
|
|
||||||
profiles.remoteBuilders
|
|
||||||
|
|
||||||
hosts.lappy-surface.profiles.music-player-target
|
|
||||||
|
|
||||||
./secrets.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.root = {
|
|
||||||
imports = with tree; [home.base];
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.chaos = {
|
|
||||||
imports = with tree; [
|
|
||||||
home.base
|
|
||||||
home.dev.all
|
|
||||||
home.reversing
|
|
||||||
home.homeFolders
|
|
||||||
home.musicLibrary
|
|
||||||
|
|
||||||
home.programming.editors.nano
|
|
||||||
home.programming.editors.vscode
|
|
||||||
home.programming.languages.rust
|
|
||||||
home.programming.languages.nix
|
|
||||||
];
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.enable = true;
|
|
||||||
networking.firewall.allowPing = true;
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [8088];
|
|
||||||
|
|
||||||
networking.hostName = "lappy-surface";
|
|
||||||
time.timeZone = "Europe/London";
|
|
||||||
|
|
||||||
system.stateVersion = "24.05";
|
|
||||||
}
|
|
|
@ -1,114 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
tree,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
alsaDevice = "sysdefault:CARD=A";
|
|
||||||
alsaControl = "Headphone";
|
|
||||||
mpvDevice = "alsa/${alsaDevice}";
|
|
||||||
hardwareVolume = 80;
|
|
||||||
|
|
||||||
startMusicPlayer = pkgs.writeShellScriptBin "startMusicPlayer" ''
|
|
||||||
${pkgs.alsa-utils}/bin/amixer -D "${alsaDevice}" sset "${alsaControl}" "${toString hardwareVolume}%"
|
|
||||||
|
|
||||||
exec ${pkgs.mpv}/bin/mpv \
|
|
||||||
"https://music:$(cat /secrets/music_stream_password)@mpd.owo.monster/flac" \
|
|
||||||
--cache=yes --cache-pause-initial=yes --cache-pause-wait=5 \
|
|
||||||
--vo=gpu --force-window --script-opts-append=osc-visibility=always \
|
|
||||||
--ao=alsa --audio-device="${mpvDevice}"
|
|
||||||
'';
|
|
||||||
|
|
||||||
startMusicPlayerSession = pkgs.writeShellScriptBin "startMusicPlayerSession" ''
|
|
||||||
set -x
|
|
||||||
export XDG_RUNTIME_DIR=/run/user/$UID
|
|
||||||
|
|
||||||
dbus-update-activation-environment --systemd DISPLAY WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
|
|
||||||
|
|
||||||
exec systemd-inhibit --what=sleep:idle:handle-lid-switch ${startMusicPlayer}/bin/startMusicPlayer
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
imports = with tree; [
|
|
||||||
profiles.connectivity.networkManager
|
|
||||||
profiles.wifiHardware
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.systemPackages = [startMusicPlayer startMusicPlayerSession];
|
|
||||||
|
|
||||||
users.users.music-player = {
|
|
||||||
uid = 1001;
|
|
||||||
isNormalUser = true;
|
|
||||||
linger = true;
|
|
||||||
extraGroups = [
|
|
||||||
"video"
|
|
||||||
"input"
|
|
||||||
"audio"
|
|
||||||
"rtkit"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.music-player = {
|
|
||||||
programs.mpv.enable = true;
|
|
||||||
imports = with tree; [
|
|
||||||
home.base
|
|
||||||
];
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services."music-player" = {
|
|
||||||
enable = true;
|
|
||||||
after = [
|
|
||||||
"systemd-user-sessions.service"
|
|
||||||
"plymouth-start.service"
|
|
||||||
"plymouth-quit.service"
|
|
||||||
"systemd-logind.service"
|
|
||||||
"getty@tty1.service"
|
|
||||||
"user@1001.service"
|
|
||||||
"network.target"
|
|
||||||
];
|
|
||||||
before = ["music-player.target"];
|
|
||||||
wants = ["dbus.socket" "network.target" "user@1001.service" "systemd-logind.service" "plymouth-quit.service"];
|
|
||||||
wantedBy = ["music-player.target"];
|
|
||||||
conflicts = ["getty@tty1.service"];
|
|
||||||
|
|
||||||
restartIfChanged = true;
|
|
||||||
unitConfig.ConditionPathExists = "/dev/tty1";
|
|
||||||
serviceConfig = {
|
|
||||||
ExecStart = ''
|
|
||||||
${pkgs.cage}/bin/cage -s ${startMusicPlayerSession}/bin/startMusicPlayerSession
|
|
||||||
'';
|
|
||||||
User = "music-player";
|
|
||||||
StandardError = "append:/var/log/music-player.log";
|
|
||||||
IgnoreSIGPIPE = "no";
|
|
||||||
UtmpIdentifier = "%n";
|
|
||||||
UtmpMode = "user";
|
|
||||||
TTYPath = "/dev/tty1";
|
|
||||||
TTYReset = "yes";
|
|
||||||
TTYVHangup = "yes";
|
|
||||||
TTYVTDisallocate = "yes";
|
|
||||||
StandardInput = "tty-fail";
|
|
||||||
PAMName = "music-player";
|
|
||||||
};
|
|
||||||
environment = {
|
|
||||||
XDG_RUNTIME_DIR = "/run/user/1001";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
security.polkit.enable = true;
|
|
||||||
|
|
||||||
security.pam.services.music-player.text = ''
|
|
||||||
auth required pam_unix.so nullok
|
|
||||||
account required pam_unix.so
|
|
||||||
session required pam_unix.so
|
|
||||||
session required pam_env.so conffile=/etc/pam/environment readenv=0
|
|
||||||
session required ${config.systemd.package}/lib/security/pam_systemd.so
|
|
||||||
'';
|
|
||||||
|
|
||||||
hardware.opengl.enable = true;
|
|
||||||
|
|
||||||
systemd.targets.music-player = {
|
|
||||||
description = "Music player";
|
|
||||||
wants = ["music-player.service" "networkmanager.service" "user@1001.service"];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,18 +0,0 @@
|
||||||
{...}: {
|
|
||||||
services.secrets = {
|
|
||||||
enable = true;
|
|
||||||
secrets = {
|
|
||||||
usb_encryption_passphrase = {
|
|
||||||
manual = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
music_stream_password = {
|
|
||||||
user = "chaos";
|
|
||||||
group = "users";
|
|
||||||
fetchScript = ''
|
|
||||||
simple_get "/api-keys/music-stream" .password > "$secretFile"
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -1,41 +1,49 @@
|
||||||
{tree, ...}: {
|
{
|
||||||
imports = with tree; [
|
lib,
|
||||||
|
tree,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.lists) flatten;
|
||||||
|
in {
|
||||||
|
imports = flatten (with tree; [
|
||||||
users.root
|
users.root
|
||||||
users.chaos
|
users.chaos
|
||||||
profiles.sshd
|
|
||||||
|
|
||||||
presets.nixos.desktopGnome
|
presets.home-manager.root-base
|
||||||
presets.nixos.laptop
|
|
||||||
presets.nixos.encryptedUSB
|
|
||||||
|
|
||||||
profiles.cross.arm64
|
(with tree.presets.nixos; [
|
||||||
profiles.remoteBuilders
|
desktopGnome
|
||||||
|
laptop
|
||||||
|
encryptedUSB
|
||||||
|
])
|
||||||
|
|
||||||
profiles.gaming.steam
|
(with tree.profiles.nixos; [
|
||||||
|
cross.arm64
|
||||||
|
remoteBuilders
|
||||||
|
|
||||||
|
gaming.steam
|
||||||
|
])
|
||||||
|
|
||||||
./secrets.nix
|
./secrets.nix
|
||||||
];
|
]);
|
||||||
|
|
||||||
home-manager.users.root = {
|
home-manager.users.root.home.stateVersion = "24.05";
|
||||||
imports = with tree; [home.base];
|
|
||||||
home.stateVersion = "24.05";
|
|
||||||
};
|
|
||||||
|
|
||||||
home-manager.users.chaos = {
|
home-manager.users.chaos = {
|
||||||
imports = with tree; [
|
imports = with tree.profiles.home-manager; [
|
||||||
home.base
|
base
|
||||||
home.dev.all
|
dev.all
|
||||||
home.reversing
|
reversing
|
||||||
home.homeFolders
|
homeFolders
|
||||||
home.musicLibrary
|
musicLibrary
|
||||||
|
|
||||||
home.programming.editors.nano
|
programming.editors.nano
|
||||||
home.programming.editors.vscode
|
programming.editors.vscode
|
||||||
home.programming.languages.rust
|
programming.languages.rust
|
||||||
home.programming.languages.nix
|
programming.languages.nix
|
||||||
|
|
||||||
home.gaming.platforms.steam
|
gaming.platforms.steam
|
||||||
home.gaming.platforms.lutris
|
gaming.platforms.lutris
|
||||||
];
|
];
|
||||||
home.stateVersion = "24.05";
|
home.stateVersion = "24.05";
|
||||||
};
|
};
|
||||||
|
|
|
@ -25,7 +25,7 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultModules = [
|
defaultModules = [
|
||||||
tree.profiles.base
|
tree.profiles.nixos.base
|
||||||
|
|
||||||
inputs.home-manager-unstable.nixosModules.home-manager
|
inputs.home-manager-unstable.nixosModules.home-manager
|
||||||
|
|
||||||
|
@ -34,7 +34,6 @@
|
||||||
tree.modules.nixos.rcloneServe
|
tree.modules.nixos.rcloneServe
|
||||||
tree.modules.nixos.rcloneSync
|
tree.modules.nixos.rcloneSync
|
||||||
tree.modules.nixos.secrets
|
tree.modules.nixos.secrets
|
||||||
tree.modules.nixos.postgreSQLRemoteBackup
|
|
||||||
tree.modules.nixos.encryptedDrive
|
tree.modules.nixos.encryptedDrive
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -70,16 +69,6 @@ in rec {
|
||||||
modules = defaultModules ++ [./lappy-t495/lappy-t495.nix ./lappy-t495/hardware.nix];
|
modules = defaultModules ++ [./lappy-t495/lappy-t495.nix ./lappy-t495/hardware.nix];
|
||||||
};
|
};
|
||||||
|
|
||||||
lappy-surface = nixosUnstableSystem {
|
|
||||||
specialArgs =
|
|
||||||
defaultSpecialArgs
|
|
||||||
// {
|
|
||||||
hostPath = ./lappy-surface;
|
|
||||||
};
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules = defaultModules ++ [./lappy-surface/lappy-surface.nix ./lappy-surface/hardware.nix];
|
|
||||||
};
|
|
||||||
|
|
||||||
hetzner-arm = nixosUnstableSystem {
|
hetzner-arm = nixosUnstableSystem {
|
||||||
specialArgs =
|
specialArgs =
|
||||||
defaultSpecialArgs
|
defaultSpecialArgs
|
||||||
|
|
|
@ -1,165 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (builtins) listToAttrs getAttr;
|
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
|
||||||
inherit (lib.options) mkOption mkEnableOption mdDoc;
|
|
||||||
inherit (lib.strings) optionalString;
|
|
||||||
inherit (lib.attrsets) attrValues;
|
|
||||||
inherit (lib) types;
|
|
||||||
|
|
||||||
cfg = config.services.postgreSQLRemoteBackup;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
# TODO: add host, port, user options
|
|
||||||
services.postgreSQLRemoteBackup = {
|
|
||||||
enable = mkEnableOption (mdDoc "PostgreSQL database dumps");
|
|
||||||
|
|
||||||
keepPrev = mkOption {
|
|
||||||
default = true;
|
|
||||||
type = types.bool;
|
|
||||||
description = mdDoc ''
|
|
||||||
Keep the previous run's backups but rename them to $name.prev
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
startAt = mkOption {
|
|
||||||
default = "4h";
|
|
||||||
type = with types; either (listOf str) str;
|
|
||||||
description = mdDoc ''
|
|
||||||
This option defines (see `systemd.time` for format) when the
|
|
||||||
databases should be dumped.
|
|
||||||
The default is run every 4 hours.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
backupUser = mkOption {
|
|
||||||
default = "root";
|
|
||||||
type = types.str;
|
|
||||||
description = mdDoc ''
|
|
||||||
User which will be used for backup job and files
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
databases = mkOption {
|
|
||||||
default = [];
|
|
||||||
type = types.listOf types.str;
|
|
||||||
description = mdDoc ''
|
|
||||||
List of database names to dump.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
location = mkOption {
|
|
||||||
default = "/var/backup/postgresql";
|
|
||||||
type = types.path;
|
|
||||||
description = mdDoc ''
|
|
||||||
Path of directory where the PostgreSQL database dumps will be placed.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
pgdumpOptions = mkOption {
|
|
||||||
type = types.separatedString " ";
|
|
||||||
default = "-C";
|
|
||||||
description = mdDoc ''
|
|
||||||
Command line options for pg_dump.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
compression = mkOption {
|
|
||||||
type = types.enum ["none" "zstd"];
|
|
||||||
default = "zstd";
|
|
||||||
description = mdDoc ''
|
|
||||||
The type of compression to use on the generated database dump.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
compressionLevel = mkOption {
|
|
||||||
type = types.int;
|
|
||||||
default = 9;
|
|
||||||
description = mdDoc ''
|
|
||||||
The compression level used when compression is enabled.
|
|
||||||
zstd accepts levels 1 to 19.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkMerge [
|
|
||||||
(mkIf cfg.enable {
|
|
||||||
systemd.tmpfiles.rules = [
|
|
||||||
"d '${cfg.location}' 0700 ${cfg.backupUser} - - -"
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(mkIf cfg.enable {
|
|
||||||
systemd.services = listToAttrs (map (db: {
|
|
||||||
name = "remotePostgreSQLBackup-${db}";
|
|
||||||
value = let
|
|
||||||
compressSuffixes = {
|
|
||||||
"none" = "";
|
|
||||||
"zstd" = ".zstd";
|
|
||||||
};
|
|
||||||
compressSuffix = getAttr cfg.compression compressSuffixes;
|
|
||||||
|
|
||||||
compressCmd = getAttr cfg.compression {
|
|
||||||
"none" = "cat";
|
|
||||||
"zstd" = "${pkgs.zstd}/bin/zstd -c -${toString cfg.compressionLevel}";
|
|
||||||
};
|
|
||||||
|
|
||||||
mkSqlPath = prefix: suffix: "${cfg.location}/${db}${prefix}.sql${suffix}";
|
|
||||||
curFile = mkSqlPath "" compressSuffix;
|
|
||||||
prevFile = mkSqlPath ".prev" compressSuffix;
|
|
||||||
prevFiles = map (mkSqlPath ".prev") (attrValues compressSuffixes);
|
|
||||||
inProgressFile = mkSqlPath ".in-progress" compressSuffix;
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
|
|
||||||
description = "Backup of ${db} database(s)";
|
|
||||||
|
|
||||||
requires = mkIf config.services.postgresql.enable [
|
|
||||||
"postgresql.service"
|
|
||||||
];
|
|
||||||
|
|
||||||
path = [
|
|
||||||
pkgs.coreutils
|
|
||||||
(let
|
|
||||||
pgCfg = config.services.postgresql;
|
|
||||||
in
|
|
||||||
if pgCfg.enable
|
|
||||||
then pgCfg.package
|
|
||||||
else pkgs.postgresql)
|
|
||||||
];
|
|
||||||
|
|
||||||
script = ''
|
|
||||||
set -e -o pipefail
|
|
||||||
|
|
||||||
umask 0077 # ensure backup is only readable by backup user
|
|
||||||
|
|
||||||
${optionalString cfg.keepPrev ''
|
|
||||||
if [ -e ${curFile} ]; then
|
|
||||||
rm -f ${toString prevFiles}
|
|
||||||
mv ${curFile} ${prevFile}
|
|
||||||
fi
|
|
||||||
''}
|
|
||||||
|
|
||||||
pg_dump ${cfg.pgdumpOptions} ${db} \
|
|
||||||
| ${compressCmd} \
|
|
||||||
> ${inProgressFile}
|
|
||||||
|
|
||||||
mv ${inProgressFile} ${curFile}
|
|
||||||
'';
|
|
||||||
|
|
||||||
serviceConfig = {
|
|
||||||
Type = "oneshot";
|
|
||||||
User = cfg.backupUser;
|
|
||||||
};
|
|
||||||
|
|
||||||
inherit (cfg) startAt;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
cfg.databases);
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
|
@ -124,7 +124,6 @@ in
|
||||||
sshAddress = "hetzner-arm.servers.genderfucked.monster";
|
sshAddress = "hetzner-arm.servers.genderfucked.monster";
|
||||||
};
|
};
|
||||||
"lappy-t495" = configForMachine "lappy-t495";
|
"lappy-t495" = configForMachine "lappy-t495";
|
||||||
"lappy-surface" = configForMachine "lappy-surface";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
machinesWithHostSecrets = filter (
|
machinesWithHostSecrets = filter (
|
||||||
|
|
|
@ -2,8 +2,6 @@ final: prev: rec {
|
||||||
comic-sans = final.callPackage ./comic-sans {};
|
comic-sans = final.callPackage ./comic-sans {};
|
||||||
comic-code = final.callPackage ./comic-code {};
|
comic-code = final.callPackage ./comic-code {};
|
||||||
|
|
||||||
gobar = final.callPackage ./gobar {};
|
|
||||||
|
|
||||||
mk-enc-usb = final.callPackage ../extras/mk-enc-usb.nix {};
|
mk-enc-usb = final.callPackage ../extras/mk-enc-usb.nix {};
|
||||||
mk-encrypted-drive = final.callPackage ../extras/mk-encrypted-drive.nix {};
|
mk-encrypted-drive = final.callPackage ../extras/mk-encrypted-drive.nix {};
|
||||||
|
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
fetchFromGitLab,
|
|
||||||
buildGoModule,
|
|
||||||
}:
|
|
||||||
buildGoModule rec {
|
|
||||||
pname = "gobar";
|
|
||||||
version = "latest-1";
|
|
||||||
|
|
||||||
src = fetchFromGitLab {
|
|
||||||
owner = "ChaotiCryptidz";
|
|
||||||
repo = "gobar";
|
|
||||||
rev = "34c807423e5ea1420dbe2c08574cdc234f9b0789";
|
|
||||||
sha256 = "sha256-H+CjnkMde3rx7CoLKOluxHlYrhZGqzTnU8oOgkDEwsc=";
|
|
||||||
};
|
|
||||||
|
|
||||||
runVend = false;
|
|
||||||
vendorSha256 = "sha256-37QYc+gLzCW1jefAQNy4AbabckJ4jO1sDOiUZTsLgWo=";
|
|
||||||
|
|
||||||
preBuild = ''
|
|
||||||
export HOME=$TMPDIR
|
|
||||||
'';
|
|
||||||
}
|
|
7
presets/home-manager/root-base.nix
Normal file
7
presets/home-manager/root-base.nix
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{tree, ...}: {
|
||||||
|
home-manager.users.root = {
|
||||||
|
imports = with tree.profiles.home-manager; [
|
||||||
|
base
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
9
presets/home-manager/root-minimalServer.nix
Normal file
9
presets/home-manager/root-minimalServer.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{tree, ...}: {
|
||||||
|
home-manager.users.root = {
|
||||||
|
imports = with tree.profiles.home-manager; [
|
||||||
|
base.zsh
|
||||||
|
base.age-encryption
|
||||||
|
dev.small
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
|
@ -5,13 +5,14 @@
|
||||||
}: {
|
}: {
|
||||||
imports =
|
imports =
|
||||||
(with tree; [
|
(with tree; [
|
||||||
profiles.base
|
profiles.nixos.base
|
||||||
|
|
||||||
users.root
|
users.root
|
||||||
|
presets.home-manager.root-minimalServer
|
||||||
|
|
||||||
modules.nixos.rcloneServe
|
modules.nixos.rcloneServe
|
||||||
modules.nixos.rcloneSync
|
modules.nixos.rcloneSync
|
||||||
modules.nixos.secrets
|
modules.nixos.secrets
|
||||||
modules.nixos.postgreSQLRemoteBackup
|
|
||||||
])
|
])
|
||||||
++ [
|
++ [
|
||||||
# Default modules which are usually included in nixos.nix
|
# Default modules which are usually included in nixos.nix
|
||||||
|
@ -19,10 +20,6 @@
|
||||||
inputs.vaultui.nixosModules.default
|
inputs.vaultui.nixosModules.default
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.root = {
|
|
||||||
imports = with tree; [home.base.zsh home.base.age-encryption home.dev.small];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowPing = true;
|
allowPing = true;
|
||||||
|
|
|
@ -1,41 +1,38 @@
|
||||||
{tree, ...}: {
|
{tree, ...}: {
|
||||||
imports = with tree; [
|
imports = with tree.profiles.nixos; [
|
||||||
profiles.wifiHardware
|
wifiHardware
|
||||||
|
|
||||||
profiles.sound.base
|
sound.base
|
||||||
profiles.sound.pipewire
|
sound.pipewire
|
||||||
profiles.gui.base
|
gui.base
|
||||||
|
|
||||||
profiles.firewallAllow.aria2c
|
mullvad
|
||||||
profiles.firewallAllow.soulseek
|
|
||||||
profiles.mullvad
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.chaos = {
|
home-manager.users.chaos = {
|
||||||
imports = with tree; [
|
imports = with tree.profiles.home-manager; [
|
||||||
home.gui.base
|
gui.base
|
||||||
|
|
||||||
home.apps.fileRoller
|
apps.fileRoller
|
||||||
home.apps.nautilus
|
apps.nautilus
|
||||||
home.apps.pavucontrol
|
apps.pavucontrol
|
||||||
home.apps.mpv
|
apps.mpv
|
||||||
|
|
||||||
home.apps.firefox
|
apps.firefox
|
||||||
home.apps.telegram
|
apps.telegram
|
||||||
home.apps.thunderbird
|
apps.thunderbird
|
||||||
#home.apps.session
|
apps.toot-cli
|
||||||
home.apps.toot-cli
|
|
||||||
|
|
||||||
home.apps.obsidian
|
apps.obsidian
|
||||||
home.apps.libreoffice
|
apps.libreoffice
|
||||||
|
|
||||||
home.apps.nicotine-plus
|
apps.nicotine-plus
|
||||||
home.apps.musicutil
|
apps.musicutil
|
||||||
|
|
||||||
home.apps.mullvad
|
apps.mullvad
|
||||||
home.apps.aria2
|
apps.aria2
|
||||||
home.apps.rclone
|
apps.rclone
|
||||||
home.apps.restic
|
apps.restic
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,12 @@
|
||||||
{tree, ...}: {
|
{tree, ...}: {
|
||||||
imports = with tree; [
|
imports = with tree; [
|
||||||
presets.nixos.desktopBase
|
presets.nixos.desktopBase
|
||||||
profiles.gui.environments.gnome
|
|
||||||
|
profiles.nixos.gui.environments.gnome
|
||||||
];
|
];
|
||||||
home-manager.users.chaos = {
|
home-manager.users.chaos = {
|
||||||
imports = with tree; [
|
imports = with tree; [
|
||||||
home.gui.environments.gnome
|
profiles.home-manager.gui.environments.gnome
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
{tree, ...}: {
|
{tree, ...}: {
|
||||||
imports = with tree; [profiles.usbAutoMount];
|
imports = with tree.profiles.nixos; [
|
||||||
|
usbAutoMount
|
||||||
|
];
|
||||||
|
|
||||||
home-manager.users.chaos = {
|
home-manager.users.chaos = {
|
||||||
imports = with tree; [home.sshUSB];
|
imports = with tree.profiles.home-manager; [
|
||||||
|
sshUSB
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
{tree, ...}: {
|
{tree, ...}: {
|
||||||
imports = with tree; [
|
imports = with tree.profiles.nixos; [
|
||||||
profiles.laptop
|
laptop
|
||||||
|
|
||||||
profiles.connectivity.networkManager
|
connectivity.networkManager
|
||||||
profiles.connectivity.iOS
|
connectivity.iOS
|
||||||
|
|
||||||
profiles.wifiHardware
|
wifiHardware
|
||||||
|
|
||||||
profiles.tor
|
tor
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.loader.systemd-boot = {
|
boot.loader.systemd-boot = {
|
||||||
|
|
|
@ -1,22 +1,19 @@
|
||||||
{tree, ...}: {
|
{tree, ...}: {
|
||||||
imports = with tree; [
|
imports = with tree; [
|
||||||
users.root
|
users.root
|
||||||
|
presets.home-manager.root-minimalServer
|
||||||
|
|
||||||
profiles.sshd
|
profiles.nixos.sshd
|
||||||
profiles.firewallAllow.ssh
|
|
||||||
|
|
||||||
profiles.nixGC
|
profiles.nixos.nixGC
|
||||||
profiles.serverExtras
|
profiles.nixos.serverExtras
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users.root = {
|
|
||||||
imports = with tree; [home.base.zsh home.base.age-encryption home.dev.small];
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall = {
|
networking.firewall = {
|
||||||
enable = true;
|
enable = true;
|
||||||
allowPing = true;
|
allowPing = true;
|
||||||
checkReversePath = "loose";
|
checkReversePath = "loose";
|
||||||
|
allowedTCPPorts = [22];
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: Better DNS setup
|
# TODO: Better DNS setup
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
driveData = import "${self}/data/drives/encryptedDrive.nix";
|
driveData = import "${self}/data/drives/encryptedDrive.nix";
|
||||||
in {
|
in {
|
||||||
imports = with tree; [
|
imports = with tree; [
|
||||||
profiles.sshd
|
profiles.nixos.sshd
|
||||||
];
|
];
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
|
|
|
@ -1,37 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib.modules) mkIf mkForce;
|
|
||||||
in {
|
|
||||||
services.fprintd.enable = true;
|
|
||||||
|
|
||||||
security.sudo.wheelNeedsPassword = mkForce true;
|
|
||||||
|
|
||||||
security.pam.services = {
|
|
||||||
sudo.fprintAuth = true;
|
|
||||||
login.fprintAuth = true;
|
|
||||||
|
|
||||||
gdm-fingerprint = mkIf config.services.xserver.displayManager.gdm.enable {
|
|
||||||
text = ''
|
|
||||||
auth required pam_shells.so
|
|
||||||
auth requisite pam_nologin.so
|
|
||||||
auth requisite pam_faillock.so preauth
|
|
||||||
auth required ${pkgs.fprintd}/lib/security/pam_fprintd.so
|
|
||||||
auth optional pam_permit.so
|
|
||||||
auth required pam_env.so
|
|
||||||
auth [success=ok default=1] ${pkgs.gdm}/lib/security/pam_gdm.so
|
|
||||||
auth optional ${pkgs.gnome-keyring}/lib/security/pam_gnome_keyring.so
|
|
||||||
|
|
||||||
account include login
|
|
||||||
|
|
||||||
password required pam_deny.so
|
|
||||||
|
|
||||||
session include login
|
|
||||||
session optional ${pkgs.gnome.gnome-keyring}/lib/security/pam_gnome_keyring.so auto_start
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
5
profiles/home-manager/base/age-encryption.nix
Normal file
5
profiles/home-manager/base/age-encryption.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{tree, ...}: {
|
||||||
|
imports = with tree.profiles.home-manager; [
|
||||||
|
apps.age
|
||||||
|
];
|
||||||
|
}
|
5
profiles/home-manager/dev/all/editors.nix
Normal file
5
profiles/home-manager/dev/all/editors.nix
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
{tree, ...}: {
|
||||||
|
imports = with tree.profiles.home-manager; [
|
||||||
|
programming.editors.nano
|
||||||
|
];
|
||||||
|
}
|
12
profiles/home-manager/dev/small/small.nix
Normal file
12
profiles/home-manager/dev/small/small.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
{tree, ...}: {
|
||||||
|
# basically everything apart from dev.debugging and extra archives
|
||||||
|
imports = with tree.profiles.home-manager.dev.all; [
|
||||||
|
archives.common
|
||||||
|
compression
|
||||||
|
editors
|
||||||
|
extra
|
||||||
|
git
|
||||||
|
info
|
||||||
|
network
|
||||||
|
];
|
||||||
|
}
|
|
@ -1,14 +1,10 @@
|
||||||
{
|
{
|
||||||
tree,
|
tree,
|
||||||
nixosConfig,
|
|
||||||
pkgs,
|
pkgs,
|
||||||
inputs,
|
inputs,
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.lists) optional;
|
|
||||||
inherit (lib.modules) mkIf;
|
|
||||||
|
|
||||||
homeManagerLib = inputs.home-manager.lib.hm;
|
homeManagerLib = inputs.home-manager.lib.hm;
|
||||||
|
|
||||||
fontSizes = {
|
fontSizes = {
|
||||||
|
@ -16,7 +12,7 @@
|
||||||
medium = "12";
|
medium = "12";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
imports = with tree; [home.gui.base home.apps.kitty];
|
imports = with tree.profiles.home-manager; [gui.base apps.kitty];
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs; [
|
||||||
dconf2nix
|
dconf2nix
|
|
@ -3,9 +3,9 @@
|
||||||
tree,
|
tree,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = with tree; [
|
imports = with tree.profiles.home-manager; [
|
||||||
home.apps.rclone
|
apps.rclone
|
||||||
home.apps.musicutil
|
apps.musicutil
|
||||||
];
|
];
|
||||||
|
|
||||||
home.packages = [
|
home.packages = [
|
|
@ -1,5 +1,5 @@
|
||||||
{...}: let
|
{self, ...}: let
|
||||||
encryptedUSBData = import ../data/drives/encryptedUSB.nix;
|
encryptedUSBData = import "${self}/data/drives/encryptedUSB.nix";
|
||||||
in {
|
in {
|
||||||
programs.ssh.matchBlocks."*".identityFile = "${encryptedUSBData.sshPrivateKeyPath}";
|
programs.ssh.matchBlocks."*".identityFile = "${encryptedUSBData.sshPrivateKeyPath}";
|
||||||
programs.git.extraConfig = {
|
programs.git.extraConfig = {
|
|
@ -1,8 +0,0 @@
|
||||||
{lib, ...}: let
|
|
||||||
inherit (lib.modules) mkDefault;
|
|
||||||
in {
|
|
||||||
environment.noXlibs = mkDefault true;
|
|
||||||
documentation.man.enable = mkDefault false;
|
|
||||||
documentation.doc.enable = mkDefault false;
|
|
||||||
fonts.fontconfig.enable = mkDefault false;
|
|
||||||
}
|
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
self,
|
||||||
inputs,
|
inputs,
|
||||||
config,
|
config,
|
||||||
pkgs,
|
pkgs,
|
||||||
|
@ -24,13 +25,9 @@ in {
|
||||||
nixpkgs = mkIf (!config.boot.isContainer) {
|
nixpkgs = mkIf (!config.boot.isContainer) {
|
||||||
config = {
|
config = {
|
||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
|
|
||||||
permittedInsecurePackages = [
|
|
||||||
"electron-25.9.0"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
overlays = [
|
overlays = [
|
||||||
(import ../../overlay)
|
(import "${self}/overlay")
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
environment.etc."nixpkgs-commit".text = inputs.nixpkgs-unstable.rev;
|
environment.etc."nixpkgs-commit".text = inputs.nixpkgs-unstable.rev;
|
|
@ -3,6 +3,6 @@
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
libimobiledevice
|
libimobiledevice
|
||||||
ifuse # optional, to mount using 'ifuse'
|
ifuse
|
||||||
];
|
];
|
||||||
}
|
}
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue