refactor: Move packages & wallpapers config into own nix files

My systems are single-user machines and the package configuration can
go in the system-wide package list in full.

This splits out the package list into a separate file and also moves
the systemd units for wallpaper setting into a separate file.
This commit is contained in:
Vincent Ambo 2017-10-16 22:53:49 +02:00
parent aa5dcbc477
commit 202467e989
3 changed files with 101 additions and 54 deletions

View file

@ -4,20 +4,15 @@
{ config, pkgs, ... }:
let rust-overlay = import nixpkgs-mozilla/rust-overlay.nix;
unstable = import <nixos-unstable> { config.allowUnfree = true; };
nixfd = import pkgs/nixfd.nix;
in {
{
imports =
[ # Include the results of the hardware scan.
[
./hardware-configuration.nix
./local-configuration.nix
./packages.nix
./wallpapers.nix
];
# Configure the Nix package manager
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = [ rust-overlay ];
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
@ -27,14 +22,6 @@ in {
# Set your time zone.
time.timeZone = "Europe/Oslo";
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages = with pkgs; [
curl gnumake unzip openjdk gcc htop tree direnv tmux fish ripgrep
gnupg pass git manpages stdmanpages latest.rustChannels.stable.rust
nixfd
];
# Enable the X11 windowing system.
services.xserver.enable = true;
services.xserver.layout = "us,no";
@ -73,42 +60,6 @@ in {
isNormalUser = true;
uid = 1000;
shell = pkgs.fish;
packages = with pkgs; [
jetbrains.idea-community pavucontrol spotify xclip tdesktop
rofi rofi-pass alacritty i3lock unstable.firefox-beta-bin fd
tig kubernetes xfce.xfce4-screenshooter exa lxappearance-gtk3
numix-gtk-theme numix-icon-theme unstable.numix-cursor-theme
];
};
# Configure random setting of wallpapers
systemd.user.services.clone-wallpapers = {
description = "Clone wallpaper repository";
enable = true;
before = [ "feh-wp.service" "feh-wp.timer" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.fish}/bin/fish -c '${pkgs.coreutils}/bin/stat %h/wallpapers; or ${pkgs.git}/bin/git clone https://git.tazj.in/tazjin/wallpapers.git %h/wallpapers'";
};
};
systemd.user.services.feh-wp = {
description = "Randomly set wallpaper via feh";
serviceConfig = {
Type = "oneshot";
WorkingDirectory = "%h/wallpapers";
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.fd}/bin/fd -atf | shuf | head -n1 | ${pkgs.findutils}/bin/xargs ${pkgs.feh}/bin/feh --bg-fill'";
};
};
systemd.user.timers.feh-wp = {
description = "Set a random wallpaper every hour";
wantedBy = [ "timers.target" ];
timerConfig = {
OnActiveSec = "3second";
OnUnitActiveSec = "1hour";
};
};
security.sudo.enable = true;

62
packages.nix Normal file
View file

@ -0,0 +1,62 @@
# This file contains configuration for packages to install.
# It does not contain configuration for software that is already covered
# by other NixOS options (e.g. emacs)
{ config, pkgs, ... }:
let unstable = import <nixos-unstable> { config.allowUnfree = true; };
rust-overlay = import nixpkgs-mozilla/rust-overlay.nix;
in {
# Configure the Nix package manager
nixpkgs.config.allowUnfree = true;
nixpkgs.overlays = [ rust-overlay ];
# ... and declare packages to be installed.
environment.systemPackages = with pkgs; [
# Default nixos.* packages:
alacritty
curl
direnv
exa
fd
fish
gcc
git
gnumake
gnupg
htop
i3lock
jetbrains.idea-community
kubernetes
lxappearance-gtk3
manpages
numix-gtk-theme
numix-icon-theme
openjdk
pass
pavucontrol
ripgrep
rofi
rofi-pass
spotify
stdmanpages
tdesktop
tig
tmux
tree
unzip
xclip
xfce.xfce4-screenshooter
# nixos-unstable.* packages:
unstable.firefox-beta-bin
unstable.numix-cursor-theme
# Overlay packages:
latest.rustChannels.stable.rust
# Custom packages:
(import pkgs/nixfd.nix)
];
}

34
wallpapers.nix Normal file
View file

@ -0,0 +1,34 @@
# Configuration for randomly setting wallpapers.
{ config, pkgs, ... }:
{
# Configure random setting of wallpapers
systemd.user.services.clone-wallpapers = {
description = "Clone wallpaper repository";
enable = true;
before = [ "feh-wp.service" "feh-wp.timer" ];
serviceConfig = {
Type = "oneshot";
ExecStart = "${pkgs.fish}/bin/fish -c '${pkgs.coreutils}/bin/stat %h/wallpapers; or ${pkgs.git}/bin/git clone https://git.tazj.in/tazjin/wallpapers.git %h/wallpapers'";
};
};
systemd.user.services.feh-wp = {
description = "Randomly set wallpaper via feh";
serviceConfig = {
Type = "oneshot";
WorkingDirectory = "%h/wallpapers";
ExecStart = "${pkgs.bash}/bin/bash -c '${pkgs.fd}/bin/fd -atf | shuf | head -n1 | ${pkgs.findutils}/bin/xargs ${pkgs.feh}/bin/feh --bg-fill'";
};
};
systemd.user.timers.feh-wp = {
description = "Set a random wallpaper every hour";
wantedBy = [ "timers.target" ];
timerConfig = {
OnActiveSec = "3second";
OnUnitActiveSec = "1hour";
};
};
}