diff --git a/flake.lock b/flake.lock index bd23675..5e2cd0a 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,21 @@ { "nodes": { + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1688025799, + "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, "home-manager": { "inputs": { "nixpkgs": [ @@ -7,11 +23,11 @@ ] }, "locked": { - "lastModified": 1713818326, - "narHash": "sha256-aw3xbVPJauLk/bbrlakIYxKpeuMWzA2feGrkIpIuXd8=", + "lastModified": 1715077503, + "narHash": "sha256-AfHQshzLQfUqk/efMtdebHaQHqVntCMjhymQzVFLes0=", "owner": "nix-community", "repo": "home-manager", - "rev": "67de98ae6eed5ad6f91b1142356d71a87ba97f21", + "rev": "6e277d9566de9976f47228dd8c580b97488734d4", "type": "github" }, "original": { @@ -21,13 +37,46 @@ "type": "github" } }, + "nixos-cosmic": { + "inputs": { + "flake-compat": "flake-compat", + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1715262380, + "narHash": "sha256-jz4zg7xz14PTkrTiH96tVDvCxftpDVp6vRxnO7OVReA=", + "path": "/nix/store/gz6hf4bgagrqvkl7p7gxpznnlqgvyyjy-source", + "rev": "1914ef3d3bbbf79892b48e9162b47f64ff99bcd5", + "type": "path" + }, + "original": { + "id": "nixos-cosmic", + "type": "indirect" + } + }, "nixpkgs": { "locked": { - "lastModified": 1713714899, - "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", + "lastModified": 1715266358, + "narHash": "sha256-doPgfj+7FFe9rfzWo1siAV2mVCasW+Bh8I1cToAXEE4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "f1010e0469db743d14519a1efd37e23f8513d714", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1715087517, + "narHash": "sha256-CLU5Tsg24Ke4+7sH8azHWXKd0CFd4mhLWfhYgUiDBpQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", + "rev": "b211b392b8486ee79df6cdfb1157ad2133427a29", "type": "github" }, "original": { @@ -47,11 +96,11 @@ ] }, "locked": { - "lastModified": 1713805120, - "narHash": "sha256-WmqVyblqQ3g2Bmm+WONc1OnUuOuULQRIQya9wCLp5o8=", + "lastModified": 1714856962, + "narHash": "sha256-2te5GG8TVNBF44uMF4G0XFGW+Jt02i/ZkspSNFzjgT0=", "owner": "pjones", "repo": "plasma-manager", - "rev": "ffeef9dc96a5a0e442479c94a6000f93b69aeaac", + "rev": "1554e19ede17de46106dd95820eeea05086a5720", "type": "github" }, "original": { @@ -63,7 +112,8 @@ "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs", + "nixos-cosmic": "nixos-cosmic", + "nixpkgs": "nixpkgs_2", "plasma-manager": "plasma-manager" } } diff --git a/flake.nix b/flake.nix index a16ab3a..917a03d 100644 --- a/flake.nix +++ b/flake.nix @@ -19,7 +19,7 @@ }; }; - outputs = { self, nixpkgs, home-manager, plasma-manager, ... } @inputs: + outputs = { self, nixpkgs, home-manager, plasma-manager, nixos-cosmic, ... } @inputs: let inherit (self) outputs; @@ -46,10 +46,8 @@ nixosConfigurations = { puzzlevision = nixpkgs.lib.nixosSystem { specialArgs = {inherit inputs outputs;}; - modules = [ ./hosts/puzzlevision/configuration.nix - ./modules/nixos/desktop/kde.nix ]; }; }; @@ -60,9 +58,8 @@ "jo@puzzlevision" = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.x86_64-linux; # Home-manager requires 'pkgs' instance extraSpecialArgs = {inherit inputs outputs;}; - # > Our main home-manager configuration file < modules = [ - ./home-manager/puzzlevision/home.nix + ./users/jo_puzzlevision/home.nix ]; }; }; diff --git a/hosts/puzzlevision/configuration.nix b/hosts/puzzlevision/configuration.nix index 6baa082..ff57994 100644 --- a/hosts/puzzlevision/configuration.nix +++ b/hosts/puzzlevision/configuration.nix @@ -3,7 +3,7 @@ lib, config, pkgs, - catppuccinifier, + outputs, ... }: { # You can import other NixOS modules here @@ -11,18 +11,11 @@ # If you want to use modules from other flakes (such as nixos-hardware): # inputs.hardware.nixosModules.common-cpu-amd # inputs.hardware.nixosModules.common-ssd - - # Import your generated (nixos-generate-config) hardware configuration + outputs.nixosModules.desktop.kde ./hardware-configuration.nix ]; nixpkgs = { - # You can add overlays here - overlays = [ - # If you want to use overlays exported from other flakes: - # neovim-nightly-overlay.overlays.default - ]; - # Configure your nixpkgs instance config = { allowUnfree = true; }; @@ -61,8 +54,21 @@ fileSystems."/".options = [ "noatime" "nodiratime" "discard" ]; # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; + boot.loader.grub = { + enable = true; + devices = [ "nodev" ]; + efiInstallAsRemovable = true; + efiSupport = true; + + extraEntries = '' + menuentry "Reboot" { + reboot + } + menuentry "Poweroff" { + halt + } + ''; + }; networking.hostName = "puzzlevision"; @@ -90,6 +96,10 @@ # Configure console keymap console.keyMap = "de"; + # Enable the TLP service for improved battery management + services.tlp.enable = true; + services.power-profiles-daemon.enable = false; + # Enable CUPS to print documents. services.printing.enable = true; @@ -111,34 +121,23 @@ # Enable docker virtualisation.docker.enable = true; - # Enable touchpad support (enabled default in most desktopManager). - services.xserver.libinput.enable = true; - # Configure keymap in X11 services.xserver = { xkb.layout = "de"; xkb.variant = ""; }; + # Configure fish as the default shell + environment.shells = with pkgs; [ fish ]; + users.defaultUserShell = pkgs.fish; + programs.fish.enable = true; + # Define a user account. users.users = { jo = { isNormalUser = true; description = "Jo"; extraGroups = [ "networkmanager" "wheel" "docker" "tty" "dialout" ]; - packages = with pkgs; [ - spotify - qflipper - wineWowPackages.waylandFull - vesktop - avra - avrdude - jetbrains.phpstorm - teams-for-linux - enpass - thunderbird - kde-rounded-corners - ]; }; work = { @@ -161,8 +160,6 @@ dedicatedServer.openFirewall = true; # Open ports in the firewall for Source Dedicated Server }; - # List packages installed in system profile. To search, run: - # $ nix search wget environment.systemPackages = with pkgs; [ nano firefox @@ -172,6 +169,9 @@ # For development git bun + + # Home manager + home-manager ]; # https://nixos.wiki/wiki/FAQ/When_do_I_update_stateVersion diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 6f7e667..6c8d644 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -3,4 +3,5 @@ { # List your module files here # my-module = import ./my-module.nix; + desktop = import ./desktop; } diff --git a/modules/nixos/desktop/cosmic.nix b/modules/nixos/desktop/cosmic.nix new file mode 100644 index 0000000..976cb41 --- /dev/null +++ b/modules/nixos/desktop/cosmic.nix @@ -0,0 +1,16 @@ +{ + inputs, + lib, + config, + pkgs, + ... +}: { + # Enable the x11 windowing system + services.xserver.enable = true; + + # Enable Cosmic DE + services.desktopManager.cosmic.enable = true; + + # Enable Cosmic greeter + services.displayManager.cosmic-greeter.enable = true; +} diff --git a/modules/nixos/desktop/default.nix b/modules/nixos/desktop/default.nix new file mode 100644 index 0000000..de1d485 --- /dev/null +++ b/modules/nixos/desktop/default.nix @@ -0,0 +1,5 @@ +{ + kde = import ./kde.nix; + gnome = import ./gnome.nix; + cosmic = import ./cosmic.nix; +} diff --git a/modules/nixos/desktop/gnome.nix b/modules/nixos/desktop/gnome.nix index e2cb102..f153ec3 100644 --- a/modules/nixos/desktop/gnome.nix +++ b/modules/nixos/desktop/gnome.nix @@ -9,6 +9,6 @@ services.xserver.enable = true; # Enable the GNOME Desktop Environment. - services.xserver.displayManager.gdm.enable = true; - services.xserver.desktopManager.gnome.enable = true; + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; } diff --git a/home-manager/puzzlevision/home.nix b/users/jo_puzzlevision/home.nix similarity index 58% rename from home-manager/puzzlevision/home.nix rename to users/jo_puzzlevision/home.nix index bd0ef33..9562c34 100644 --- a/home-manager/puzzlevision/home.nix +++ b/users/jo_puzzlevision/home.nix @@ -7,16 +7,13 @@ }: { # You can import other home-manager modules here imports = [ - # If you want to use home-manager modules from other flakes (such as nix-colors): - # inputs.nix-colors.homeManagerModule inputs.plasma-manager.homeManagerModules.plasma-manager ]; nixpkgs = { - # You can add overlays here overlays = []; - # Configure your nixpkgs instance + # Configuring nixpkgs instance config = { allowUnfree = true; @@ -37,15 +34,44 @@ workspace = { clickItemTo = "select"; - iconTheme = "Tela-Blue-Dark"; + iconTheme = "Tela-blue-dark"; }; }; + home.packages = with pkgs; [ + kdePackages.sierra-breeze-enhanced + spotify + qflipper + wineWowPackages.waylandFull + vesktop + avra + avrdude + jetbrains.phpstorm + teams-for-linux + enpass + thunderbird + kde-rounded-corners + ]; + # home.file.".config/gtk-4.0/gtk.css".source = "${orchis}/share/themes/Orchis-Green-Dark-Compact/gtk-4.0/gtk.css"; - # Enable home-manager and git + # Enable home-manager programs.home-manager.enable = true; - programs.git.enable = true; + + # Enable and configure git + programs.git = { + enable = true; + + userEmail = "reckers.johannes@proton.me"; + userName = "Jo"; + + # Enable git-credential-helper + extraConfig = { + credential.helper = "${ + pkgs.git.override { withLibsecret = true; } + }/bin/git-credential-libsecret"; + }; + }; # Nicely reload system units when changing configs systemd.user.startServices = "sd-switch";