diff --git a/wlin003_GamingPC/packages/appimage.nix b/wlin003_GamingPC/packages/appimage.nix new file mode 100644 index 0000000..55fb741 --- /dev/null +++ b/wlin003_GamingPC/packages/appimage.nix @@ -0,0 +1,16 @@ +{ config, pkgs, ... }: + +{ + boot.binfmt = { + registrations.appimage = { + wrapInterpreterInShell = false; + interpreter = "${pkgs.appimage-run}/bin/appimage-run"; + recognitionType = "magic"; + offset = 0; + mask = "\\xff\\xff\\xff\\xff\\x00\\x00\\x00\\x00\\xff\\xff\\xff"; + magicOrExtension = "\\x7fELF....AI\\x02"; + }; + # run aarch64 binaries + emulatedSystems = [ "aarch64-linux" ]; + }; +} diff --git a/wlin003_GamingPC/packages/cinnamon.nix b/wlin003_GamingPC/packages/cinnamon.nix new file mode 100644 index 0000000..97e6cbc --- /dev/null +++ b/wlin003_GamingPC/packages/cinnamon.nix @@ -0,0 +1,106 @@ +{ config, pkgs, ... }: + +{ + + services = { + # Enable the X11 windowing system + xserver = { + enable = true; + xkb.layout = "de"; + xkb.variant = ""; + xkb.options = "eurosign:e"; + exportConfiguration = true; + enableCtrlAltBackspace = true; + #wacom.enable = true; + + # Enable Lightdm + displayManager = { + lightdm.enable = true; + lightdm.background = /etc/nixos/home/wallpaper/5120x2880.jpg; + lightdm.greeters.slick.theme.name = "Arc-Dark"; + lightdm.greeters.slick.iconTheme.name = "Papirus-Dark"; + lightdm.greeters.slick.cursorTheme.name = "Numix-Cursor"; + lightdm.greeters.slick.extraConfig = "activate-numlock=true"; + }; + + # Enable the Cinnamon Desktop Environment + desktopManager = { + xterm.enable = false; + cinnamon.enable = true; + }; + }; + + displayManager.defaultSession = "cinnamon"; + #bamf.enable = true; + libinput.enable = false; + }; + + # Enable Programs + programs = { + dconf.enable = true; + geary.enable = false; + system-config-printer.enable = true; + }; + + # Enable xdg portal + xdg.portal = { + enable = true; + extraPortals = [ pkgs.xdg-desktop-portal-xapp ]; + }; + + # Environment variables + environment.variables = { + EDITOR = "nano"; + BROWSER = "firefox"; + QT_QPA_PLATFORM = "xcb"; + #QT_QPA_PLATFORMTHEME = lib.mkForce "qt5ct"; + }; + + environment.sessionVariables = rec { + XDG_CACHE_HOME = "$HOME/.cache"; + XDG_CONFIG_HOME = "$HOME/.config"; + XDG_DATA_HOME = "$HOME/.local/share"; + XDG_STATE_HOME = "$HOME/.local/state"; + XDG_BIN_HOME = "$HOME/.local/bin"; + PATH = [ + "${XDG_BIN_HOME}" + ]; + }; + + environment.systemPackages = with pkgs; [ + conky + clipit + nemo-emblems + nemo-with-extensions + nemo-fileroller + nemo-python + bulky + file-roller + gnome-system-monitor + gnome-disk-utility + tilda + system-config-printer + # plank + numlockx + ]; + + environment.cinnamon.excludePackages = with pkgs; [ + #nemo + onboard + hexchat + xterm + ]; + + networking.firewall = { + allowedTCPPorts = [ + 42000 # Warpinator used for transfer + 42001 # Warpinator authentication port + ]; + + allowedUDPPorts = [ + 42000 # Warpinator used for transfer + 42001 # Warpinator authentication port + ]; + }; + +} diff --git a/wlin003_GamingPC/packages/default.nix b/wlin003_GamingPC/packages/default.nix new file mode 100644 index 0000000..d100a1c --- /dev/null +++ b/wlin003_GamingPC/packages/default.nix @@ -0,0 +1,17 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ./appimage.nix + ./cinnamon.nix + ./distrobox.nix + ./firefox.nix + ./flatpak.nix + #./mpd.nix + ./nix-ld.nix + ./steam.nix + ./syncthing.nix + ./packages.nix + ./home-manager.nix + ]; +} diff --git a/wlin003_GamingPC/packages/distrobox.nix b/wlin003_GamingPC/packages/distrobox.nix new file mode 100644 index 0000000..f7022b3 --- /dev/null +++ b/wlin003_GamingPC/packages/distrobox.nix @@ -0,0 +1,13 @@ +{ config, pkgs, ... }: + +{ + + virtualisation.docker.enable = true; + users.users.zulumann.extraGroups = [ "docker" ]; + + environment.systemPackages = with pkgs; [ + distrobox # Wrapper around podman or docker to create and start containers + boxbuddy # An unofficial GUI for managing your Distroboxes + ]; + +} diff --git a/wlin003_GamingPC/packages/firefox.nix b/wlin003_GamingPC/packages/firefox.nix new file mode 100644 index 0000000..c7bc126 --- /dev/null +++ b/wlin003_GamingPC/packages/firefox.nix @@ -0,0 +1,196 @@ +{ config, pkgs, ... }: + +{ + programs.firefox = { + enable = true; + languagePacks = [ "de" ]; + preferences = { + "extensions.pocket.enabled" = false; + "extensions.screenshots.disabled" = false; + "browser.topsites.contile.enabled" = false; + "browser.formfill.enable" = false; + "browser.search.suggest.enabled" = false; + "browser.search.suggest.enabled.private" = false; + "browser.urlbar.suggest.searches" = false; + "browser.urlbar.showSearchSuggestionsFirst" = false; + "browser.newtabpage.activity-stream.feeds.section.topstories" = false; + "browser.newtabpage.activity-stream.feeds.snippets" = false; + "browser.newtabpage.activity-stream.section.highlights.includePocket" = false; + "browser.newtabpage.activity-stream.section.highlights.includeBookmarks" = false; + "browser.newtabpage.activity-stream.section.highlights.includeDownloads" = false; + "browser.newtabpage.activity-stream.section.highlights.includeVisited" = false; + "browser.newtabpage.activity-stream.showSponsored" = false; + "browser.newtabpage.activity-stream.system.showSponsored" = false; + "browser.newtabpage.activity-stream.showSponsoredTopSites" = false; + }; + + policies = { + CaptivePortal = false; + DisableFirefoxAccounts = false; + DisableAccounts = false; + DisableFirefoxScreenshots = true; + DisableTelemetry = true; + DisableFirefoxStudies = true; + DisablePocket = true; + DontCheckDefaultBrowser = true; + PasswordManagerEnabled = false; + OverrideFirstRunPage = ""; + OverridePostUpdatePage = ""; + DisplayBookmarksToolbar = "always"; # alternatives: "always" or "newtab" + DisplayMenuBar = "default-off"; # alternatives: "always", "never" or "default-on" + SearchBar = "separate"; # alternative: "unified" + + EnableTrackingProtection = { + Value= true; + Locked = true; + Cryptomining = true; + Fingerprinting = true; + }; + + FirefoxHome = { + Highlights = false; + Pocket = false; + Search = true; + Snippets = false; + TopSites = false; + }; + + settings = { + "browser.download.panel.shown" = true; + "dom.security.https_only_mode" = true; + "general.smoothScroll" = true; + "gfx.webrender.enabled" = true; + "layout.css.backdrop-filter.enabled" = true; + "media.videocontrols.picture-in-picture.video-toggle.enabled" = false; + "signon.rememberSignons" = false; + "svg.context-properties.content.enabled" = true; + + # We handle this elsewhere + "browser.shell.checkDefaultBrowser" = false; + + # Don't allow websites to prevent use of right-click, or otherwise + # messing with the context menu. + "dom.event.contextmenu.enabled" = true; + + # Don't allow websites to prevent copy and paste. Disable + # notifications of copy, paste, or cut functions. Stop webpage + # knowing which part of the page had been selected. + "dom.event.clipboardevents.enabled" = true; + + # Do not track from battery status. + "dom.battery.enabled" = false; + + # Show punycode. Help protect from character 'spoofing'. + "network.IDN_show_punycode" = true; + + # Disable site reading installed plugins. + "plugins.enumerable_names" = ""; + + # Use Mozilla instead of Google here. + "geo.provider.network.url" = + "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%"; + + # Safe browsing + "browser.safebrowsing.enabled" = false; + "browser.safebrowsing.phishing.enabled" = false; + "browser.safebrowsing.malware.enabled" = false; + "browser.safebrowsing.downloads.enabled" = false; + "browser.safebrowsing.provider.google4.updateURL" = ""; + "browser.safebrowsing.provider.google4.reportURL" = ""; + "browser.safebrowsing.provider.google4.reportPhishMistakeURL" = ""; + "browser.safebrowsing.provider.google4.reportMalwareMistakeURL" = ""; + "browser.safebrowsing.provider.google4.lists" = ""; + "browser.safebrowsing.provider.google4.gethashURL" = ""; + "browser.safebrowsing.provider.google4.dataSharingURL" = ""; + "browser.safebrowsing.provider.google4.dataSharing.enabled" = false; + "browser.safebrowsing.provider.google4.advisoryURL" = ""; + "browser.safebrowsing.provider.google4.advisoryName" = ""; + "browser.safebrowsing.provider.google.updateURL" = ""; + "browser.safebrowsing.provider.google.reportURL" = ""; + "browser.safebrowsing.provider.google.reportPhishMistakeURL" = ""; + "browser.safebrowsing.provider.google.reportMalwareMistakeURL" = ""; + "browser.safebrowsing.provider.google.pver" = ""; + "browser.safebrowsing.provider.google.lists" = ""; + "browser.safebrowsing.provider.google.gethashURL" = ""; + "browser.safebrowsing.provider.google.advisoryURL" = ""; + "browser.safebrowsing.downloads.remote.url" = ""; + + # Don't call home on new tabs + "browser.selfsupport.url" = ""; + "browser.aboutHomeSnippets.updateUrL" = ""; + "browser.startup.homepage_override.mstone" = "ignore"; + "browser.startup.homepage_override.buildID" = ""; + "startup.homepage_welcome_url" = ""; + "startup.homepage_welcome_url.additional" = ""; + "startup.homepage_override_url" = ""; + + # Firefox experiments... + "experiments.activeExperiment" = false; + "experiments.enabled" = false; + "experiments.supported" = false; + "extensions.pocket.enabled" = false; + "identity.fxaccounts.enabled" = false; + + # Privacy + "privacy.donottrackheader.enabled" = true; + "privacy.donottrackheader.value" = 1; + "privacy.trackingprotection.enabled" = true; + "privacy.trackingprotection.socialtracking.enabled" = true; + "privacy.firstparty.isolate" = true; + "toolkit.legacyUserProfileCustomizations.stylesheets" = true; + "toolkit.telemetry.enabled" = false; + "toolkit.telemetry.unified" = false; + "toolkit.telemetry.archive.enabled" = false; + "browser.toolbars.bookmarks.visibility" = "never"; + + # Cookies + "network.cookie.cookieBehavior" = 1; + + # Perf + "gfx.webrender.all" = true; + "media.ffmpeg.vaapi.enabled" = true; + "media.ffvpx.enabled" = false; + "media.rdd-vpx.enabled" = false; + "gfx.webrender.compositor.force-enabled" = true; + "media.navigator.mediadatadecoder_vpx_enabled" = true; + "webgl.force-enabled" = true; + "layers.acceleration.force-enabled" = true; + "layers.offmainthreadcomposition.enabled" = true; + "layers.offmainthreadcomposition.async-animations" = true; + "layers.async-video.enabled" = true; + "html5.offmainthread" = true; + }; + }; + }; + + programs.firefox.policies = { + ExtensionSettings = with builtins; + let extension = shortId: uuid: { + name = uuid; + value = { + install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/${shortId}/latest.xpi"; + installation_mode = "normal_installed"; + }; + }; + in listToAttrs [ + (extension "torrent-to-web" "torrent-to-web@dasprids.de") + (extension "Cookie-AutoDelete" "CookieAutoDelete@kennydo.com") + (extension "ublock-origin" "uBlock0@raymondhill.net") + (extension "bitwarden-password-manager" "{446900e4-71c2-419f-a6a7-df9c091e268b}") + (extension "no-gender" "{f0bb47a1-a5b1-4a4c-80fb-556d6a60e45c}") + (extension "get-rss-feed-url" "{15bdb1ce-fa9d-4a00-b859-66c214263ac0}") + (extension "freshrss-watcher" "{8276b2b6-a974-4254-8647-79c691694b10}") + (extension "bookmarked-speed-dial" "{83a9ecbd-0360-4fee-8822-233ed92cf930}") + (extension "i-still-don't-care-about-cookies" "idcac-pub@guus.ninja") + #(extension "joplin-web-clipper" "{8419486a-54e9-11e8-9401-ac9e17909436}") + #(extension "umatrix" "uMatrix@raymondhill.net") + #(extension "libredirect" "7esoorv3@alefvanoon.anonaddy.me") + #(extension "clearurls" "{74145f27-f039-47ce-a470-a662b129930a}") + ]; + # To add additional extensions, find it on addons.mozilla.org, find + # the short ID in the url (like https://addons.mozilla.org/en-US/firefox/addon/!SHORT_ID!/) + # Then, download the XPI by filling it in to the install_url template, unzip it, + # run `jq .browser_specific_settings.gecko.id manifest.json` or + # `jq .applications.gecko.id manifest.json` to get the UUID + }; +}