diff --git a/flake.nix b/flake.nix index fa5cf5da..0aa1a3cb 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,7 @@ # Other Flakes emacs-overlay.url = "github:nix-community/emacs-overlay"; + nur.url = "github:nix-community/NUR"; }; # Outputs is a function that takes the inputs as arguments. @@ -32,6 +33,12 @@ # The rec expression turns a basic set into a set where self-referencing is possible. # It is a shorthand for recursive and allows to use the values defined in this set from its own scope. rec { + # Add overlays from other flakes so we can use them from pkgs. + overlays = { + nur = nur.overlay; + emacs = emacs-overlay.overlay; + }; + # System configurations # Accessible via 'nixos-rebuild' nixosConfigurations = { diff --git a/home/home.nix b/home/home.nix index 1f3f7ef9..48616505 100644 --- a/home/home.nix +++ b/home/home.nix @@ -14,6 +14,10 @@ # https://github.com/nix-community/home-manager/issues/2942 nixpkgs.config.allowUnfreePredicate = (pkg: true); + # Chinese Input + i18n.inputMethod.enabled = "fcitx5"; + i18n.inputMethod.fcitx5.addons = with pkgs; [ fcitx5-gtk libsForQt5.fcitx5-qt fcitx5-chinese-addons fctix5-configtool ] + # Packages with extra options managed by HomeManager natively programs = { home-manager.enable = true; @@ -32,6 +36,8 @@ exa.enable = true; + feh.enable = true; + # TODO: Copy config from Arch dots fish = { enable = true; @@ -80,6 +86,11 @@ }; # TODO: TexLive + + zoxide = { + enable = true; + enableFishIntegration = true; + }; }; # Add stuff for your user as you see fit: @@ -92,6 +103,9 @@ poppler_utils ffmpeg imagemagick + htop + httpie + rclone # Ranger # TODO: Make module out of this @@ -109,6 +123,7 @@ # Doom Emacs # TODO: Make module out of this + emacs.emacsPgtkNativeComp ripgrep fd gcc @@ -119,6 +134,7 @@ python310Packages.pygments inkscape graphviz + gnuplot pandoc nixfmt shellcheck @@ -127,15 +143,23 @@ xdotool # Web + signal-desktop noisetorch discord yt-dlp spotify + thunderbird + protonmail-bridge + protonvpn-cli # Tools + # calibre + virt-manager + gource keepassxc ark anki + libreoffice-fresh libsForQt5.dolphin-plugins libsForQt5.kdegraphics-thumbnailers @@ -146,15 +170,56 @@ # krita # blender # godot + + # Icons papirus-icon-theme + # Fonts + # TODO: Make a module + victor-mono + source-code-pro + source-sans-pro + source-serif-pro + jetbrains-mono + etBook + overpass + # Chinese Fonts + source-han-mono + source-han-sans + source-han-serif + wqy_zenhei + wqy_microhei + + # Audio + # TODO: Make a module + # vcv-rack + # bitwig-studio + # audacity + # carla + # TODO: Make wine-tgk derivation + # yabridge + # yabridgectl # TODO: Do I need both? + # Use NixCommunity binary cache cachix # Gaming + gamemode + nur.gamescope steam + polymc + lutris ]; + services = { + lorri.enable = true; + + nextcloud-client = { + enable = true; + startInBackground = true; + }; + }; + # Nicely reload system units when changing configs systemd.user.startServices = "sd-switch"; } diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 17334166..012a51d9 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -25,6 +25,12 @@ ''; }; + # Auto garbage-collect and optimize store + nix.gc.automatic = true; + nix.gc.options = "--delete-older-than 5d"; + nix.autoOptimiseStore = true; + nix.optimise.automatic = true; + # TODO: Understand this # This will add your inputs as registries, making operations with them (such # as nix shell nixpkgs#name) consistent with your flake inputs. @@ -131,49 +137,31 @@ isNormalUser = true; description = "Christoph"; extraGroups = [ "networkmanager" "wheel" "audio" "realtime" "docker" "adbusers" "scanner" "lp" ]; - shell = pkgs.fish; - # Do this with HomeManager - packages = with pkgs; [ - # firefox - # kate - # thunderbird - ]; + shell = pkgs.fish; # TODO: Is this needed if programs.fish.enable = true? + # We do this with HomeManager + packages = with pkgs; [ ]; }; - environment.shells = with pkgs; [ fish ]; - # Allow unfree packages nixpkgs.config.allowUnfree = true; - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. - wget - git - dosfstools - ntfs3g - e2fsprogs - ]; - - # Auto garbage-collect and optimize store - nix.gc.automatic = true; - nix.gc.options = "--delete-older-than 5d"; - nix.autoOptimiseStore = true; - nix.optimise.automatic = true; - # Use all redistributable firmware (i.e. nonfree) hardware.enableRedistributableFirmware = true; - # Enable automatic upgrades. - system.autoUpgrade.enable = false; - system.autoUpgrade.allowReboot = false; + # We want these packages to be available even when no user profile is active + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + wget + ]; - # Docker - virtualisation.docker = { - enable = true; - autoPrune.enable = true; - }; + # It is preferred to use the module (if it exists) over environment.systemPackages, as some extra configs are applied. + programs.adb.enable = true; + programs.fish.enable = true; + programs.git.enable = true; + programs.neovim.enable = true; + programs.starship.enable = true; + programs.thefuck.enable = true; # Not available in HomeManager # Some programs need SUID wrappers, can be configured further or are # started in user sessions. @@ -192,13 +180,22 @@ SystemMaxUse=50M ''; - # TODO: What to transfer to HomeManager? - services.lorri.enable = true; # Cache direnv - services.locate.enable = true; # Periodically update index - services.emacs.enable = false; # timeout? services.fstrim.enable = true; + services.fwupd.enable = true; + services.locate.enable = true; # Periodically update index + services.ntp.enable = true; services.xserver.wacom.enable = true; + # Docker + virtualisation.docker = { + enable = true; + autoPrune.enable = true; + }; + + virtualisation.libvirtd = { + enable = true; + }; + # TODO: Other ports (tcp/udp/ssh...)? # Open ports in the firewall. networking.firewall.allowedTCPPorts = [ ];