same as the previous but for workstation
This commit is contained in:
parent
1afa685154
commit
807abf1122
@ -54,8 +54,6 @@ let
|
|||||||
(builtins.fetchTarball "https://github.com/nixos/nixpkgs/tarball/master") {
|
(builtins.fetchTarball "https://github.com/nixos/nixpkgs/tarball/master") {
|
||||||
config = config.nixpkgs.config;
|
config = config.nixpkgs.config;
|
||||||
};
|
};
|
||||||
nixGaming = import
|
|
||||||
(builtins.fetchTarball "https://github.com/fufexan/nix-gaming/archive/master.tar.gz");
|
|
||||||
jawzManageLibrary = pkgs.writeScriptBin
|
jawzManageLibrary = pkgs.writeScriptBin
|
||||||
"manage-library" (builtins.readFile ./scripts/manage-library.sh);
|
"manage-library" (builtins.readFile ./scripts/manage-library.sh);
|
||||||
jawzTasks = pkgs.writeScriptBin
|
jawzTasks = pkgs.writeScriptBin
|
||||||
@ -76,7 +74,6 @@ imports = [
|
|||||||
# ./openldap.nix
|
# ./openldap.nix
|
||||||
# <agenix/modules/age.nix>
|
# <agenix/modules/age.nix>
|
||||||
(import "${home-manager}/nixos")
|
(import "${home-manager}/nixos")
|
||||||
nixGaming.nixosModules.pipewireLowLatency
|
|
||||||
];
|
];
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -93,6 +90,28 @@ Pick *ONLY ONE* of the below networking options.
|
|||||||
networking = {
|
networking = {
|
||||||
hostName = "workstation";
|
hostName = "workstation";
|
||||||
networkmanager.enable = true;
|
networkmanager.enable = true;
|
||||||
|
extraHosts = ''
|
||||||
|
192.168.1.64 battlestation
|
||||||
|
'';
|
||||||
|
firewall = let
|
||||||
|
open_firewall_ports = [
|
||||||
|
6969 # HentaiAtHome
|
||||||
|
25152 # ssh
|
||||||
|
51413 # torrent sedding
|
||||||
|
9091 # qbittorrent
|
||||||
|
2049 # nfs
|
||||||
|
];
|
||||||
|
open_firewall_port_ranges = [
|
||||||
|
{ from = 1714; to = 1764; } # kdeconnect
|
||||||
|
];
|
||||||
|
in
|
||||||
|
{
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = open_firewall_ports;
|
||||||
|
allowedUDPPorts = open_firewall_ports;
|
||||||
|
allowedTCPPortRanges = open_firewall_port_ranges;
|
||||||
|
allowedUDPPortRanges = open_firewall_port_ranges;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@ -130,38 +149,12 @@ undesirable packages from installing.
|
|||||||
services = {
|
services = {
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
enable = true;
|
||||||
displayManager.gdm.enable = true;
|
# displayManager.gdm.enable = true;
|
||||||
desktopManager.gnome.enable = true;
|
# desktopManager.gnome.enable = true;
|
||||||
layout = "us";
|
layout = "us";
|
||||||
libinput.enable = true; # Wacom required?
|
libinput.enable = true; # Wacom required?
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.gnome.excludePackages = (with pkgs; [
|
|
||||||
gnome-photos
|
|
||||||
gnome-tour
|
|
||||||
gnome-text-editor
|
|
||||||
gnome-connections
|
|
||||||
# gnome-shell-extensions
|
|
||||||
baobab
|
|
||||||
])
|
|
||||||
++ (with pkgs.gnome; [
|
|
||||||
# totem
|
|
||||||
gedit
|
|
||||||
gnome-music
|
|
||||||
epiphany
|
|
||||||
gnome-characters
|
|
||||||
yelp
|
|
||||||
gnome-font-viewer
|
|
||||||
cheese
|
|
||||||
]);
|
|
||||||
|
|
||||||
# Sets up QT to use adwaita themes.
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme = "gnome";
|
|
||||||
style = "adwaita";
|
|
||||||
};
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* SOUND
|
* SOUND
|
||||||
@ -172,17 +165,17 @@ latency will require expanding these settings.
|
|||||||
#+begin_src nix
|
#+begin_src nix
|
||||||
hardware.pulseaudio.enable = false;
|
hardware.pulseaudio.enable = false;
|
||||||
sound.enable = false;
|
sound.enable = false;
|
||||||
services.pipewire = {
|
# services.pipewire = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
alsa.enable = true;
|
# alsa.enable = true;
|
||||||
alsa.support32Bit = true;
|
# alsa.support32Bit = true;
|
||||||
pulse.enable = true;
|
# pulse.enable = true;
|
||||||
lowLatency = {
|
# lowLatency = {
|
||||||
enable = true;
|
# enable = true;
|
||||||
quantum = 64;
|
# quantum = 64;
|
||||||
rate = 48000;
|
# rate = 48000;
|
||||||
};
|
# };
|
||||||
};
|
# };
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* SECURITY
|
* SECURITY
|
||||||
@ -240,114 +233,6 @@ Begin the block to install user packages.
|
|||||||
packages = (with pkgs; [
|
packages = (with pkgs; [
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** GUI PACKAGES
|
|
||||||
All of my GUI applications categorized to make it easier to identify what each
|
|
||||||
application does, and the justification for is existence on my system.
|
|
||||||
|
|
||||||
*** ART AND DEVELOPMENT
|
|
||||||
Art and development applications are together, as a game-developer one of my
|
|
||||||
goals is to create a workflow between this ecosystem of applications.
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
blender # cgi animation and sculpting
|
|
||||||
godot # game development
|
|
||||||
gdtoolkit # gdscript language server
|
|
||||||
krita # art to your heart desire!
|
|
||||||
# drawpile # arty party with friends!!
|
|
||||||
mypaint # not the best art program
|
|
||||||
mypaint-brushes # but it's got some
|
|
||||||
mypaint-brushes1 # nice damn brushes
|
|
||||||
pureref # create inspiration/reference boards
|
|
||||||
gimp # the coolest bestest art program to never exist
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** GAMING
|
|
||||||
So far gaming has been a lot less painful than I could have originally
|
|
||||||
anticipated, most everything seems to run seamlessly.
|
|
||||||
=note= Roblox uninstalled as there is ongoing drama regarding linux users.
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
lutris
|
|
||||||
heroic
|
|
||||||
wine64Packages.stable
|
|
||||||
wineWowPackages.stable
|
|
||||||
winetricks
|
|
||||||
vulkan-tools
|
|
||||||
# nixGaming.packages.${pkgs.hostPlatform.system}.wine-tkg
|
|
||||||
# nixGaming.packages.${pkgs.hostPlatform.system}.wine-discord-ipc-bridge
|
|
||||||
# grapejuice # roblox manager
|
|
||||||
minecraft # minecraft official launcher
|
|
||||||
parsec-bin # remote gaming with friends
|
|
||||||
protonup-qt # update proton-ge
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** PRODUCTIVITY
|
|
||||||
This is the section where the apps that help me be productive come, a lot of
|
|
||||||
this are not used as often as I wish…
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
libreoffice-fresh # office, but based
|
|
||||||
calibre # ugly af eBook library manager
|
|
||||||
foliate # gtk eBook reader
|
|
||||||
newsflash # feed reader, syncs with nextcloud
|
|
||||||
wike # gtk wikipedia wow!
|
|
||||||
unstable.furtherance # I made this one tehee track time utility
|
|
||||||
gnome.simple-scan # scanner
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** MISC
|
|
||||||
Most of these apps, are part of the gnome circle, and I decide to install them
|
|
||||||
if just for a try and play a little.
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
# sequeler # friendly SQL client
|
|
||||||
blanket # background noise
|
|
||||||
# czkawka # duplicate finder
|
|
||||||
pika-backup # backups
|
|
||||||
gnome-obfuscate # censor private information
|
|
||||||
metadata-cleaner # remove any metadata and geolocation from files
|
|
||||||
gnome-recipes # migrate these to mealie and delete
|
|
||||||
denaro # manage your finances
|
|
||||||
# celeste # sync tool for any cloud provider
|
|
||||||
libgda # for pano shell extension
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** MULTIMEDIA
|
|
||||||
Overwhelmingly player applications, used for videos and music, while most of my
|
|
||||||
consumption has moved towards jellyfin, it's still worth the install of most
|
|
||||||
of these, for now.
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
celluloid # video player
|
|
||||||
cozy # audiobooks player
|
|
||||||
gnome-podcasts # podcast player
|
|
||||||
handbrake # video converter, may be unnecessary
|
|
||||||
curtail # image compressor
|
|
||||||
pitivi # video editor
|
|
||||||
identity # compare images or videos
|
|
||||||
mousai # poor man shazam
|
|
||||||
tagger # tag music files
|
|
||||||
bottles # wine prefix manager
|
|
||||||
obs-studio # screen recorder & streamer
|
|
||||||
shortwave # listen to world radio
|
|
||||||
nextcloud-client # self-hosted google-drive alternative
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** WEB
|
|
||||||
Stuff that I use to interact with the web, web browsers, chats, download
|
|
||||||
managers, etc.
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
firefox # web browser that allows to disable spyware
|
|
||||||
tor-browser-bundle-bin # dark web, so dark!
|
|
||||||
ungoogled-chromium # web browser with spyware included
|
|
||||||
discord # chat
|
|
||||||
telegram-desktop # furry chat
|
|
||||||
# hugo # website engine
|
|
||||||
nicotine-plus # remember Ares?
|
|
||||||
warp # never used, but supposedly cool for sharing files
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** COMMAND-LINE PACKAGES
|
** COMMAND-LINE PACKAGES
|
||||||
|
|
||||||
#+begin_src nix
|
#+begin_src nix
|
||||||
@ -376,8 +261,8 @@ jawzTasks
|
|||||||
(writeScriptBin "ffmpreg" (builtins.readFile ./scripts/ffmpreg.sh))
|
(writeScriptBin "ffmpreg" (builtins.readFile ./scripts/ffmpreg.sh))
|
||||||
(writeScriptBin "chat-dl" (builtins.readFile ./scripts/chat-dl.sh))
|
(writeScriptBin "chat-dl" (builtins.readFile ./scripts/chat-dl.sh))
|
||||||
(writeScriptBin "split-dir" (builtins.readFile ./scripts/split-dir.sh))
|
(writeScriptBin "split-dir" (builtins.readFile ./scripts/split-dir.sh))
|
||||||
(writeScriptBin "pika-list" (builtins.readFile ./scripts/pika-list.sh))
|
# (writeScriptBin "pika-list" (builtins.readFile ./scripts/pika-list.sh))
|
||||||
(writeScriptBin "run" (builtins.readFile ./scripts/run.sh))
|
# (writeScriptBin "run" (builtins.readFile ./scripts/run.sh))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** DEVELOPMENT PACKAGES
|
** DEVELOPMENT PACKAGES
|
||||||
@ -438,12 +323,6 @@ Themes and other customization, making my DE look the way I want is one of the
|
|||||||
main draws of Linux for me.
|
main draws of Linux for me.
|
||||||
|
|
||||||
#+begin_src nix
|
#+begin_src nix
|
||||||
# Themes
|
|
||||||
adw-gtk3
|
|
||||||
# gradience # theme customizer, allows you to modify adw-gtk3 themes
|
|
||||||
gnome.gnome-tweaks # tweaks for the gnome desktop environment
|
|
||||||
qgnomeplatform
|
|
||||||
|
|
||||||
# Fonts
|
# Fonts
|
||||||
(nerdfonts.override {
|
(nerdfonts.override {
|
||||||
fonts = [ "Agave" "CascadiaCode" "SourceCodePro"
|
fonts = [ "Agave" "CascadiaCode" "SourceCodePro"
|
||||||
@ -515,23 +394,6 @@ symbola
|
|||||||
prettybat # trans your sourcecode!
|
prettybat # trans your sourcecode!
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** GNOME EXTENSIONS
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
]) ++ (with pkgs.gnomeExtensions; [
|
|
||||||
appindicator # applets for open applications
|
|
||||||
gsconnect # sync data and notifications from your phone
|
|
||||||
freon # hardware temperature monitor
|
|
||||||
panel-scroll # scroll well to change workspaces
|
|
||||||
reading-strip # like putting a finger on every line I read
|
|
||||||
tactile # window manager
|
|
||||||
pano # clipboard manager
|
|
||||||
blur-my-shell # make the overview more visually appealing
|
|
||||||
# burn-my-windows
|
|
||||||
# forge # window manager
|
|
||||||
# ]) ++ (with unstable.pkgs.gnomeExtensions; [
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** NODEJS PACKAGES
|
** NODEJS PACKAGES
|
||||||
|
|
||||||
#+begin_src nix
|
#+begin_src nix
|
||||||
@ -611,9 +473,8 @@ if command -v fzf-share >/dev/null; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
nixos-reload () {
|
nixos-reload () {
|
||||||
nix-store --add-fixed sha256 /home/jawz/Development/NixOS/scripts/PureRef-1.11.1_x64.Appimage
|
nixfmt /home/jawz/Development/NixOS/workstation/*.nix
|
||||||
nixfmt /home/jawz/Development/NixOS/*.nix
|
sudo nixos-rebuild switch -I nixos-config=/home/jawz/Development/NixOS/workstation/configuration.nix
|
||||||
sudo nixos-rebuild switch -I nixos-config=/home/jawz/Development/NixOS/configuration.nix
|
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
#+begin_src nix
|
#+begin_src nix
|
||||||
@ -826,14 +687,6 @@ programs = {
|
|||||||
enable = true;
|
enable = true;
|
||||||
enableSSHSupport = true;
|
enableSSHSupport = true;
|
||||||
};
|
};
|
||||||
geary = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
steam = {
|
|
||||||
enable = true;
|
|
||||||
remotePlay.openFirewall = true;
|
|
||||||
dedicatedServer.openFirewall = true;
|
|
||||||
};
|
|
||||||
msmtp = {
|
msmtp = {
|
||||||
enable = true;
|
enable = true;
|
||||||
accounts.default = {
|
accounts.default = {
|
||||||
@ -916,7 +769,7 @@ systemd = {
|
|||||||
user = {
|
user = {
|
||||||
services = {
|
services = {
|
||||||
HentaiAtHome = {
|
HentaiAtHome = {
|
||||||
enable = false;
|
enable = true;
|
||||||
restartIfChanged = true;
|
restartIfChanged = true;
|
||||||
description = "Run hentai@home server";
|
description = "Run hentai@home server";
|
||||||
wantedBy = [ "default.target" ];
|
wantedBy = [ "default.target" ];
|
||||||
@ -1006,32 +859,6 @@ systemd = {
|
|||||||
};
|
};
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* FIREWALL
|
|
||||||
Open ports in the firewall.
|
|
||||||
=TIP= list what app a port belongs to in a table.
|
|
||||||
|
|
||||||
#+begin_src nix
|
|
||||||
networking = {
|
|
||||||
firewall = let
|
|
||||||
open_firewall_ports = [
|
|
||||||
6969 # HentaiAtHome
|
|
||||||
25152 # ssh
|
|
||||||
51413 # torrent
|
|
||||||
];
|
|
||||||
open_firewall_port_ranges = [
|
|
||||||
{ from = 1714; to = 1764; } # kdeconnect
|
|
||||||
];
|
|
||||||
in
|
|
||||||
{
|
|
||||||
enable = true;
|
|
||||||
allowedTCPPorts = open_firewall_ports;
|
|
||||||
allowedUDPPorts = open_firewall_ports;
|
|
||||||
allowedTCPPortRanges = open_firewall_port_ranges;
|
|
||||||
allowedUDPPortRanges = open_firewall_port_ranges;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* MISC SETTINGS
|
* MISC SETTINGS
|
||||||
** ENABLE FONTCONFIG
|
** ENABLE FONTCONFIG
|
||||||
If enabled, a Fontconfig configuration file will point to a set of default
|
If enabled, a Fontconfig configuration file will point to a set of default
|
||||||
@ -1045,6 +872,39 @@ setting.
|
|||||||
fonts.fontconfig.enable = true;
|
fonts.fontconfig.enable = true;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** NFS
|
||||||
|
#+begin_src nix
|
||||||
|
fileSystems = {
|
||||||
|
"/export/disk1" = {
|
||||||
|
device = "/mnt/disk1";
|
||||||
|
options = ["bind"];
|
||||||
|
};
|
||||||
|
"/export/disk2" = {
|
||||||
|
device = "/mnt/disk2";
|
||||||
|
options = ["bind"];
|
||||||
|
};
|
||||||
|
"/export/seedbox" = {
|
||||||
|
device = "/mnt/seedbox";
|
||||||
|
options = ["bind"];
|
||||||
|
};
|
||||||
|
"/export/jawz" = {
|
||||||
|
device = "/home/jawz";
|
||||||
|
options = ["bind"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
services.nfs = {
|
||||||
|
server = {
|
||||||
|
enable = true;
|
||||||
|
exports = ''
|
||||||
|
/export 192.168.1.64(rw,fsid=0,no_subtree_check)
|
||||||
|
/export/disk1 192.168.1.64(rw,nohide,insecure,no_subtree_check)
|
||||||
|
/export/disk2 192.168.1.64(rw,nohide,insecure,no_subtree_check)
|
||||||
|
/export/seedbox 192.168.1.64(rw,nohide,insecure,no_subtree_check)
|
||||||
|
/export/jawz 192.168.1.64(rw,nohide,insecure,no_subtree_check)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#+end_src
|
||||||
* FINAL SYSTEM CONFIGURATIONS
|
* FINAL SYSTEM CONFIGURATIONS
|
||||||
The first setting creates a copy the NixOS configuration file and link it from
|
The first setting creates a copy the NixOS configuration file and link it from
|
||||||
the resulting system (/run/current-system/configuration.nix). This is useful in
|
the resulting system (/run/current-system/configuration.nix). This is useful in
|
||||||
|
|||||||
@ -6,7 +6,9 @@
|
|||||||
|
|
||||||
let
|
let
|
||||||
localhost = "127.0.0.1";
|
localhost = "127.0.0.1";
|
||||||
|
battlestation = "192.168.1.64";
|
||||||
jellyfinPort = "8096";
|
jellyfinPort = "8096";
|
||||||
|
gptPort = "7860";
|
||||||
nextcloudPort = 80;
|
nextcloudPort = 80;
|
||||||
searxPort = 8080;
|
searxPort = 8080;
|
||||||
newflixPort = 8897;
|
newflixPort = 8897;
|
||||||
@ -108,6 +110,13 @@ in {
|
|||||||
"vault.servidos.lat" = proxy vaultPort // { };
|
"vault.servidos.lat" = proxy vaultPort // { };
|
||||||
"searx.servidos.lat" = proxy searxPort // { };
|
"searx.servidos.lat" = proxy searxPort // { };
|
||||||
"qampqwn4wprhqny8h8zj.servidos.lat" = proxy secretFlamePort // { };
|
"qampqwn4wprhqny8h8zj.servidos.lat" = proxy secretFlamePort // { };
|
||||||
|
"6fxAtnPxEeI8hN.servidos.lat" = {
|
||||||
|
forceSSL = true;
|
||||||
|
enableACME = true;
|
||||||
|
locations = {
|
||||||
|
"/" = { proxyPass = "http://${battlestation}:${gptPort}"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
"flix.servidos.lat" = {
|
"flix.servidos.lat" = {
|
||||||
forceSSL = true;
|
forceSSL = true;
|
||||||
enableACME = true;
|
enableACME = true;
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
# for a domain to your external IP address
|
# for a domain to your external IP address
|
||||||
|
|
||||||
# namecheap
|
# namecheap
|
||||||
hostnames=(cloud @)
|
hostnames=(cloud @ 6fxAtnPxEeI8hN)
|
||||||
domain=rotehaare.art
|
domain=rotehaare.art
|
||||||
password=60d672be5d9d4828a0f96264babe0ac1
|
password=60d672be5d9d4828a0f96264babe0ac1
|
||||||
|
|
||||||
|
|||||||
@ -252,4 +252,13 @@ in {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
networking = {
|
||||||
|
firewall = let open_firewall_ports = [ config.services.paperless.port ];
|
||||||
|
in {
|
||||||
|
enable = true;
|
||||||
|
allowedTCPPorts = open_firewall_ports;
|
||||||
|
allowedUDPPorts = open_firewall_ports;
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user