migrated channel 24.05 to unstable
This commit is contained in:
parent
6b6b7e39b1
commit
37aa35daed
2
base.nix
2
base.nix
@ -17,7 +17,7 @@
|
||||
./jawz.nix
|
||||
]
|
||||
++ (map (file: ./modules/${file}) moduleFiles);
|
||||
system.stateVersion = "24.05";
|
||||
system.stateVersion = "24.11";
|
||||
sops = {
|
||||
defaultSopsFormat = "yaml";
|
||||
defaultSopsFile = ./secrets/secrets.yaml;
|
||||
|
||||
33
flake.lock
generated
33
flake.lock
generated
@ -112,16 +112,16 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1726989464,
|
||||
"narHash": "sha256-Vl+WVTJwutXkimwGprnEtXc/s/s8sMuXzqXaspIGlwM=",
|
||||
"lastModified": 1730016908,
|
||||
"narHash": "sha256-bFCxJco7d8IgmjfNExNz9knP8wvwbXU4s/d53KOK6U0=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "2f23fa308a7c067e52dfcc30a0758f47043ec176",
|
||||
"rev": "e83414058edd339148dc142a8437edb9450574c8",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"ref": "release-24.05",
|
||||
"ref": "master",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
@ -439,16 +439,16 @@
|
||||
},
|
||||
"nixpkgs_3": {
|
||||
"locked": {
|
||||
"lastModified": 1729691686,
|
||||
"narHash": "sha256-BAuPWW+9fa1moZTU+jFh+1cUtmsuF8asgzFwejM4wac=",
|
||||
"lastModified": 1729880355,
|
||||
"narHash": "sha256-RP+OQ6koQQLX5nw0NmcDrzvGL8HDLnyXt/jHhL1jwjM=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "32e940c7c420600ef0d1ef396dc63b04ee9cad37",
|
||||
"rev": "18536bf04cd71abd345f9579158841376fdd0c5a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-24.05",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
@ -502,7 +502,6 @@
|
||||
"nixos-cosmic": "nixos-cosmic",
|
||||
"nixpkgs": "nixpkgs_3",
|
||||
"sops-nix": "sops-nix",
|
||||
"unstable": "unstable",
|
||||
"zen-browser": "zen-browser"
|
||||
}
|
||||
},
|
||||
@ -588,22 +587,6 @@
|
||||
"url": "https://github.com/Open-Wine-Components/umu-launcher/?dir=packaging/nix"
|
||||
}
|
||||
},
|
||||
"unstable": {
|
||||
"locked": {
|
||||
"lastModified": 1729665710,
|
||||
"narHash": "sha256-AlcmCXJZPIlO5dmFzV3V2XF6x/OpNWUV8Y/FMPGd8Z4=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "2768c7d042a37de65bb1b5b3268fc987e534c49d",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"xdph": {
|
||||
"inputs": {
|
||||
"hyprland-protocols": [
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
{
|
||||
description = "JawZ NixOS flake setup";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-24.05";
|
||||
unstable.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
master.url = "github:nixos/nixpkgs?ref=master";
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager/release-24.05";
|
||||
url = "github:nix-community/home-manager/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
nix-gaming.url = "github:fufexan/nix-gaming";
|
||||
@ -41,9 +40,8 @@
|
||||
config.allowUnfree = true;
|
||||
};
|
||||
pkgs = makePkgs nixpkgs;
|
||||
pkgsU = makePkgs inputs.unstable;
|
||||
pkgsM = makePkgs inputs.master;
|
||||
overlays = [ (import ./overlay.nix { inherit pkgs pkgsU pkgsM; }) ];
|
||||
overlays = [ (import ./overlay.nix { inherit pkgs pkgsM; }) ];
|
||||
createConfig = name: {
|
||||
inherit system;
|
||||
specialArgs = {
|
||||
|
||||
27
gnome.nix
27
gnome.nix
@ -8,7 +8,7 @@
|
||||
displayManager.gdm.enable = true;
|
||||
desktopManager.gnome = {
|
||||
enable = true;
|
||||
extraGSettingsOverridePackages = [ pkgs.gnome.mutter ];
|
||||
extraGSettingsOverridePackages = [ pkgs.mutter ];
|
||||
extraGSettingsOverrides = ''
|
||||
[org.gnome.mutter]
|
||||
experimental-features=['variable-refresh-rate', 'scale-monitor-framebuffer']
|
||||
@ -16,24 +16,21 @@
|
||||
};
|
||||
};
|
||||
};
|
||||
environment.gnome.excludePackages =
|
||||
(with pkgs; [
|
||||
gnome-photos
|
||||
gnome-tour
|
||||
gnome-text-editor
|
||||
gnome-connections
|
||||
environment.gnome.excludePackages = with pkgs; [
|
||||
# gnome-shell-extensions
|
||||
baobab
|
||||
])
|
||||
++ (with pkgs.gnome; [
|
||||
# totem
|
||||
gnome-music
|
||||
baobab
|
||||
cheese
|
||||
epiphany
|
||||
gnome-characters
|
||||
yelp
|
||||
gnome-connections
|
||||
gnome-font-viewer
|
||||
cheese
|
||||
]);
|
||||
gnome-music
|
||||
gnome-photos
|
||||
gnome-text-editor
|
||||
gnome-tour
|
||||
yelp
|
||||
];
|
||||
qt = {
|
||||
enable = true;
|
||||
style = "adwaita";
|
||||
@ -42,7 +39,7 @@
|
||||
(with pkgs; [
|
||||
# ffmpegthumbnailer # generate thumbnails
|
||||
adw-gtk3 # theme legacy applications
|
||||
gnome.gnome-tweaks # tweaks for the gnome desktop environment
|
||||
gnome-tweaks # tweaks for the gnome desktop environment
|
||||
papirus-icon-theme # icon theme
|
||||
libgda # for pano shell extension
|
||||
# gradience # theme customizer, allows you to modify adw-gtk3 themes
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
{ config, ... }:
|
||||
{
|
||||
home.stateVersion = "24.05";
|
||||
home.stateVersion = "24.11";
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
historyFile = "\${XDG_STATE_HOME}/bash/history";
|
||||
|
||||
@ -4,20 +4,14 @@
|
||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||
hardware = {
|
||||
cpu.intel.updateMicrocode = lib.mkDefault true;
|
||||
opengl = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
enable32Bit = true;
|
||||
};
|
||||
};
|
||||
boot = {
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
kernel.sysctl = {
|
||||
"vm.swappiness" = 80;
|
||||
"net.ipv6.conf.all.disable_ipv6" = 0;
|
||||
"net.ipv6.conf.lo.disable_ipv6" = 0;
|
||||
"net.ipv6.conf.default.disable_ipv6" = 0;
|
||||
};
|
||||
kernel.sysctl."vm.swappiness" = 80;
|
||||
loader = {
|
||||
efi = {
|
||||
canTouchEfiVariables = true;
|
||||
@ -51,7 +45,19 @@
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
};
|
||||
};
|
||||
fileSystems = {
|
||||
fileSystems =
|
||||
let
|
||||
nfsMount = server: nfsDisk: {
|
||||
device = "${server}:/${nfsDisk}";
|
||||
fsType = "nfs";
|
||||
options = [
|
||||
"x-systemd.automount"
|
||||
"noauto"
|
||||
"x-systemd.idle-timeout=600"
|
||||
];
|
||||
};
|
||||
in
|
||||
{
|
||||
"/" = {
|
||||
device = "/dev/mapper/nvme";
|
||||
fsType = "btrfs";
|
||||
@ -79,17 +85,6 @@
|
||||
"datacow"
|
||||
];
|
||||
};
|
||||
# "/srv/pool" = {
|
||||
# device = "/dev/disk/by-uuid/1e7cf787-e34d-4e3e-ac3c-0c07309dbd34";
|
||||
# fsType = "btrfs";
|
||||
# options = [
|
||||
# "subvol=@data"
|
||||
# "compress=zstd:3"
|
||||
# "space_cache=v2"
|
||||
# "commit=120"
|
||||
# "datacow"
|
||||
# ];
|
||||
# };
|
||||
"/boot" = {
|
||||
device = "/dev/disk/by-uuid/bf0aeb95-94cc-4377-b6e4-1dbb4958b334";
|
||||
fsType = "ext4";
|
||||
@ -103,12 +98,6 @@
|
||||
options = [ "bind" ];
|
||||
depends = [ "/srv/pool" ];
|
||||
};
|
||||
# "/srv/jellyfin/media" = {
|
||||
# device = "/srv/pool/multimedia/media";
|
||||
# options = [ "bind" "ro" ];
|
||||
# depends = [ "/srv/pool" ];
|
||||
# };
|
||||
# NFS
|
||||
"/export/pool" = {
|
||||
device = "/srv/pool";
|
||||
options = [ "bind" ];
|
||||
@ -119,9 +108,10 @@
|
||||
options = [ "bind" ];
|
||||
depends = [ "/srv/pool" ];
|
||||
};
|
||||
"/srv/server/pool" = nfsMount "server" "pool" // { };
|
||||
"/srv/server/jawz" = nfsMount "server" "jawz" // { };
|
||||
};
|
||||
services.nfs = {
|
||||
server = {
|
||||
services.nfs.server = {
|
||||
enable = true;
|
||||
exports = ''
|
||||
/export workstation(rw,fsid=0,no_subtree_check)
|
||||
@ -129,7 +119,6 @@
|
||||
/export/pool workstation(rw,nohide,insecure,no_subtree_check)
|
||||
'';
|
||||
};
|
||||
};
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/dev/nvme0n1p3";
|
||||
|
||||
@ -1,18 +1,7 @@
|
||||
{ lib, modulesPath, ... }:
|
||||
{
|
||||
imports = [ (modulesPath + "/installer/scan/not-detected.nix") ];
|
||||
hardware = {
|
||||
nvidia = {
|
||||
modesetting.enable = true;
|
||||
powerManagement.enable = true;
|
||||
};
|
||||
cpu.intel.updateMicrocode = lib.mkDefault true;
|
||||
opengl = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
};
|
||||
};
|
||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
|
||||
boot = {
|
||||
loader = {
|
||||
efi = {
|
||||
@ -61,12 +50,7 @@
|
||||
};
|
||||
};
|
||||
kernelModules = [ "kvm-intel" ];
|
||||
kernel.sysctl = {
|
||||
"vm.swappiness" = 80;
|
||||
"net.ipv6.conf.all.disable_ipv6" = 1;
|
||||
"net.ipv6.conf.lo.disable_ipv6" = 1;
|
||||
"net.ipv6.conf.default.disable_ipv6" = 1;
|
||||
};
|
||||
kernel.sysctl."vm.swappiness" = 80;
|
||||
extraModulePackages = [ ];
|
||||
initrd = {
|
||||
availableKernelModules = [
|
||||
@ -128,7 +112,6 @@
|
||||
device = "/dev/disk/by-uuid/CBE7-5DEB";
|
||||
fsType = "vfat";
|
||||
};
|
||||
# NEXTCCLOUD
|
||||
"/var/lib/nextcloud/data" = {
|
||||
device = "/srv/pool/nextcloud";
|
||||
options = [ "bind" ];
|
||||
@ -142,7 +125,6 @@
|
||||
];
|
||||
depends = [ "/srv/pool" ];
|
||||
};
|
||||
# NFS
|
||||
"/export/pool" = {
|
||||
device = "/srv/pool";
|
||||
options = [ "bind" ];
|
||||
@ -154,16 +136,17 @@
|
||||
depends = [ "/srv/pool" ];
|
||||
};
|
||||
};
|
||||
services.nfs = {
|
||||
server = {
|
||||
services.nfs.server = {
|
||||
enable = true;
|
||||
exports = ''
|
||||
/export workstation(rw,fsid=0,no_subtree_check)
|
||||
miniserver(rw,fsid=0,no_subtree_check)
|
||||
/export/jawz workstation(rw,nohide,insecure,no_subtree_check)
|
||||
miniserver(rw,nohide,insecure,no_subtree_check)
|
||||
/export/pool workstation(rw,nohide,insecure,no_subtree_check)
|
||||
miniserver(rw,nohide,insecure,no_subtree_check)
|
||||
'';
|
||||
};
|
||||
};
|
||||
swapDevices = [
|
||||
{
|
||||
device = "/dev/disk/by-partuuid/cb0ad486-ebf8-4bfc-ad7c-96bdc68576ca";
|
||||
|
||||
@ -4,7 +4,6 @@
|
||||
./hardware-configuration.nix
|
||||
../../base.nix
|
||||
../../gnome.nix
|
||||
../../pkgs/obs-studio.nix
|
||||
];
|
||||
my = {
|
||||
enableContainers = true;
|
||||
@ -82,7 +81,6 @@
|
||||
groups.nixremote.gid = 555;
|
||||
users = {
|
||||
jawz.packages = with pkgs; [
|
||||
nvidia-podman # why not? i'll probably be dissapointed
|
||||
distrobox # install packages from other os
|
||||
gocryptfs # encrypted filesystem! shhh!!!
|
||||
torrenttools # create torrent files from the terminal!
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
config,
|
||||
modulesPath,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
{
|
||||
@ -21,12 +22,9 @@
|
||||
};
|
||||
};
|
||||
boot = {
|
||||
# kernelPackages = pkgs.linuxPackages_zen;
|
||||
kernelPackages = pkgs.linuxPackages_zen;
|
||||
kernel.sysctl = {
|
||||
"vm.swappiness" = 80;
|
||||
"net.ipv6.conf.all.disable_ipv6" = 0;
|
||||
"net.ipv6.conf.lo.disable_ipv6" = 0;
|
||||
"net.ipv6.conf.default.disable_ipv6" = 0;
|
||||
"net.ipv4.tcp_mtu_probing" = 1;
|
||||
};
|
||||
loader = {
|
||||
|
||||
@ -27,10 +27,9 @@
|
||||
gamemode # optimizes linux to have better gaming performance
|
||||
heroic # install epic games
|
||||
protonup-qt # update proton-ge
|
||||
# minecraft # minecraft official launcher
|
||||
ns-usbloader # load games into my switch
|
||||
grapejuice # roblox manager
|
||||
(callPackage ../../pkgs/polymc/default.nix { }) # minecraft launcher
|
||||
# minecraft # minecraft official launcher
|
||||
|
||||
# emulators
|
||||
rpcs3 # ps3
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
environment.variables.PYTHONSTARTUP = "\${XDG_CONFIG_HOME}/python/pythonrc";
|
||||
users.users.jawz.packages = with pkgs; [
|
||||
pipenv # python development workflow for humans
|
||||
nodePackages.pyright # LSP
|
||||
pyright # LSP
|
||||
(python3.withPackages (
|
||||
ps: with ps; [
|
||||
black # Python code formatter
|
||||
|
||||
@ -4,8 +4,6 @@ let
|
||||
setup = import ./setup.nix { inherit lib config; };
|
||||
in
|
||||
{
|
||||
disabledModules = [ "services/web-apps/mealie.nix" ];
|
||||
imports = [ ../../pkgs/mealie-service.nix ];
|
||||
options.my.servers.mealie = setup.mkOptions "mealie" "mealie" 9925;
|
||||
config = {
|
||||
networking.firewall.allowedTCPPorts = lib.mkIf (!cfg.isLocal) [ cfg.port ];
|
||||
|
||||
@ -43,7 +43,7 @@ in
|
||||
mediainfo
|
||||
nodejs
|
||||
perl
|
||||
(python3.withPackages (ps: with ps; [ tensorflow ]))
|
||||
(python311.withPackages (ps: with ps; [ tensorflow ]))
|
||||
(perlPackages.buildPerlPackage rec {
|
||||
pname = "Image-ExifTool";
|
||||
version = "12.70";
|
||||
@ -84,7 +84,6 @@ in
|
||||
adminpassFile = config.sops.secrets.nextcloud-adminpass.path;
|
||||
dbtype = "pgsql";
|
||||
dbhost = config.my.postgresSocket;
|
||||
dbtableprefix = "oc_";
|
||||
dbname = "nextcloud";
|
||||
};
|
||||
phpOptions = {
|
||||
@ -134,7 +133,10 @@ in
|
||||
"OC\\Preview\\Movie"
|
||||
];
|
||||
};
|
||||
# phpExtraExtensions = all: [ all.pdlib all.bz2 ];
|
||||
phpExtraExtensions = all: [
|
||||
all.pdlib
|
||||
all.bz2
|
||||
];
|
||||
};
|
||||
nginx.virtualHosts = {
|
||||
"${config.services.nextcloud.hostName}" = lib.mkIf cfg.enableProxy {
|
||||
|
||||
@ -4,8 +4,6 @@ let
|
||||
setup = import ./setup.nix { inherit lib config; };
|
||||
in
|
||||
{
|
||||
disabledModules = [ "services/web-apps/shiori.nix" ];
|
||||
imports = [ ../../pkgs/shiori-service.nix ];
|
||||
options.my.servers.shiori = setup.mkOptions "shiori" "bookmarks" 4368;
|
||||
config = lib.mkIf (config.my.servers.shiori.enable && config.my.servers.postgres.enable) {
|
||||
networking.firewall.allowedTCPPorts = lib.mkIf (!cfg.isLocal) [ cfg.port ];
|
||||
|
||||
@ -10,10 +10,9 @@
|
||||
boot.kernelParams = lib.mkIf (config.networking.hostName == "workstation") [ "nvidia-drm.fbdev=1" ];
|
||||
services.xserver.videoDrivers = [ "nvidia" ];
|
||||
hardware = {
|
||||
opengl = {
|
||||
graphics = {
|
||||
enable = true;
|
||||
driSupport = true;
|
||||
driSupport32Bit = true;
|
||||
enable32Bit = true;
|
||||
extraPackages = with pkgs; [
|
||||
nvidia-vaapi-driver
|
||||
vaapiVdpau
|
||||
|
||||
@ -13,7 +13,7 @@ in
|
||||
{
|
||||
options.my.services.printing.enable = lib.mkEnableOption "enable";
|
||||
config = lib.mkIf config.my.services.printing.enable {
|
||||
users.users.jawz.packages = [ pkgs.gnome.simple-scan ];
|
||||
users.users.jawz.packages = [ pkgs.simple-scan ];
|
||||
services.printing = {
|
||||
enable = true;
|
||||
drivers = printingDrivers;
|
||||
|
||||
@ -10,7 +10,6 @@
|
||||
config = lib.mkIf config.my.services.sound.enable {
|
||||
hardware.pulseaudio.enable = false;
|
||||
security.rtkit.enable = true; # make pipewire realtime-capable
|
||||
sound.enable = false;
|
||||
services.pipewire = {
|
||||
enable = true;
|
||||
alsa.enable = true;
|
||||
|
||||
35
overlay.nix
35
overlay.nix
@ -1,8 +1,4 @@
|
||||
{
|
||||
pkgs,
|
||||
pkgsU,
|
||||
pkgsM,
|
||||
}:
|
||||
{ pkgs, pkgsM }:
|
||||
_self: super: {
|
||||
gnome = super.gnome.overrideScope (
|
||||
_gFinal: gPrev: {
|
||||
@ -19,7 +15,7 @@ _self: super: {
|
||||
});
|
||||
}
|
||||
);
|
||||
lutris = pkgsU.lutris.override {
|
||||
lutris = super.lutris.override {
|
||||
extraPkgs =
|
||||
pkgs: with pkgs; [
|
||||
pango
|
||||
@ -37,33 +33,6 @@ _self: super: {
|
||||
];
|
||||
};
|
||||
inherit (pkgsM) gallery-dl yt-dlp;
|
||||
inherit (pkgsU)
|
||||
planify
|
||||
gdtoolkit_4
|
||||
ns-usbloader
|
||||
collector
|
||||
homepage-dashboard
|
||||
stash
|
||||
kavita
|
||||
mealie
|
||||
shiori
|
||||
bazarr
|
||||
sonarr
|
||||
radarr
|
||||
prowlarr
|
||||
jellyfin
|
||||
jellyfin-ffmpeg
|
||||
pureref
|
||||
;
|
||||
inherit (pkgsU.gnomeExtensions)
|
||||
appindicator
|
||||
reading-strip
|
||||
tactile
|
||||
pano
|
||||
freon
|
||||
gamemode-indicator-in-system-settings
|
||||
burn-my-windows
|
||||
;
|
||||
handbrake = super.handbrake.override { useGtk = true; };
|
||||
discord = super.discord.override { withOpenASAR = true; };
|
||||
ripgrep = super.ripgrep.override { withPCRE2 = true; };
|
||||
|
||||
@ -1,82 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.mealie;
|
||||
pkg = cfg.package;
|
||||
in
|
||||
{
|
||||
options.services.mealie = {
|
||||
enable = lib.mkEnableOption "Mealie, a recipe manager and meal planner";
|
||||
|
||||
package = lib.mkPackageOption pkgs "mealie" { };
|
||||
|
||||
listenAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "0.0.0.0";
|
||||
description = "Address on which the service should listen.";
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 9000;
|
||||
description = "Port on which to serve the Mealie service.";
|
||||
};
|
||||
|
||||
settings = lib.mkOption {
|
||||
type = with lib.types; attrsOf anything;
|
||||
default = { };
|
||||
description = ''
|
||||
Configuration of the Mealie service.
|
||||
|
||||
See [the mealie documentation](https://nightly.mealie.io/documentation/getting-started/installation/backend-config/) for available options and default values.
|
||||
'';
|
||||
example = {
|
||||
ALLOW_SIGNUP = "false";
|
||||
};
|
||||
};
|
||||
|
||||
credentialsFile = lib.mkOption {
|
||||
type = with lib.types; nullOr path;
|
||||
default = null;
|
||||
example = "/run/secrets/mealie-credentials.env";
|
||||
description = ''
|
||||
File containing credentials used in mealie such as {env}`POSTGRES_PASSWORD`
|
||||
or sensitive LDAP options.
|
||||
|
||||
Expects the format of an `EnvironmentFile=`, as described by {manpage}`systemd.exec(5)`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.mealie = {
|
||||
description = "Mealie, a self hosted recipe manager and meal planner";
|
||||
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
environment = {
|
||||
PRODUCTION = "true";
|
||||
API_PORT = toString cfg.port;
|
||||
BASE_URL = "http://localhost:${toString cfg.port}";
|
||||
DATA_DIR = "/var/lib/mealie";
|
||||
CRF_MODEL_PATH = "/var/lib/mealie/model.crfmodel";
|
||||
} // (builtins.mapAttrs (_: toString) cfg.settings);
|
||||
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
User = "mealie";
|
||||
ExecStartPre = "${pkg}/libexec/init_db";
|
||||
ExecStart = "${lib.getExe pkg} -b ${cfg.listenAddress}:${builtins.toString cfg.port}";
|
||||
EnvironmentFile = lib.mkIf (cfg.credentialsFile != null) cfg.credentialsFile;
|
||||
StateDirectory = "mealie";
|
||||
StandardOutput = "journal";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@ -1,61 +0,0 @@
|
||||
{
|
||||
pkgs,
|
||||
lib,
|
||||
config,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.programs.obs-studio;
|
||||
in
|
||||
{
|
||||
options.programs.obs-studio = {
|
||||
enable = lib.mkEnableOption (lib.mdDoc "obs-studio");
|
||||
|
||||
package = lib.mkPackageOption pkgs "obs-studio" { example = "obs-studio"; };
|
||||
|
||||
finalPackage = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
visible = false;
|
||||
readOnly = true;
|
||||
description = "Resulting customized OBS Studio package.";
|
||||
};
|
||||
|
||||
plugins = lib.mkOption {
|
||||
default = [ ];
|
||||
example = lib.literalExpression "[ pkgs.obs-studio-plugins.wlrobs ]";
|
||||
description = "Optional OBS plugins.";
|
||||
type = lib.types.listOf lib.types.package;
|
||||
};
|
||||
|
||||
enableVirtualCamera = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Installs and sets up the v4l2loopback kernel module, necessary for OBS
|
||||
to start a virtual camera.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
programs.obs-studio.finalPackage = pkgs.wrapOBS.override { obs-studio = cfg.package; } {
|
||||
inherit (cfg) plugins;
|
||||
};
|
||||
|
||||
environment.systemPackages = [ cfg.finalPackage ];
|
||||
|
||||
boot = lib.mkIf cfg.enableVirtualCamera {
|
||||
kernelModules = [ "v4l2loopback" ];
|
||||
extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ];
|
||||
|
||||
extraModprobeConfig = ''
|
||||
options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1
|
||||
'';
|
||||
};
|
||||
|
||||
security.polkit.enable = lib.mkIf cfg.enableVirtualCamera true;
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ CaptainJawZ ];
|
||||
}
|
||||
@ -1,146 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.shiori;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.shiori = {
|
||||
enable = lib.mkEnableOption "Shiori simple bookmarks manager";
|
||||
|
||||
package = lib.mkPackageOption pkgs "shiori" { };
|
||||
|
||||
address = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
The IP address on which Shiori will listen.
|
||||
If empty, listens on all interfaces.
|
||||
'';
|
||||
};
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 8080;
|
||||
description = "The port of the Shiori web application";
|
||||
};
|
||||
|
||||
webRoot = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "/";
|
||||
example = "/shiori";
|
||||
description = "The root of the Shiori web application";
|
||||
};
|
||||
|
||||
environmentFile = lib.mkOption {
|
||||
type = lib.types.null or lib.types.path;
|
||||
default = null;
|
||||
example = "/path/to/environmentFile";
|
||||
description = ''
|
||||
Path to file containing environment variables.
|
||||
Useful for passing down secrets.
|
||||
<https://github.com/go-shiori/shiori/blob/master/docs/Configuration.md#overall-configuration>
|
||||
'';
|
||||
};
|
||||
|
||||
databaseUrl = lib.mkOption {
|
||||
type = lib.types.null or lib.types.str;
|
||||
default = null;
|
||||
example = "postgresql:///shiori?host=/run/postgresql";
|
||||
description = "The connection URL to connect to MySQL or PostgreSQL";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.shiori = {
|
||||
description = "Shiori simple bookmarks manager";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [
|
||||
"postgresql.service"
|
||||
"mysql.service"
|
||||
];
|
||||
environment = {
|
||||
SHIORI_DIR = "/var/lib/shiori";
|
||||
} // lib.optionalAttrs (cfg.databaseUrl != null) { SHIORI_DATABASE_URL = cfg.databaseUrl; };
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/shiori server --address '${cfg.address}' --port '${toString cfg.port}' --webroot '${cfg.webRoot}'";
|
||||
|
||||
DynamicUser = true;
|
||||
StateDirectory = "shiori";
|
||||
# As the RootDirectory
|
||||
RuntimeDirectory = "shiori";
|
||||
|
||||
# Security options
|
||||
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
|
||||
BindReadOnlyPaths =
|
||||
[
|
||||
"/nix/store"
|
||||
|
||||
# For SSL certificates, and the resolv.conf
|
||||
"/etc"
|
||||
]
|
||||
++ lib.optional (
|
||||
lib.strings.hasInfix "postgres" cfg.databaseUrl && config.services.postgresql.enable
|
||||
) "/run/postgresql"
|
||||
++ lib.optional (
|
||||
lib.strings.hasInfix "mysql" cfg.databaseUrl && config.services.mysql.enable
|
||||
) "/var/run/mysqld";
|
||||
|
||||
CapabilityBoundingSet = "";
|
||||
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
|
||||
|
||||
DeviceAllow = "";
|
||||
|
||||
LockPersonality = true;
|
||||
|
||||
MemoryDenyWriteExecute = true;
|
||||
|
||||
PrivateDevices = true;
|
||||
PrivateUsers = true;
|
||||
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
|
||||
RestrictNamespaces = true;
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
"AF_UNIX"
|
||||
];
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
|
||||
RootDirectory = "/run/shiori";
|
||||
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallErrorNumber = "EPERM";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@cpu-emulation"
|
||||
"~@debug"
|
||||
"~@keyring"
|
||||
"~@memlock"
|
||||
"~@obsolete"
|
||||
"~@privileged"
|
||||
"~@setuid"
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
minijackson
|
||||
CaptainJawZ
|
||||
];
|
||||
}
|
||||
@ -1,47 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.stash;
|
||||
in
|
||||
{
|
||||
options = {
|
||||
services.stash = {
|
||||
enable = lib.mkEnableOption "Stash";
|
||||
|
||||
package = lib.mkPackageOption pkgs "stash" { };
|
||||
|
||||
# port = lib.mkOption {
|
||||
# type = lib.types.port;
|
||||
# default = 8080;
|
||||
# description = "The port of the Stash web application";
|
||||
# };
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.stash = {
|
||||
description = "Stash";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
# environment = {
|
||||
# STASH_DIR = "/var/lib/stash";
|
||||
# } // lib.optionalAttrs (cfg.databaseUrl != null) {
|
||||
# STASH_DATABASE_URL = cfg.databaseUrl;
|
||||
# };
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${cfg.package}/bin/stash server --address '${cfg.address}' --port '${toString cfg.port}' --webroot '${cfg.webRoot}'";
|
||||
|
||||
EnvironmentFile = lib.optional (cfg.environmentFile != null) cfg.environmentFile;
|
||||
|
||||
RootDirectory = "/var/lib/stash";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ CaptainJawZ ];
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user